Хотя у всех заинтересованных лиц рсс ридер уже наверняка забит пеаром первого выпуска журнала "Практика функционального программирования", не могу не отметиться тоже.
Tuesday, July 21, 2009
Concepts Get Voted Off The C++0X
Вот тут, по ссылке с ltu: — из C++0x решили убрать concepts! :)
Мне не то чтобы C++0x интересен с практической точки зрения, но это просто мощнейший ход.
Почему убрали: с одной стороны, часть ортодоксов не поняла зачем оно надо, и испугалсь что будет слишком легко отстрелить себе ногу (и это они про C++ говорят, хехе). С другой стороны, комитет по стандартизации испугался что авторы фичи не успеют ее допилить.
Кроме того, примечателен первый же камент от одного из авторов этой фичи — судя по тому, что он три раза упоминает там хаскель, становится совсем уж окончательно понятно откуда чуваки черпали вдохновение.
(Поскольку не все читатели моего бложека являются сиплюсплюс программерами, вкратце поясню — concepts была одной из наиболее ожидаемых фич нового стандарта популярного когда-то языка сиплюсплюс, что-то похожее на type classes в хаскеле)
Posted by lrrr at 2:45 AM 4 comments
Sunday, January 25, 2009
Yaws и потребление памяти
Уважаемые телерадиослушатели, мегаблог не совсем умер :)
В комментариях к записи про Yaws жжюзер alekciy поинтересовался, сколько yaws будет хавать памяти на одно HTTP соединение. Понятно, что немного, но конкретные циферки всегда красноречивее слов. Не вопрос — на коленке собрался небольшой test suite. По хорошему тут надо было бы взять нормальный стенд — сервер и пяток клиентов (давняя мечта, повторить тот самый тест самому, так как его справедливо критикуют за отсутствие подробного описания условий тестирования), но под рукой только рабочий нотебук с убунтой 8.04 (Celeron 1.7, 2G памяти).
Итак, берем yaws 1.79, в качестве генератора траффика программка на C, за основу взял пример работы с epoll какого-то японца.
Тупо создаем соединения к серверу, запрашиваем файл и мееедленно (по байту) читаем ответ.
$ uname –a Linux lrrr-laptop 2.6.24-23-generic #1 SMP Thu Nov 27 18:44:42 UTC 2008 i686 GNU/Linux
График:
По оси X — количество одновременных соединений, по Y resident size процесса в килобайтах. Понятно, тут хватило б и двух точек, но мало ли что, вдруг, например, gc стал бы захлебываться с какого-то момента, надо было удостовериться.
После 10000 соединений у меня yaws начинает их дропать, хотя наверняка можно это как-то победить, в связи с убогостью тестовых условий я решил не заморачиваться.
Итого, если поделить — отжирается 14 кб памяти на коннект. Неплохо. Yaws (ожидаемо) не кушал CPU (показатель болтался около 1-2%), но, почему-то, довольно медленно принимал соединения — удавалось создать порядка 10 коннектов в секунду.
Попытка поставить в те же условия nginx пока не увенчалась успехом, соединения создаются раз в десять быстрее, но в районе 700 коннектов nginx сначала отдает 500 ошибку, потом молча закрывает соединения, а потом начинает приходить ECONNRESET. Думаю, он это делает из лучших побуждений, но я пока не нашел как на это повлиять.
Posted by lrrr at 12:06 AM 15 comments