Вопрос

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

Это было полезно?

Решение

Какой бы это ни был процесс, вы используете top проверить состояние.Тогда вы могли бы запустить его через ферма или страйк.Там должно быть подробно описано, что происходит.Если это невозможно, зацепите это вплоть до БДБ.Такие инструменты, как йостат может показать вам в общих чертах, что происходит (например,если диск является узким местом).

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top