Что подразумевается под Net IO в JProfiler?

Что подразумевается под чистым временем ввода-вывода в JProfiler?

JProfilerguide говорит следующее, но я не знаю, что именно это означает? Время, проведенное в сети, или ожидание в сети? Что исправить, если чистое время ввода-вывода огромно?

Во время сетевых операций многие вызовы в стандартных библиотеках Java могут блокироваться, поскольку они ожидают дополнительных данных. Этот тип блокировки называется "Net I/O" в JProfiler. JProfiler знает список методов в JRE, которые приводят к заблокированному сетевому вводу-выводу, и обрабатывает их во время загрузки.


person NaiveCoder    schedule 07.10.2018    source источник


Ответы (2)


Чистый ввод-вывод — это время, в течение которого сокеты ожидают данных.

  • Серверный сокет, ожидающий подключения, находится в состоянии сетевого потока ввода-вывода. Это не указывает на проблемы с производительностью.

  • Вызов JDBC, ожидающий возврата результата базой данных, находится в чистом состоянии ввода-вывода. В этом случае вы можете увидеть связанную строку SQL в дереве вызовов.

person Ingo Kegel    schedule 08.10.2018
comment
@ Инго Кегель. В моем случае запросы выполняются нормально в течение нескольких миллисекунд, но все же чистое время ввода-вывода огромно? это похоже на то, что из 2,5 часов общего времени работоспособное время составляет всего 12 минут, а чистое время ввода-вывода составляет 2,5 часа. - person NaiveCoder; 08.10.2018
comment
Можете ли вы также сказать мне, что такое runnable time? это время, потраченное на выполнение кода на процессоре? - person NaiveCoder; 08.10.2018
comment
it it time spent executing the code on CPU? -> Нет, Runnable включает только время, когда поток не находится ни в каких других состояниях потока, т. е. он хочет выполнить инструкции. Однако ОС не всегда будет запускать его. - person Ingo Kegel; 09.10.2018
comment
Что касается вашего другого комментария, вы, вероятно, смотрите на Runnable time, и вам следует переключиться на все состояния потоков, чтобы увидеть время настенных часов. - person Ingo Kegel; 09.10.2018
comment
@ Инго Кегель - Итак, какое представление на самом деле скажет мне, сколько времени я потратил на что-то на процессоре? Когда я суммирую runnable + net io time , получается время, за которое был сделан снимок. Итак, если исполняемый поток не выполнялся и был просто готов, то когда код был выполнен и где это время регистрируется? - person NaiveCoder; 10.10.2018
comment
В настройках профилирования на вкладке записи ЦП вы можете выбрать запись расчетного времени ЦП. Однако это имеет гранулярность 5 мс и не будет точным для краткосрочных методов. - person Ingo Kegel; 10.10.2018
comment
извините, но я еще не совсем понял время работы.. почему мы показываем это в JProfile, если это на самом деле ничего не значит? например: в моем случае JProfiler говорит, что 622 секунды затрачены на методX (). Почему он говорит 622 секунды, когда это не время процессора? - person NaiveCoder; 11.10.2018
comment
Время работы — это время настенных часов за вычетом времени ожидания и блокировки. Это очень полезная мера при поиске узких мест в производительности. Процессорное время — это то, что недоступно с высокой степенью детализации. - person Ingo Kegel; 11.10.2018
comment
@NaiveCoder Вы когда-нибудь выясняли, почему ваш чистый ввод-вывод был высоким, а непосредственное выполнение запросов было быстрым? У нас то же самое, но только время от времени. - person PeMa; 20.08.2019
comment
@PeMa Мы не смогли разобраться с JProfiler. Мы перешли на инструмент AppDynamics. Это намного лучше, чем JProfiler. - person NaiveCoder; 22.08.2019
comment
@NaiveCoder Спасибо, я посмотрю на это. Кстати, кажется, в нашем случае иногда медленная связь была из-за того, что MariaDB не получала достаточно памяти из системы. ... во всяком случае, все еще догадываюсь, поскольку мы также не смогли приблизиться с jProfiler, тем не менее, я думаю, что это было очень полезно до сих пор. - person PeMa; 22.08.2019

Состояние «Net I/O», которое отслеживает время, когда поток ожидает сетевых данных. Это важно для анализа серверов и драйверов баз данных, поскольку это время может иметь значение для анализа производительности, например, для исследования медленных запросов SQL.

person Jinendra Jain    schedule 02.06.2020