Я использую hwlat_detector tracer для измерения системных задержек, которые возникают за пределами Linux.
Для измерений используется Asus Zenbook ux331un. Я отключил состояние питания процессора с помощью параметра cmd-line ядра idle = poll, гиперпоточность отключена, турбо-буст отключен. Вот пример выходных данных hwlat tracer.
<...>-4976 [002] d...... 3258.677286: #81 inner/outer(us): 31/33 ts:1572267806.608681762
<...>-4976 [003] dn..... 3276.085073: #82 inner/outer(us): 32/34 ts:1572267824.016656104
<...>-4976 [000] d.L.... 3277.113063: #83 inner/outer(us): 32/0 ts:1572267825.044656725
<...>-4976 [003] dn..... 3280.181030: #84 inner/outer(us): 32/32 ts:1572267828.112657027
<...>-4976 [000] dnL.... 3281.205020: #85 inner/outer(us): 32/32 ts:1572267829.136657127
<...>-4976 [002] dn..... 3283.252999: #86 inner/outer(us): 456/33 ts:1572267831.184659048
<...>-4976 [003] dn..... 3284.276986: #87 inner/outer(us): 16/32 ts:1572267832.208656275
<...>-4976 [000] dnL.... 3285.300975: #88 inner/outer(us): 16/33 ts:1572267833.232656714
<...>-4976 [002] dn..... 3287.348959: #89 inner/outer(us): 20/33 ts:1572267835.280662760
<...>-4976 [003] dn..... 3288.372943: #90 inner/outer(us): 33/34 ts:1572267836.304657092
<...>-4976 [000] dnL.... 3289.396938: #91 inner/outer(us): 32/32 ts:1572267837.328663631
<...>-4976 [002] dn..... 3291.444912: #92 inner/outer(us): 20/33 ts:1572267839.376659443
Как видно из вывода, задержка превышает 400 мкс. Я также получаю много задержек в диапазоне 30 мкс. Сначала я подумал, что задержки вызваны SMI, поэтому я начал читать регистр MSR 0x34, который подсчитывает количество SMI, которые произошли с момента загрузки системы. Он не увеличивается во время выполнения теста. Что еще может быть причиной такой задержки?