Swizard -- молодца! хватило терпения и умения сделать низкоуровенную оптимизацию тредов на лиспе, подергав за нужные линухо-ориентированные рычажки pthreads.
Но думаю, что попкроном можно не запасаться: не верю, что жаберы полезут расчехлять свои JNI (или JNA, jinvoke or whatever), или хаскелянты в порыве мести побегут вытаскивать свои ffi. А если и полезут, то выйдет ли толк? ;)
Так что рекорд еще долго будет радовать глаз, обращая на себя горящие взоры зеленых юнцов. Неплохой шаг в популяризации, надо заметить.
Закономерность: более быстрые версии реализации на одном языке содержат больше кода. ;)
Показаны сообщения с ярлыком threads. Показать все сообщения
Показаны сообщения с ярлыком threads. Показать все сообщения
четверг, 7 октября 2010 г.
пятница, 11 июня 2010 г.
Не забываем о ресурсах
Готовый тестовый пример на Scala, c тредами. Создается 2000 тредов, которые делают что-то необременительное. Запускаю -- "java.lang.OutOfMemoryError: unable to create new native thread". Чудненько. Пляски вокруг параметров виртуальной машины не помогают, или наборот -- загоняют jvm в "корку".
Читаю документацию, ссылки, маны, пробую, комбинирую... температура (у меня и у проца) выросла еще на четыре градусов. Замечаю нюанс: ulimit во freebsd не показывает ограничения на кол-во тредов. В мане (bash) ключ "-T" есть, а в самой утилите -- нет. В линуксе, кстати, man правильнее, ключ там не указан.
И тут наступает прозрение.
Меняю на max_threads_per_proc до 2000, и сразу все как по маслу.
Никогда програмисты сами не научатся создавать сообщения об ошибках, точно отражающие ситуацию, если их жестоко не пинать. По себе знаю. :(
Читаю документацию, ссылки, маны, пробую, комбинирую... температура (у меня и у проца) выросла еще на четыре градусов. Замечаю нюанс: ulimit во freebsd не показывает ограничения на кол-во тредов. В мане (bash) ключ "-T" есть, а в самой утилите -- нет. В линуксе, кстати, man правильнее, ключ там не указан.
И тут наступает прозрение.
sysctl kern.threads.max_threads_per_proc: 1500Уменьшаю кол-во тредов до тысячи, работает. Поднимаю до полторы тысячи, перестает.
Меняю на max_threads_per_proc до 2000, и сразу все как по маслу.
Никогда програмисты сами не научатся создавать сообщения об ошибках, точно отражающие ситуацию, если их жестоко не пинать. По себе знаю. :(
Подписаться на:
Сообщения (Atom)