Обновление SBCL 1.0.45 в lisp-репизотрии для Ubuntu и Debian.
суббота, 11 декабря 2010 г.
вторник, 7 декабря 2010 г.
эхо-сервер и 15000 запросов в секунду
В своём прошлом посте я жаловался на быстродействие казалось бы тривиального эхо-сервера. При разборе archimag'овского сервера с 10000 запросами в секунду обратил внимание, что он использует пул буферов чтения-записи. Собственно, идея то не нова, но скопипащенный ex8-server.lisp из IOLIB тогда почему-то не привлёк моё внимание отсутствием пула. Добавление его убыстрило эхо-сервер более, чем в 10 раз. На моём стареньком ноуте он теперь обрабатывает порядка 15000 запросов в секунду против 1200. На другой машинке (Core i5 с пониженной частотой при множителе 13, где-то около 1200 ГГц) порядка 35000-40000 запросов в секунду. Также стоит отметить, что эхо-сервер не сбрасывает сам соединение, а держит сеанс. В противном случае могло бы быть ещё быстрее.
суббота, 4 декабря 2010 г.
iolib и эхо-сервер
Недавно тут озаботился написанием tcp-сервера. Эксперименты решил начать с простого эхо-сервера. Да и в примерах iolib'ов он был. Ну, значит, запустил я его и решил испытать на стрессовые нагрузки. Для этого я использовал тулзу jmeter. Так вот, что выяснилось. При даже 100 параллельных запросах не все доходит правильно до клиента. И где-то 2% теряется (на моей машине). Вариант эхо-сервера, написанного на C, который я взял в том же iolib - на 100 обходится без ошибок. Правда на 1000 уже где-то 1% появляется. Вариант с использованием IOLIB - 10%. И вот меня тут смутило немного - а правильно ли я вообще понимаю всё? И неужели простому эхо-серверу так сильно становится плохо? Быстро накиданный вариант на java, который выделяет отдельные потоки на клиента - вообще 97% ошибок показал. С java.nio (асинхронная модель) не пробовал, потому как к этому времени уже изрядно расстроился.
среда, 1 декабря 2010 г.
Обновление REPO 20101201
Очередное пополение в lisp-репизотрии для Ubuntu и Debian.
- iolib - версия 0.7.3.