Я наблюдаю (на основе журналов), что мой (java) процесс приостанавливается для чего-то во время выполнения. Мое первое предположение - переключение контекста. Чтобы проверить, я пытаюсь найти (а) количество непроизвольных переключений контекста, которые вызывает мой процесс, и (б) количество времени, которое процесс проводит в очереди выполнения (готов к запуску, но ожидает расписания).
Есть ли какие-нибудь инструменты для сбора этой информации. Я использую ядро 2.6.18 (centos 5) и 2.6.32 (centos6).
Чтобы просмотреть поведение переключения контекста в ОС, используйте:
vmstat 2 200
Когда сервер приложений запускается и вы видите, что переключение контекста нарастает, ваша теория верна. Чтобы подробно ознакомиться с этими переключателями контекста, вы можете использовать VisualVM. Это даст вам более подробное представление о потоках, времени передачи, ожидаемых действиях и многом другом.