我在 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 等列名。
(请注意,我不是程序员,因此我的术语可能会令人困惑或错误。请根据需要随意编辑我的评论。)