turbostat не показывает только нужные столбцы с параметром --show

awk -F: '
    FNR == NR { c2[$1] = $2; c3[$1] = $3; next }
    !($1 in c2) {
        printf("%d: $1 not found in reference\n", $1)
        next
    }
    $3 > c3[$1] && $2 == "!"    {
        printf("%d: target has bigger $3 (%d>%d) but disabled $2 (%s)\n", $1,$3,c3[$1],$2)
        next
    }
    $3 > c3[$1] && $2 != c2[$1] {
        printf("%d: target has bigger $3 (%d>%d) but different $2 (%s)\n", $1,$3,c3[$1],$2)
    }' reference target

При этом считывается эталонный файл, а затем целевой файл.

При чтении эталонного файла(FNR == NR)он собирает значения второго и третьего столбцов в двух массивах c2и c3. В качестве индекса используется значение в первом столбце.

При чтении целевого файла(FNR != NR)значение в третьем столбце будет сравниваться с сохраненным значением в массиве c3. Затем он также сравнивает второй столбец с !или с сохраненным вторым столбцом из эталонного файла в c2.

Код также выдает дополнительное сообщение, если первый столбец целевого файла не найден в эталонном файле.

Вывод, учитывая данные в вопросе с добавленной целевой строкой(56:C:9):

42: target has bigger $3 (1>0) but disabled $2 (!)
45: target has bigger $3 (2>1) but different $2 (B)
56: $1 not found in reference
0
15.01.2020, 23:47
1 ответ

Я пытался понять почему, и это моя лучшая попытка найти ответ. Если я ошибаюсь, так и скажите.

Исходный код моей текущей версии турбостата можно найти здесь .

Если я запускаю турбостат с опцией --show, вызывается функция bic_lookup. Если я запускаю turbostat с именами уровня C, такими как:--show C1,C3и т. Д., Я всегда получаю эту ошибку .

Мне кажется, что «проблема» заключается в этой строке , потому что эта структура не имеет имен C1, C3 и т. д., которые я использую в качестве параметров с --showвариант. Это также говорит в комментарий:

1. built-in only, the sysfs counters are not here -- we learn of those at run-time

Те уровни C, которые я использую, являются счетчиками sysfs, turbostat узнает о них только во время -выполнения, но цикл в bic _функция поиска работает только с этими жесткими -] закодированные имена столбцов. Если я использую одно из имен, прямо написанных в структуре bic, турбостат на самом деле показывает мне только такой столбец (с ), как и ожидалось.

Кажется, единственный вариант — использовать --show sysfs, который печатает нужные мне столбцы.

В целом, справочная страница кажется немного запутанной, когда она говорит:

--list display column header names available for use by --show and --hide, then exit.

, потому что при выполнении --listотображаются даже имена столбцов, такие как C1, C3.

(Обратите внимание, что я не программист, поэтому моя терминология может быть запутанной или неправильной. Не стесняйтесь редактировать мой комментарий по мере необходимости.)

1
28.01.2020, 02:54

Теги

Похожие вопросы