Столкнулся на днях с высокой нагрузкой, создаваемой астериском на одном из серверов. На быстрое увеличение вычислительной мощности рассчитывать не приходилось, а la стал уже выше 50. Сервер работает с протоколами IAX и SIP, а так же в большом объеме перекодируют трафик из g723 в другие кодеки.
Результат изысканий: load average меньше 20, загрузка процессора и использование памяти так же сократились. И это благодаря опциям компилятора.
Ради интереса решил посмотреть, можно ли улучшить ситуацию оптимизировав сборку астериска. В результате в нижиприведенные строки были прописаны следующие значения:
Makefile:
DEBUG=-g0
Makefile.rules:
OPTIMIZE?=-O2
Первое отключает добавление отладочной информации в модули. По-умолчанию в модули добавляется информация для отладки, что увеличивает размер исполняемых файлов и модулей.
Второе — переключает режим оптимизации (важно для gcc4). В gcc3 второе действие не обязательно и может наоборот замедлить работу. В gcc4 максимальный уровень оптимизации излишне увеличивает размер файлов и чаще всего вызывает существенное замедление их выполнения.