Доброго времени суток.
На сервере 4 ядра, на одном через taskset запущен важный realtime процесс, на 2 nginx+mysql, на 3-4 apache2. В кроне висит скрипт, который периодически напоминает (через pidof) процессам то на каких ядрах они должны сидеть, но это не помогает. nice тоже стоит, у нужного процесса -99.
Проблемка в том что я думал, что они знаю где их место, но периодически возникают набеги не ясно кого (возможно, поисковых ботов), в результате которых буквально на секунды начинаются жесткие лаги, что очень сильно мешает.
Путем анализа посекундных логов нагрузки каждого из ядер (периодограммный анализ) определен строгий период 5 минут, раз в 5 минут запускаются несколько апачей сразу, причем лезут они сразу на все ядра, забивают их на 80-100% чего быть не должно. Происходит это все за секунды, отловить сложно.
Подскажите, пожалуйста, возможно ли автоматически отделить один процесс от остальных (заставить apache2 не занимать ядро с номером, скажем, 0). При создании нового процесса apache2 taskset не используется, он сидит на ядрах 0-3, т.е. на всех. cgroup, по видимому, тоже запихивает в группу только существующие процессы по известным pid. Как быть с вновь создаваемыми?
На крайний случай думал лезть в исходники apache2 - если там какой-нибудь "exec apache2 -k start" дописать впереди taskset, но не уверен что это прокатит.