Как узнать, чего ждет процесс Linux?

Я пытаюсь отследить причину узких мест производительности в приложении, которое я отлаживаю под Linux. Различные задействованные процессы, кажется, тратят много времени на блокировку запросов ввода-вывода, и мне интересно, знает ли кто-нибудь какие-нибудь хитрости Linux, которые позволяют вам увидеть, почему конкретный процесс заблокирован/какой ресурс он использует. в ожидании? Есть ли что-нибудь полезное, например, в /proc?


person andygeers    schedule 29.04.2009    source источник


Ответы (3)


Каким бы ни был процесс, вы используете top для проверки состояния. Затем вы можете запустить его через truss или strace. Это должно подробно описать, что происходит. Если это невозможно, подключите его к gdb. Такие инструменты, как iostat, могут показать вам в целом, что происходит (например, если диск является узким местом). .

person Till    schedule 29.04.2009

Вы можете использовать команду strace, чтобы увидеть, чем занимается ваш процесс. Вам также может быть полезно запустить lsof в вашем процессе, чтобы увидеть, какие файлы и сокеты он использует.

person sigjuice    schedule 29.04.2009

strace — ваш друг, потому что вы можете узнать время, потраченное на каждый системный вызов, а также выбрать интересующие вас файловые дескрипторы и системные вызовы. Но вы также можете получить поддержку от ядра: взгляните на latencytop

person shodanex    schedule 29.04.2009
comment
ссылка устарела - person carl verbiest; 09.04.2021