Как узнать, какой идентификатор процесса запущен на каком физическом процессоре? - PullRequest
2 голосов
/ 31 января 2012

У меня есть два физических процессора в одном из моих серверов.Я вижу, что у них обоих есть 8 виртуальных процессоровУ меня есть несколько запросов.

  1. Как мне найти работу, связанную с моим процессом Идентификатор запущен на каком процессоре?
  2. МОЕ задание сильно загружает ЦП, поэтому оно может использовать какЦП и их Виртуальный процессор, или он будет работать на одном из ЦП и виртуальном процессоре?
  3. Если задание разрешено запускать как на ЦП, так и на их Виртуальном процессоре, может привести к снижению производительности, поскольку обмен данными междуих.
  4. Я попытался найти информацию, связанную с использованием ЦП, используя mpstat, где в столбце «wt» указано «Идеальное время для ЦП во время операции чтения / записи», но это всегда возвращает мне значение 0.Можете ли вы предложить какую-либо другую команду, с помощью которой я могу отслеживать загрузку процессора для моего идентификатора процесса?Я видел топ, mpstat.Для использования и анализа статистики в удобочитаемом виде от procstat Что я могу сделать?

1 Ответ

3 голосов
/ 31 января 2012

Как найти работу, связанную с моим идентификатором процесса, на котором запущен процессор?

Вы можете сделать это только с JNA или JNI.

Моя работа требует много ресурсов ЦП, поэтому он может использовать как ЦП, так и их Виртуальный процессор, или он будет работать на одном из ЦП и Виртуальный процессор.

Если у вас есть только один поток, он будет использовать только один логический поток. Если у вас больше занятых потоков, он может использовать больше логических потоков (возможно, все ваши процессоры)

Если заданию разрешено запускаться как на процессорах, так и на их виртуальных процессорах, это может привести к снижению производительности, поскольку между ними будут передаваться данные.

Да.

Я попытался найти информацию, связанную с использованием ЦП, используя mpstat, где в столбце «wt» указано «Идеальное время для ЦП во время операции чтения / записи», но это всегда возвращает мне значение 0.

Задержка чтения / записи для устройств ввода-вывода, а не между процессорами.

Можете ли вы предложить любую другую команду, с помощью которой я могу отслеживать загрузку процессора для моего идентификатора процесса. Я видел топ, mpstat.

Это лучшее, что вы можете получить.

Для использования и анализа статистики в удобочитаемой форме от procstat Что я могу сделать?

Предполагается, что вы использовали коммерческий профилировщик, и он работает настолько эффективно, насколько вы можете ...

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

РЕДАКТИРОВАТЬ: Если вам нужны примеры того, как использовать привязку потоков, JNI или JNA, вы можете попробовать https://github.com/peter-lawrey/Java-Thread-Affinity

Примечание: это работает для Linux.

...