[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Руководство по настройке производительности


Измерение нагрузки на процессор с помощью команды time

Команда time позволяет просмотреть параметры производительности отдельной программы и ее дочерних процессов, работающих в синхронном режиме. Она показывает время, прошедшее с момента запуска до завершения работы программы, то есть фактическое время. Кроме того, она показывает, сколько времени процессор затратил на выполнение этой программы. Время процессора делится на две категории: пользовательское и системное. Пользовательское время - это время выполнения самой программы и всех вызовов библиотечных функций. Системное время - это время обработки вызванных программой (напрямую или косвенно) системных процедур и функций.

В сумме пользовательское и системное время дают общее время процессора, затраченное на выполнение программы. Сюда не входит обработка процессором компонентов ядра, которые могут быть запущены в ходе выполнения программы, но в настоящее время не запущены в данной нити. Например, захват страниц физической памяти для замещения страниц, полученных из списка свободных страниц при запуске программы, не учитывается при подсчете времени процессора, затраченного на выполнение программы.

В однопроцессорной системе ненулевая разность между фактическим и общим временем работы процессора, то есть

фактическое - (пользовательское + системное)

обусловлена влиянием всех факторов, которые могут замедлить обработку программы; кроме того, в него входят не учтенные ранее затраты времени на обработку самой программы. В системе SMP эту разницу можно вычислить по следующей формуле:

фактическое * число-процессоров -
(пользовательское + системное)

Ниже в порядке убывания значимости перечислены некоторые из этих факторов:

В приведенном ниже примере программа откомпилирована с опцией -O3 для повышения скорости ее работы. Разность между фактическим временем выполнения программы и суммой пользовательского и системного времени в этом примере очень мала. Программе было предоставлено все запрошенное время - возможно, за счет других программ в системе.

# time looper
фактическое    0m3.58s
пользов.       0m3.16s
сист.          0m0.04s

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

# time nice -n 10 looper
фактическое    0m6.54s
пользов.       0m3.17s
сист.          0m0.03s

Обратите внимание, что команда nice указана после команды time, а не наоборот. Если бы мы ввели команду

# nice -n 10 time looper

то была бы вызвана другая команда time (/usr/bin/time), отличающаяся меньшей точностью по сравнению с применяемой нами командой time, встроенной в оболочку ksh. Если команда time указана первой, то запускается встроенная версия, если явно не указано полное имя команды /usr/bin/time. Если команду time вызывает другая команда, то запускается программа /usr/bin/time.

Рекомендации по работе с командами time и timex

При работе с командами time и timex следует обратить внимание на следующее:


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]