如何通过adb shell知道android内核的hz值?(无任何编码)
我检查了How to check HZ in the terminal?,但这不适用于android adb shell。
有什么建议吗?

最佳答案

理论
可以通过以jiffies为单位获取经过的时间并除以经过的时间(以秒为单位)来导出内核空间hz值。
您可以从/proc/timer_列表文件中以jiffies和纳秒为单位获得系统正常运行时间。
系统正常运行时间(纳秒)
搜索now at <nanoseconds> nsecs
<nanoseconds>将是纳秒内的正常运行时间
jiffies中的系统正常运行时间
搜索jiffies: <jiffies>行(任何处理器都可以)
<jiffies>将是jiffies的正常运行时间
注意:这个值通常在内核中向前偏移INITIAL_JIFFIES,所以它可能不会在0开始计数。尽管如此,这不应该影响我们计算的结果,因为我们关心的是经过的时间,而不是迟钝的正常运行时间。
通过在经过的一段时间内获取这两个值,可以使用以下公式计算Hz值:

         (jiffies_after - jiffies_before)
HZ = -----------------------------------------
     ((nsecs_after - nsecs_before)/1000000000)

例子
如果您碰巧有awk(可能通过busybox),则可以自动执行此计算:
$ awk '/^now at/ { nsec=$3; } /^jiffies/ { jiffies=$2; } END { print nsec, jiffies; system("sleep 1"); }' /proc/timer_list | awk 'NR==1 { nsec1=$1; jiffies1=$2; } /^now at/ NR>1 { nsec2=$3; } /^jiffies/ NR>1 { jiffies2=$2; } END { dsec=(nsec2-nsec1)/1e9; djiff=(jiffies2-jiffies1); print int(djiff/dsec); }' - /proc/timer_list

由于舍入误差,hz值可能稍有偏差;您可能需要多次执行此计算并将其平均。大多数现代内核都将kernel spaceHZ设置为250
击穿
下面是一个分布在几行上的相同命令,以说明它的工作原理:
$ awk '
> /^now at/ { nsec=$3; }
> /^jiffies/ { jiffies=$2; }
> END {
>       print nsec, jiffies;
>       system("sleep 1");
> }
> ' /proc/timer_list | awk '
> NR==1 { nsec1=$1; jiffies1=$2; }
> /^now at/ NR>1 { nsec2=$3; }
> /^jiffies/ NR>1 { jiffies2=$2; }
> END {
>       dsec=(nsec2-nsec1)/1e9;
>       djiff=(jiffies2-jiffies1);
>       print int(djiff/dsec);
> }
> ' - /proc/timer_list

/^now at/ { nsec=$3; }
将纳秒数保存到变量nsec
/^jiffies/ { jiffies=$2; }
将jiffies的数目保存到变量jiffies
END {
print nsec, jiffies;
打印由空格分隔的纳秒和jiffies
system("sleep 1");
在计算hz值时,睡眠一秒钟以防止除以0
' /proc/timer_list | awk '
处理/proc/timer\u列表文件
管道输出到awk的新实例
NR==1 { nsec1=$1; jiffies1=$2; }
将先前nsecjiffiesawk值分别设置为nsec1jiffies1
/^now at/ NR>1 { nsec2=$3; }
将纳秒数保存到变量nsec2
/^jiffies/ NR>1 { jiffies2=$2; }
将jiffies的数目保存到变量jiffies2
END {
dsec=(nsec2-nsec1)/1e9;
以秒计算变化
djiff=(jiffies2-jiffies1);
计算jiffies的变化
print int(djiff/dsec);
将赫兹值打印为整数
' - /proc/timer_list
处理标准输入,后跟/proc/timer\u列表文件

09-13 06:02