Как интерпретировать вывод boost :: timer :: cpu_timer на многоядерной машине?

я использую boost::timer::cpu_timer измерить производительность некоторого алгоритма в моем приложении. Пример вывода выглядит так:

Продолжительность Algo1: стена 6,755457 с, пользователь 12,963683 с + система 1,294808 с = 14,258491 с ЦП (211,1%)

Из документации по расширению cpu_timer:

Вывод этой программы будет выглядеть примерно так:

5.713010s wall, 5.709637s user + 0.000000s system = 5.709637s CPU (99.9%)

Другими словами, эта программа работала за 5,713010 секунд, как было бы
измеренная часами на стене, операционная система
5.709637 секунд пользовательского процессорного времени и 0 секунд системного процессорного времени, общее количество этих двух составляло 5.709637, что составило 99,9%
времени настенных часов.

Что означает полученное мной значение (211,1%), означает ли это, что в выполнении моего алгоритма было задействовано более двух ядер?

Каково значение user CPU time а также system CPU time ?

1

Решение

Что означает полученное мной значение (211,1%), означает ли это, что в выполнении моего алгоритма было задействовано более двух ядер?

Это означает, что программа использовала чуть более чем в два раза больше процессорного времени, чем время простоя. Чтобы это произошло, он должен был работать как минимум на трех ядрах в течение некоторого времени.

Что означает пользовательское процессорное время и системное процессорное время?

Время ЦП пользователя — это время, когда ЦП выполняет код пользователя. Системное время ЦП — это время, когда ЦП выполняет системный код. Когда вы вызываете системную функцию, например функцию для чтения из файла, вы переключаетесь с запуска пользовательского кода на выполнение системного кода, пока эта функция не вернется.

2

Другие решения


По вопросам рекламы [email protected]