Я полностью за этой темой.
Вчера я делал профилирование для какого-то скрипта, над которым работаю, и единицей измерения времени было 'CPU второй'. Может кто-нибудь напомнить мне определение этого?
Например, для профилирования я получил: 200,750 секунд процессора. Что это должно значить? В противном случае и для трудоемкого процесса я получил: -347,977 секунд процессора, отрицательное число!
Есть ли способ преобразовать это время в календарное время?
Привет,
ЦП-секунда - это одна секунда времени на ЦП.
Время выполнения процесса имеет два измерения:
Предполагая одно ядро ЦП, они связаны следующим образом:
(Wall time) - (CPU time) = (time the CPU spent doing other things)
Итак, в простом примере, если вы запускаете процесс, который занимает 10 секунд, но вы получаете результат в 7 секунд ЦП, то в течение этих 10 секунд ЦП потратил 3 секунды на другие действия, кроме выполнения вашего процесса.
Процессорное время обычно делится на два типа:
Так например:
$ time sleep 1
real 0m1.005s
user 0m0.000s
sys 0m0.002s
В этом случае мы спим одну секунду. Система провела 2/1000 секунд в пространстве ядра, вероятно, настроив для нас таймеры и прерывания, не было времени в пользовательском пространстве, и все это заняло 1,005 секунды, что означает, что в течение этого периода времени компьютер потратил дополнительные 0,003 секунды делать что-то помимо нашего процесса.
Я не знаю, как и почему вы получите явно отрицательное число для процессорного времени.
Секунды ЦП в терминах UNIX - это время пользователя плюс системное время самого процесса, а не реальное (настенное время) время и время, потраченное дочерними процессами.
Несколько лет назад я видел что-то странное с отрицательным временем ЦП в двухъядерных процессорах AMD. Обновление драйвера процессора устранило проблему. В основном синхронизация между двумя процессорами сместилась и вызвала такие проблемы, как отрицательное время ЦП и отрицательное время пинга.
«Секунда ЦП» - это количество циклов ЦП, выполняемых процессом или потоком в секундах. Вы можете преобразовать его в настенное время, разделив его на использование ЦП:
15 секунд ЦП / 50% загрузки ЦП = 30 настенных секунд
Отрицательное время ЦП - это сбой в процессе измерения, возможно, переполнение.