← All posts tagged Erlang

товагищи авторы OTP как нефиг делать берут и заворачивают {error, try_again} от "нативного" порта для DNS в {error, nxdomain} — какой-то "let it crash так чтоб никто не догадался"

выжимал тут хоть сколько-то сносную скорость из нашей апликухи, наткнулся на тормозной httpd_util:rfc1123_date/1 в итоге, сразу вспомнилось, что Казу тоже даты оптимизил, по-моему в fast-logger-е

по ходу ковыряния #2720025 выяснилось 2 новых момента — отдельные тесты работы с этим сетами ес-но от лишней конвертации затормаживаются, а вот системные стресс-тесты на R16B03-1 (используемой в продакшне) немного ускоряются, а на OTP 17.0 — затормаживаются. Судя по всему какие-то ньюансы вылезают (организация памяти?) помимо просто самой конверсии.

есть gen_server, в стейте хранятся айдишки в виде gb_sets (точней gb_sets в gb_tree), в коде этому gb_sets делается gb_sets:to_list/1 и дальше пару операций как с ordsets (ordsets:subtract/2 и обращение к списку). fprof показал, что много времени проводится в gb_sets:to_list/1, в итоге я переделал на хранение сразу в ordsets и использование без конвертации. Однако, производительность в итоге УМЕНЬШИЛАСЬ. Кроме конвертации больше ничего не менялось, стейт заполняется до операций, где использование идёт. Как использование доп. конвертации может ускорить работу?

на ноде куда-то "потекли" бинари — цифры из erlang:memory и сумма длин process_info(Pid, binary) расходится чуть больше чем на порядок (примерно 350М и 18М) — повод смотреть аллокаторы? Бинари же из эмулятора выгрузить для инспеции не получится?