Как найти работу, связанную с моим идентификатором процесса, на котором запущен процессор?
Вы можете сделать это только с JNA или JNI.
Моя работа требует много ресурсов ЦП, поэтому он может использовать как ЦП, так и их Виртуальный процессор, или он будет работать на одном из ЦП и Виртуальный процессор.
Если у вас есть только один поток, он будет использовать только один логический поток. Если у вас больше занятых потоков, он может использовать больше логических потоков (возможно, все ваши процессоры)
Если заданию разрешено запускаться как на процессорах, так и на их виртуальных процессорах, это может привести к снижению производительности, поскольку между ними будут передаваться данные.
Да.
Я попытался найти информацию, связанную с использованием ЦП, используя mpstat, где в столбце «wt» указано «Идеальное время для ЦП во время операции чтения / записи», но это всегда возвращает мне значение 0.
Задержка чтения / записи для устройств ввода-вывода, а не между процессорами.
Можете ли вы предложить любую другую команду, с помощью которой я могу отслеживать загрузку процессора для моего идентификатора процесса. Я видел топ, mpstat.
Это лучшее, что вы можете получить.
Для использования и анализа статистики в удобочитаемой форме от procstat Что я могу сделать?
Предполагается, что вы использовали коммерческий профилировщик, и он работает настолько эффективно, насколько вы можете ...
Вам необходимо создать микро-тесты, чтобы увидеть, как использование одного или нескольких потоков работает в вашей системе. Это даст вам представление о том, как масштабировать, и если оно не масштабируется, вам придется провести дальнейший анализ, чтобы определить, почему. Вы не сможете определить это с помощью инструмента анализа.
РЕДАКТИРОВАТЬ: Если вам нужны примеры того, как использовать привязку потоков, JNI или JNA, вы можете попробовать https://github.com/peter-lawrey/Java-Thread-Affinity
Примечание: это работает для Linux.