Как узнать время простоя процесса - PullRequest
0 голосов
/ 25 января 2012

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

Моя актуальная проблема:

У меня есть процесс, который выполняется на сервере Solaris Unix X86.На наших тестовых серверах он завершает свою работу за 4 часа. Но на наших клиентских серверах это занимает более 10 часов. Я проверил на клиентском сервере и обнаружил, что конфигурация на нашем клиентском сервере отличается от нашей тестового сервера. Например:число виртуальных процессоров в тест-сервере равно 24, но в клиентском сервере их всего 8. И скорость процессора также отличается.

Я подозреваю, что из-за конфигурации процесс фактически не получает время процессора, и я подозреваю,что он простаивает большую часть времени.

Но я просто хочу знать, сколько времени процесс простаивает. Есть ли какой-то конкретный способ сделать это? Процесс написан на c ++, поэтому я тоже помечаюэто как с ++

Ответы [ 2 ]

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

находился в состоянии ожидания

Я не уверен, что вы подразумеваете под "холостым ходом". Вы имеете в виду "заблокирован". Сравнение общего пользовательского и системного ЦП с истекшим временем даст вам приблизительное значение, если предположить, что ваш компьютер не сильно загружен.

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

nmon доступен на www.sourceforge.net, но есть множество инструментов

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

time myapp

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

Кроме того, вы можете обрабатывать код и сообщать, как правило, более точную информацию, используя procfs (procfs.h) для получения информации о процессоре. Вы можете скомпилировать, чтобы включить профилирование, а затем посмотреть, где ваши узкие места, если вы считаете, что потребление ресурсов процессора слишком велико.

...