Как я могу профилировать время, которое программа проводит в режиме сна или операций ввода-вывода
Я знаю, как профилировать процессор / память.
Но теперь мне нужно профилировать некоторый код, который использует операции ввода-вывода (PlainSocketImpl.doConnect
и другие), чтобы понять, какой фрагмент кода занимает большую часть времени.
2 ответа:
JProfiler имеет зонды файлов и сокетов, которые показывают вам данные ввода-вывода вокруг реальных объектов.
В представлениях CPU есть селектор потоков, который имеет состояние" Net I/O". Если вы выберете это состояние, вы увидите только время, проведенное в I / O.
Отказ от ответственности: моя компания разрабатывает JProfiler.
В системах на базе linux вы можете попробовать iotop. Переключите представление на отображение потоков, затем объедините его с выводами
jstack
, чтобы они соответствовали фактическим строкам кода.Хотя и не очень автоматически.