我看过这个链接,但是脚本似乎无法运行。 请问有没有简单的方法可以在Linux终端中检查“HZ”?
对于这个问题,没有统一的答案,因为在某些情况下,您的内核可能编译为"tickless"并且根本不使用常规计时器中断。但是,如果您使用传统内核和传统发行版,则可以在/boot下找到当前内核的.config
文件,并使用类似于grep 'CONFIG_HZ=' /boot/config-$(uname -r)
的命令进行查找。
可以这样确定 HZ 的值:
$ getconf CLK_TCK
100
使用getconf
可以获取运行内核的编译时选项。请注意,HZ是可配置的:
$ man 7 time
HZ的值因内核版本和硬件平台而异。在i386上,情况如下:在2.4.x及以下的内核上,HZ为100,jiffy值为0.01秒;从2.6.0开始,HZ提高到1000,jiffy为0.001秒。自内核2.6.13以来,HZ值是内核配置参数,可以是100、250(默认值)或1000,分别产生0.01、0.004或0.001秒的jiffies值。自内核2.6.20以来,还有另外一个频率可用:300,它可以被常见的视频帧速率(PAL,25 HZ;NTSC,30 HZ)整除。
times(2)系统调用是一种特殊情况。它报告的时间粒度由内核常量USER_HZ定义。用户空间应用程序可以使用sysconf(_SC_CLK_TCK)确定此常量的值。
通常情况下,在使用getconf
查询变量名时可能需要删除man页面中显示的_SC_
部分。
grep 'CONFIG_HZ=' /boot/config-$(uname -r)
得到了250。你有什么想法吗? - devoured elysiumgetconf CLK_TCK
或 sysconf(_SC_CLK_TCK)
返回的是 USER_HZ
或 CLOCKS_PER_SEC
,它似乎总是100,与内核配置无关。这与 CONFIG_HZ
或 HZ
不同,后者取决于内核配置。这就是为什么 getconf CLK_TCK
不会返回 CONFIG_HZ
值的原因。 - scai有许多不同的方法可以获得关于您的设置的提示。 在一些单核系统上,这个技巧很方便:
/ # cat /proc/interrupts | grep -i time; sleep 10; cat /proc/interrupts | grep time
16: 10404858 INTC 68 Level gp_timer
16: 10514798 INTC 68 Level gp_timer
它显示了在10秒的睡眠期间有多少个时钟周期。这里大约有100,000个。除以10得到大约10,000 HZ。
在多核系统上,这可能会变得混乱,因为它将是每个核心的列表。
另一个选择是检查是否可以获取原始内核配置。它将存储在
/proc/config.gz
CONFIG_HZ_FIXED=0
# CONFIG_HZ_100 is not set
# CONFIG_HZ_200 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
# CONFIG_HZ_500 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ_10000=y
CONFIG_HZ=10000
CONFIG_SCHED_HRTICK=y
仅作提醒,10,000远超过正常设置。这是实验性的设置。
gunzip /proc/config.gz -c | grep CONFIG_HZ
。 - thesecretmaster更新:根据scai的评论编辑了答案。
在Bash中,“HZ”计算的示例代码如下:
$ awk '{print$22/'$(tail -n 1 /proc/uptime|cut -d. -f1)"}" /proc/self/stat
100
自启动以来的时钟滴答数 (ticks) / 自启动以来的时间 (seconds)
单位为 ticks / seconds
。在大多数情况下,这应该是每秒 100 个滴答。 - user1530335HZ=100
的结果,但如果我使用 extract-ikconfig
,那么我会看到 CONFIG_HZ=300
。这些描述的是不同的东西吗? - marshall.wardUSER_HZ
,即CLOCKS_PER_SEC
,它似乎始终为100,独立于内核配置。这与依赖于内核配置的CONFIG_HZ
,即HZ
不*相同。 - scai似乎实现这个相同的方法的另一种方式是通过检查cat /proc/sys/kernel/sched_min_granularity_ns
来获取调度增量的纳秒粒度。有关调度程序工作原理的更多详细信息,请查看此页面:https://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt
/proc/config.gz
中(如果启用的话,在大多数系统上它是启用的)。zcat /proc/config.gz | grep CONFIG_HZ
zgrep CONFIG_HZ /proc/config.gz
- scai