如何检查终端中的HZ?

时间:2012-09-18 15:45:59

标签: linux clock

我见过这个http://kaasxxx.wordpress.com/2008/01/22/linux-hz-checker/ 但剧本似乎不起作用。无论如何都知道在Linux终端中检查“HZ”的简单方法吗?

6 个答案:

答案 0 :(得分:25)

这个问题没有统一的答案,因为在某些情况下,你的内核可能会被编译为“无分钟”,而根本不会使用常规定时器中断。但是,如果您使用的是传统内核和传统发行版,则可以使用.config等内容在/ boot下找到当前内核的grep 'CONFIG_HZ=' /boot/config-$(uname -r)文件。

答案 1 :(得分:4)

在我的C程序中,我使用进程的开始时间和正常运行时间以及运行时的某些值计算。

在Bash中,HZ计算看起来就像是。

$ awk '{print$22/'$(tail -n 1 /proc/uptime|cut -d. -f1)"}" /proc/self/stat
100

意思是:获取正常运行时间的第22个值并将其除以" self"的开始时间。过程

编辑:

是的,user1530335,这是正确的。有关stat文件的其他信息可以从手册页proc(5)中获取。这里的领域" starttime"被描述为"系统启动后进程开始时的jiffies时间"。

是的,而且大多数(英特尔拱门)它将是100.旧的罕见" preempt"内核有时甚至在英特尔上有1000个。其他值可能是:

/**
 * 10 S/390 (sometimes)
 * 20 User-mode Linux
 * 32 ia64 emulator
 * 64 StrongARM /Shark
 * 100 normal Linux
 * 128 MIPS, ARM
 * 1000 ARM
 * 1024 Alpha, ia64
 * 1200 Alpha
 */

答案 2 :(得分:4)

可以像这样确定HZ的值:

$ getconf CLK_TCK
100

可以使用getconf闪烁运行中的内核的任何编译时选项。请记住,HZ是可配置的:

  

$ man 7次

     

HZ的值因内核版本和硬件平台而异。在i386上       情况如下:在2.4.x(含)以下的内核上,HZ为100       给出0.01秒的抖动值;从2.6.0开始,HZ被提升为       1000,产生0.001秒的跳动。从2.6.13内核开始,HZ值为       内核配置参数,可以是100、250(默认值)或1000,       产生的jiffies值分别为0.01、0.004或0.001秒。从2.6.20内核开始,出现了另一个频率:300,       平均分配普通视频帧速率(PAL,25 HZ; NTSC,30 HZ)。

     

times(2)系统调用是一个特例。它以内核常量USER_HZ定义的粒度报告时间。用户空间应用程序可以使用sysconf(_SC_CLK_TCK)确定此常数的值。

通常情况下,在使用_SC_进行查询时,可能需要从手册页中显示的变量名中减去getconf位。

答案 3 :(得分:3)

有许多不同的方法可以提示您的设置是什么。 在某些单核系统上,这个技巧很方便:

/ # 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; 000。除以10得到大约10&000; 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远离正常设置。实验设置。

答案 4 :(得分:0)

您要查找的是正在运行的内核/proc/config.gz的配置内(如果已启用,则在大多数系统上是这样)。

因此您可以使用以下方法检查最终的价格变动率:

zcat /proc/config.gz | grep CONFIG_HZ

答案 5 :(得分:0)

似乎实现这一目标的另一种方法是检查 cat /proc/sys/kernel/sched_min_granularity_ns 以获得调度增量的纳秒级粒度。有关调度程序如何工作的更多详细信息,请查看此页面:https://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt