Создание новых процессов очень медленно на некоторых моих машинах, а не на других.
Все машины похожи, и некоторые медленные машины работают с теми же рабочими нагрузками на том же оборудовании и ядре (2.6.32-26, Ubuntu 10.04), что и некоторые быстрые машины. Задачи, не связанные с созданием процессов, имеют одинаковую скорость на всех машинах.
Например, эта программа выполняется на ~ 50 раз медленнее на зараженных машинах:
int main()
{
int i;
for (i=0;i<10000;i++)
{
int p = fork();
if (!p) exit(0);
waitpid(p);
}
return 0;
}
Что может быть причиной замедления процесса создания задачи и какие еще различия я могу искать в машинах?
Edit1: Запуск сценариев bash (так как они порождают много подпроцессов) также очень медленный на этих машинах, и strace на медленных сценариях показывает замедление при вызове ядра clone()
.
Edit2: vmstat
не показывает каких-либо существенных различий на быстрых и медленных машинах. Все они имеют более чем достаточно оперативной памяти для своих рабочих нагрузок и не идут на обмен.
Edit3: я не вижу ничего подозрительного в dmesg
Edit4: я не уверен, почему это сейчас на stackoverflow, я не спрашиваю о приведенном выше примере программы (просто использую ее для демонстрации проблемы), а об администрировании / настройке linux, но если люди думают, что это здесь , круто.