Turbostat 不只显示带有 --show 选项的所需列

Turbostat 不只显示带有 --show 选项的所需列

我在 Manjaro 18.1.5 中使用 tubestat:

$ pacman -Qs turbostat
local/turbostat 5.4-3 (linux-tools)

手册页说:

--show  column  show  only  the  specified built-in columns.  May be invoked multiple times, or with a comma-separated list of column names.  Use "--show
       sysfs" to show the sysfs statistics columns as a group.
...
...
--list display column header names available for use by --show and --hide, then exit.

当我显示列时,我可以使用:

$ sudo turbostat --list
usec,Time_Of_Day_Seconds,Core,CPU,APIC,X2APIC,Avg_MHz,Busy%,Bzy_MHz,TSC_MHz,IRQ,SMI,POLL,C1,C1E,C3,C6,C7s,C8,C9,C10,POLL%,C1%,C1E%,C3%,C6%,C7s%,C8%,C9%,C10%,CPU%c1,CPU%c3,CPU%c6,CPU%c7,CoreTmp,PkgTmp,GFX%rc6,GFXMHz,Pkg%pc2,Pkg%pc3,Pkg%pc6,Pkg%pc7,Pkg%pc8,Pkg%pc9,Pk%pc10,PkgWatt,CorWatt,GFXWatt

我可以看到可用于列的各种 C 级别,因此如果我只想查看 C1 和 C2,我可以运行以下命令:

$ sudo turbostat --show C1,C2
Invalid counter name: C1

为什么我会得到无效的计数器名称:C1

当我尝试省略带有--hide选项的 C1 列时,它按预期工作:

$ sudo turbostat --hide C1,C2
...
...
Core    CPU Avg_MHz Busy%   Bzy_MHz TSC_MHz IRQ SMI POLL    C1E C3 ...
...

如果我用来sysfs引用所有 C 状态,它会再次按预期工作:

$ sudo turbostat --show sysfs
...
POLL    C1  C1E C3  C6  C7s C8  C9  C10 ...
...

我还尝试使用--show选项列出不同的列(POLL、C7、C1%...),但结果始终与上面带有 C1 和 C2 列的示例相同。

我缺少什么?

答案1

我试图找出原因,这是我对答案的最佳尝试。如果我错了,请说出来。

可以找到我当前版本的 Turbostat 的源代码这里

如果我使用--show选项运行涡轮增压器,功能bic_lookup被叫。如果我用这样的 C 级名称运行 Turbostat:--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_lookup 函数中的循环仅适用于这些硬编码的列名称。如果我使用直接写在结构中的名称之一bic,turbostat 实际上只向我显示预期的这样一个列。

似乎唯一的选择是使用--show sysfs,它打印我想要的列。

总而言之,手册页上写着:

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

因为当--list执行时,甚至会显示 C1、C3 等列名。

(请注意,我不是程序员,因此我的术语可能会令人困惑或错误。请根据需要随意编辑我的评论。)

相关内容