процессорное время
Эта статья , возможно, содержит оригинальные исследования . ( Ноябрь 2016 г. ) |
Время ЦП (или время процесса ) — это количество времени , в течение которого центральный процессор (ЦП) использовался для обработки инструкций компьютерной программы или операционной системы , в отличие от затраченного времени, которое включает, например, ожидание ввода/вывода. (I/O) или переход в режим пониженного энергопотребления (холостого хода). Время процессора измеряется в тактах или секундах. Часто бывает полезно измерить время ЦП в процентах от мощности ЦП, что называется загрузкой ЦП . Время ЦП и загрузка ЦП имеют два основных применения.
Время ЦП используется для количественной оценки общей эмпирической эффективности двух функционально идентичных алгоритмов. Например, любой алгоритм сортировки принимает несортированный список и возвращает отсортированный список и делает это за определенное количество шагов, основанное на заданном входном списке. Однако сортировка пузырьком и сортировка слиянием имеют разную сложность времени выполнения , поэтому сортировка слиянием обычно выполняется за меньшее количество шагов. Без каких-либо знаний о работе любого алгоритма большее время ЦП пузырьковой сортировки показывает, что для определенных входных данных он менее эффективен, чем сортировка слиянием.
Этот тип измерения особенно полезен при сравнении одинаковых алгоритмов, не тривиальных по сложности. В этом случае время ожидания (фактическое истекшее время) не имеет значения, компьютер может выполнять программу медленнее или быстрее в зависимости от реальных переменных, таких как температура процессора, а также других переменных операционной системы, таких как приоритет процесса.
используется Использование ЦП для количественной оценки того, как процессор распределяется между компьютерными программами. Высокая загрузка ЦП одной программой может указывать на то, что она требовательна к вычислительной мощности или может работать неправильно; например, он вошел в бесконечный цикл . Время ЦП позволяет измерить вычислительную мощность, необходимую одной программе, устраняя помехи, такие как время ожидания ввода или приостановка работы других программ.
Напротив, прошедшее реальное время (или просто реальное время, или время настенных часов ) — это время, затраченное от начала компьютерной программы до ее конца, измеренное обычными часами. Затраченное реальное время включает в себя время ввода-вывода, любые задержки многозадачности и все другие типы ожиданий, возникающие в программе.
Подразделение
[ редактировать ]О времени процессора или использовании процессора можно сообщать либо для каждого потока , для каждого процесса , либо для всей системы. При этом в зависимости от того, что именно делал ЦП, сообщаемые значения можно разделить на:
- Пользовательское время — это количество времени, в течение которого ЦП был занят выполнением кода в пользовательском пространстве .
- Системное время — это время, в течение которого ЦП был занят выполнением кода в пространстве ядра . Если это значение сообщается для потока или процесса, то оно представляет собой количество времени, в течение которого ядро выполняло работу от имени исполняющего контекста , например, после того, как поток выполнил системный вызов .
- Время простоя (только для всей системы) — это количество времени, в течение которого ЦП не был занят, или, иначе, количество времени, в течение которого он выполнял процесс простоя системы . Время простоя фактически измеряет неиспользуемую мощность процессора.
- Время кражи (только для всей системы) на виртуализированном оборудовании — это количество времени, которое операционная система не разрешил это сделать хотела выполнить, но гипервизор . [1] Это может произойти, если на физическом оборудовании работает несколько гостевых операционных систем, а гипервизор решил выделить временной интервал ЦП для другой.
Команды Unix для процессорного времени
[ редактировать ]Команда Unix вверху
[ редактировать ]Команда Unix top и предоставляет время процессора, приоритет, затраченное время в реальном времени другую информацию для всех процессов и обновляет ее в режиме реального времени.
команды Unix Время
[ редактировать ]Команда Unix отображает время процессора и время , time прошедшее в реальном времени для процесса Unix.
% gcc nextPrimeNumber.c -o nextPrimeNumber
% time ./nextPrimeNumber 30000007
Prime number greater than 30000007 is 30000023
0.327u 0.010s 0:01.15 28.6% 0+0k 0+0io 0pf+0w
Этот процесс занял в общей сложности 0,337 секунды процессорного времени, из которых 0,327 секунды было потрачено в пространстве пользователя, а последние 0,010 секунды — в режиме ядра от имени процесса. Прошедшее реальное время составило 1,15 секунды.
Ниже приведен исходный код приложения nextPrimeNumber, которое использовалось в приведенном выше примере.
// nextPrimeNumber.c
#include <stdio.h>
#include <stdlib.h>
int isPrimeNumber(unsigned long int n) {
for (int i = 2; i <= (n >> 1); ++i)
if (n % i == 0) return 0;
return 1;
}
int main(int argc, char *argv[]) {
unsigned long int argument = strtoul(argv[1], NULL, 10), n = argument;
while (!isPrimeNumber(++n));
printf("Prime number greater than %lu is %lu\n", argument, n);
return 0;
}
POSIX-функции clock()
и getrusage()
[ редактировать ] POSIX-функции clock()
и getrusage()
может использоваться для получения данных о времени ЦП, потребляемом любым процессом в среде POSIX. Если процесс многопоточный, время процессора представляет собой сумму всех потоков .
В Linux, начиная с ядра 2.6.26, есть параметр RUSAGE_THREAD, который ведет статистику использования ресурсов только для вызывающего потока.
Общее время процессора
[ редактировать ]На многопроцессорных машинах компьютерная программа может использовать два или более ЦП для обработки с использованием параллельного планирования обработки. В таких ситуациях используется понятие общего времени ЦП , которое представляет собой сумму времени ЦП, потребляемого всеми ЦП, используемыми компьютерной программой.
Время процессора и затраченное реальное время
[ редактировать ]Затраченное реальное время всегда больше или равно времени ЦП для компьютерных программ, которые используют для обработки только один ЦП. Если для ввода-вывода или других ресурсов ожидание не требуется, затраченное реальное время и время ЦП очень похожи.
Время ЦП и затраченное реальное время для технологии параллельной обработки
[ редактировать ]Если программа использует параллельную обработку , общее время процессора для этой программы будет больше, чем затраченное ею реальное время. (Общее время ЦП)/(Количество ЦП) будет таким же, как затраченное реальное время, если рабочая нагрузка равномерно распределена по каждому ЦП и не требуется ожидание ввода-вывода или других ресурсов.
Пример: Программное приложение, выполняемое на шестиядерном процессоре, создает три процесса Unix для выполнения требований пользователя. Каждый из этих трех процессов создает два потока, всего 6 рабочих потоков. Вычисления распределяются равномерно по 6 независимым потокам. Если ожидание ресурсов не используется, ожидается, что общее время ЦП в шесть раз превысит затраченное реальное время.
См. также
[ редактировать ]- Прошедшее реальное время
- Процессор
- Процесс (вычисления)
- Системное время
- вершина
- mpstat
- Нагрузка (вычисления)
Ссылки
[ редактировать ]- ^ Эрхардт, Кристиан (июль 2010 г.). «Учет процессорного времени» . ИБМ . Проверено 5 августа 2014 г.
Внешние ссылки
[ редактировать ]- Тимманнагари, Чандра (1 января 2005 г.). Проектирование процессора: ответы на часто задаваемые вопросы . Спрингер. п. 68 . ISBN 0-387-23799-2 .
- «Процессор и процессорное время» . Библиотека GNU C. 09 февраля 2014 г. Проверено 5 августа 2014 г.
- «часы — отчет об использовании процессорного времени» . Базовые спецификации открытой группы, выпуск 6, IEEE Std 1003.1, издание 2004 г. Проверено 5 августа 2014 г.
- «getrusage — получить информацию об использовании ресурсов» . Базовые спецификации открытой группы, выпуск 6, IEEE Std 1003.1, издание 2004 г. Проверено 5 августа 2014 г.