Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Процессорное время в многозадачной системе с одним процессором
  Цветовое время процессора для программы P1

Процессорного времени (или время процесса ) представляет собой количество времени , в течение которого центральный процессор был использован (ЦП) для обработки инструкций о наличии компьютерной программы или операционной системы , в отличие от истекшего времени, которая включает в себя, например, в ожидании ввода / вывода (I / O) или переход в режим пониженного энергопотребления (ожидания). Время процессора измеряется в тактах или секундах. Часто бывает полезно измерить время ЦП в процентах от мощности ЦП, что называется использованием ЦП .

Процессорное время и загрузка процессора имеют два основных значения. Первое использование - это количественная оценка общей загруженности системы. Когда загрузка ЦП высока, пользователь может испытывать отставание . Такая высокая загрузка ЦП указывает на недостаточную вычислительную мощность. Либо необходимо обновить ЦП, либо уменьшить удобство работы пользователя, например, переключившись на графику с более низким разрешением или уменьшив количество анимаций.

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

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

Подразделение [ править ]

Время ЦП или использование ЦП можно сообщать для каждого потока , для каждого процесса или для всей системы. Более того, в зависимости от того, что именно делал ЦП, сообщаемые значения можно разделить на:

  • Пользовательское время - это количество времени, в течение которого ЦП был занят выполнением кода в пользовательском пространстве .
  • Системное время - это время, в течение которого ЦП был занят выполнением кода в пространстве ядра . Если это значение сообщается для потока или процесса, то оно представляет количество времени, в течение которого ядро ​​выполняло работу от имени исполняющего контекста , например, после того, как поток отправил системный вызов .
  • Время простоя (только для всей системы) - это количество времени, в течение которого ЦП не был занят, или, иначе, количество времени, в течение которого он выполнял процесс бездействия системы . Время простоя фактически измеряет неиспользуемую мощность ЦП.
  • Время кражи (только для всей системы) на виртуализированном оборудовании - это время, в течение которого операционная система хотела выполнить, но не была разрешена гипервизором . [1] Это может произойти, если на физическом оборудовании работает несколько гостевых операционных систем, а гипервизор решил выделить один временной интервал ЦП другому.

Команды Unix для процессорного времени [ править ]

наверху отображение процессорного времени различных процессов в Unix-подобной ( GNU / Linux ) системе

Команда Unix вверху [ править ]

Unix командной топ предоставляет процессорное время, приоритет, прошедшее в режиме реального времени , а также другую информацию для всех процессов и обновлений в режиме реального времени.

Время команды Unix [ править ]

Unix команды время печатает процессорное время и прошло в режиме реального времени для процесса Unix.

% gcc nextPrimeNumber.c -o nextPrimeNumber %  time ./nextPrimeNumber 30000007 Простое число больше 30000007 равно 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 )  {  для  ( int  i  =  2 ;  i  <=  ( n  >>  1 );  ++ i )  if  ( n  %  i  ==  0 )  return  0 ;  возврат  1 ; }int  main ( int  argc ,  char  * argv [])  {  беззнаковый  длинный  аргумент int  = strtoul ( argv [ 1 ], NULL , 10 ), n = аргумент ; пока ( ! isPrimeNumber ( ++ n ));          printf ( "Простое число больше% lu равно% lu \ n " ,  аргумент ,  n );  возврат  0 ; }

Функции POSIX clock()и getrusage()[ править ]

POSIX функционирует clock() и getrusage()может использоваться для получения процессорного времени, потребляемого любым процессом в среде POSIX. Если процесс многопоточный, процессорное время является суммой для всех потоков . В Linux, начиная с ядра 2.6.26, есть параметр RUSAGE_THREAD, который ведет к статистике использования ресурсов только для вызывающего потока.

Общее время процессора [ править ]

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

Процессорное время и прошедшее реальное время [ править ]

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

Процессорное время и прошедшее реальное время для технологии параллельной обработки [ править ]

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

Пример: программное приложение, выполняемое на шестиядерном процессоре, создает три процесса Unix для выполнения требований пользователя. Каждый из этих трех процессов создает два потока, в общей сложности перечисляя 6 рабочих потоков. Вычисления равномерно распределяются по 6 независимым потокам. Если ожидание ресурсов не задействовано, общее время ЦП, как ожидается, будет в шесть раз больше, чем истекшее реальное время.

См. Также [ править ]

  • Прошедшее реальное время
  • ЦПУ
  • Процесс (вычисления)
  • Системное время
  • верх
  • mpstat
  • Нагрузка (вычисление)

Ссылки [ править ]

  1. ^ Эрхардт, Кристиан (июль 2010). «Учет процессорного времени» . IBM . Проверено 5 августа 2014 .

Внешние ссылки [ править ]

  • Тимманнагари, Чандра (1 января 2005 г.). Дизайн процессора: ответы на часто задаваемые вопросы . Springer. п. 68 . ISBN 0-387-23799-2.
  • «Процессор и время ЦП» . GNU C Library . 2014-02-09 . Проверено 5 августа 2014 .
  • "часы - отчет об использовании процессорного времени" . Open Group Base спецификации Выпуск 6, IEEE Std 1003.1, 2004 Edition . Проверено 5 августа 2014 .
  • "getrusage - получить информацию об использовании ресурсов" . Open Group Base спецификации Выпуск 6, IEEE Std 1003.1, 2004 Edition . Проверено 5 августа 2014 .