Назад | Перейти на главную страницу

Определение секунды ЦП?

Я полностью за этой темой.

Вчера я делал профилирование для какого-то скрипта, над которым работаю, и единицей измерения времени было 'CPU второй'. Может кто-нибудь напомнить мне определение этого?

Например, для профилирования я получил: 200,750 секунд процессора. Что это должно значить? В противном случае и для трудоемкого процесса я получил: -347,977 секунд процессора, отрицательное число!

Есть ли способ преобразовать это время в календарное время?

Привет,

ЦП-секунда - это одна секунда времени на ЦП.

Время выполнения процесса имеет два измерения:

  • Время ЦП или время, которое ЦП потратил на активное выполнение процесса; и
  • Время стены, или количество времени, которое проходит между началом процесса и его окончанием.

Предполагая одно ядро ​​ЦП, они связаны следующим образом:

(Wall time) - (CPU time) = (time the CPU spent doing other things)

Итак, в простом примере, если вы запускаете процесс, который занимает 10 секунд, но вы получаете результат в 7 секунд ЦП, то в течение этих 10 секунд ЦП потратил 3 секунды на другие действия, кроме выполнения вашего процесса.

Процессорное время обычно делится на два типа:

  • "sys" или "ядро" время, или время, которое ядро ​​потратило на выполнение действий от имени вашего процесса - выполнение операций ввода-вывода, таймеров, мьютексов и т. д.
  • "пользовательское" время или выполнение, выполняемое процессом в пользовательском пространстве

Так например:

$ time sleep 1

real    0m1.005s
user    0m0.000s
sys     0m0.002s

В этом случае мы спим одну секунду. Система провела 2/1000 секунд в пространстве ядра, вероятно, настроив для нас таймеры и прерывания, не было времени в пользовательском пространстве, и все это заняло 1,005 секунды, что означает, что в течение этого периода времени компьютер потратил дополнительные 0,003 секунды делать что-то помимо нашего процесса.

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

Секунды ЦП в терминах UNIX - это время пользователя плюс системное время самого процесса, а не реальное (настенное время) время и время, потраченное дочерними процессами.

Несколько лет назад я видел что-то странное с отрицательным временем ЦП в двухъядерных процессорах AMD. Обновление драйвера процессора устранило проблему. В основном синхронизация между двумя процессорами сместилась и вызвала такие проблемы, как отрицательное время ЦП и отрицательное время пинга.

«Секунда ЦП» - это количество циклов ЦП, выполняемых процессом или потоком в секундах. Вы можете преобразовать его в настенное время, разделив его на использование ЦП:

15 секунд ЦП / 50% загрузки ЦП = 30 настенных секунд

Отрицательное время ЦП - это сбой в процессе измерения, возможно, переполнение.