Применение команды time для измерения нагрузки процессора
Команда time позволяет просмотреть параметры производительности отдельной программы и ее дочерних процессов, работающих в синхронном режиме.
Команда time показывает время, прошедшее с момента запуска до завершения работы программы, то есть фактическое время. Кроме того, она показывает, сколько времени процессор затратил на выполнение этой программы. Время процессора делится на две категории: пользовательское и системное. Пользовательское время - это время выполнения самой программы и всех вызовов библиотечных функций. Системное время - это время обработки вызванных программой (напрямую или косвенно) системных процедур и функций.
В сумме пользовательское и системное время дают общее время процессора, затраченное на выполнение программы. Сюда не входит обработка процессором компонентов ядра, которые могут быть запущены в ходе выполнения программы, но в настоящее время не запущены в данной нити. Например, захват страниц физической памяти для замещения страниц, полученных из списка свободных страниц при запуске программы, не учитывается при подсчете времени процессора, затраченного на выполнение программы.
фактическое - (пользовательское + системное)фактическое * число-процессоров - (пользовательское + системное)Ниже в порядке убывания значимости перечислены некоторые из этих факторов:
- Операции ввода-вывода, необходимые для считывания кода и данных программы
- Операции ввода-вывода, связанные с выделением памяти для программы
- Процессорное время, затраченное на выполнение других программ
- Процессорное время, затраченное на выполнение задач операционной системы
# time looper
фактическое 0m3.58s
пользов. 0m3.16s
сист. 0m0.04s# time nice -n 10 looper
фактическое 0m6.54s
пользов. 0m3.17s
системное 0m0,03s# nice -n 10 time looperто была бы выполнена другая команда time (/usr/bin/time), отличающаяся меньшей точностью по сравнению с применяемой нами командой time, встроенной в оболочку ksh. Если команда time указана первой, то запускается встроенная версия, если явно не указано полное имя команды /usr/bin/time. Если команду time вызывает другая команда, то запускается программа /usr/bin/time.