Как рассчитать MIPS с помощью перфостата - PullRequest
0 голосов
/ 18 ноября 2018

После ответа о бенчмаркинге - Как подсчитать количество инструкций, отправленных в ЦПУ, чтобы найти потребленный MIPS , предложить:

perf stat ./my_program в Linux будет использовать счетчики производительности ЦП длязапишите, сколько инструкций он выполнил и сколько тактов ядра потребовалось.(И сколько процессорного времени он использовал, и будет рассчитывать MIPS для вас).


Пример генерирует следующий вывод, который не содержит рассчитанную MIPS информацию.

 Performance counter stats for './hello.py':

       1452.607792 task-clock (msec)         #    0.997 CPUs utilized
               327 context-switches          #    0.225 K/sec
               147 cpu-migrations            #    0.101 K/sec
            35,548 page-faults               #    0.024 M/sec
     2,254,593,107 cycles                    #    1.552 GHz                     [26.64%]
   <not supported> stalled-cycles-frontend
   <not supported> stalled-cycles-backend
     1,652,281,933 instructions              #    0.73  insns per cycle         [38.87%]
       353,431,039 branches                  #  243.308 M/sec                   [37.95%]
        18,536,723 branch-misses             #    5.24% of all branches         [38.06%]
       612,338,241 L1-dcache-loads           #  421.544 M/sec                   [25.93%]
        41,746,028 L1-dcache-load-misses     #    6.82% of all L1-dcache hits   [25.71%]
        25,531,328 LLC-loads                 #   17.576 M/sec                   [26.39%]
         1,846,241 LLC-load-misses           #    7.23% of all LL-cache hits    [26.26%]

       1.456531157 seconds time elapsed

[Q] Как я могу правильно вычислить MIPS из вывода perf stat?Чтобы рассчитать MIPS, я должен сделать следующее instructions/seconds_time_elapsed из значений, полученных из perf stat?

1 Ответ

0 голосов
/ 18 ноября 2018

Это, очевидно, просто инструкции / секунды. (делится на 1 миллион в масштабе для префикса Mega metric.)

Использование общего прошедшего времени даст вам MIPS для всей программы, общее количество для всех ядер и подсчет любого времени, потраченного на сон / ожидание.

Task-clock будет подсчитывать общее время процессора, используемое на всех ядрах, поэтому оно даст вам среднее MIPS для всех используемых ядер, не считая времени, проведенного в спящем режиме. (task-clock:u будет учитывать только время в пользовательском пространстве, но task-clock также учитывает время, проведенное в ядре.)

...