Как мне сказать, чего ждет процесс Linux? - PullRequest
18 голосов
/ 29 апреля 2009

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

Ответы [ 3 ]

14 голосов
/ 29 апреля 2009

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

8 голосов
/ 29 апреля 2009

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

7 голосов
/ 29 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...