В узле мы видели, что время всегда дрейфует и джиттер ntp очень высок.
Когда мы проверили количество прерываний через vmstat в хосте, оно составило около 40-50 прерываний, что обычно должно быть около 1000+ на этих машинах. Когда мы остановили Java-процессы и проверили прерывания, они вернулись к норме около 1K. Также
cat /proc/interrupts ; sleep 2 ; cat /proc/interrupts
показывал около 200 прерываний, когда были запущены процессы Java, и около 2k, когда процессы были остановлены.
Я думаю, что задержка прерываний по таймеру может объяснить
- Высокая нагрузка на машины: поскольку процессоры не запускаются процессором после кванта, большее число процессов находится в очереди выполнения и, следовательно, высокая нагрузка
- Очень медленный ответ: Ну, команды, которые мы выполняем, могут не планироваться снова из-за отсутствия прерываний по таймеру после кванта
Но не в состоянии объяснить
- Низкое использование процессора%
Здесь так мало вопросов:
- Что происходит с прерываниями?
- Прерывания от таймера имеют наибольшее предпочтение (irq0) и не могут быть проигнорированы. Так почему же (если это вообще возможно) процессы рычага пользователя могут вызвать это?