Сейчас я управляю компьютерным кластером для научных вычислений. Некоторые процессы в кластере требуют интенсивного использования io. Сейчас нахожу такой процесс:
top
выход , iowait составляет 0%, а в режиме ожидания около 90%Я думаю, что у этого процесса могут быть некоторые проблемы, но владелец процесса утверждает, что он работает правильно и все еще записывает данные на диски.
Больше информации:
Вопросы:
The process is writing data to a remote disk mounted on /home
Наверное, есть ваш ответ. Состояние процесса D
не является ВНИЗ, это непрерывный сон и обычно означает завершение ввода-вывода. Поскольку у вас есть общий сетевой ресурс, в зависимости от условий он может не отображаться при ожидании ввода-вывода и может не потреблять много ресурсов ЦП, поскольку ваша система ожидает.
Однако для вас и вашего приложения все происходит очень медленно, если общий сетевой ресурс медленный из-за того, как приложение пишет, из-за сети или из-за производительности файлового сервера.
Как узнать ваше приложение или сетевой ресурс? Просто - проверьте производительность сетевого ресурса с помощью других инструментов и других шаблонов использования. Скопируйте много данных туда и обратно из / home в другое место и обратно, запустите некоторые тесты, такие как iozone
, проверьте чистую производительность сети с помощью iperf
, вроде того.
Если они дают разумные результаты, посмотрите, что делает ваше приложение.
Однако часто причина кроется в другом; ничего не зная о вашей системе, я предполагаю, что вам нужно настроить параметры монтирования NFS. Но пока это остается только предположением, поскольку я не знаю, используется ли у вас вообще NFS.
Если ЦП не занят, то ваш процесс, вероятно, ожидает чего-то внешнего. Я полагаю, есть большая вероятность, что вы сможете разобраться в этом, посмотрев, какие системные вызовы занимают больше всего времени с помощью strace.
Если это не так, попробуйте использовать профилировщик, чтобы узнать, что делает код.
Использует ли ваш код ввод-вывод mmap'd? Я думаю, что это может не отображаться как время ожидания для вашего процесса, но будет отображаться как системный процесс, использующий много диска, поскольку он сбрасывает страницы на диск.