Won*_*nil 2 android linux-kernel adb
如何通过ADB shell了解Android内核的HZ值?(没有任何编码)
我检查了如何检查终端中的HZ?,但这不适用于Android ADB shell.
有什么建议吗?
您可以通过在jiffies中经过一段时间并将其除以经过时间(以秒为单位)来推导出内核空间HZ值.
您可以从/ proc/timer_list文件获得jiffies和纳秒级的系统正常运行时间.
now at <nanoseconds> nsecs行<nanoseconds>将是以纳秒为单位的正常运行时间jiffies: <jiffies>线(任何处理器都会这样做)<jiffies>将是jiffies的正常运行时间
INITIAL_JIFFIES在内核中向前偏移- 因此它可能无法开始计数0.然而,由于我们关心的是这应该不会影响我们的计算结果经过的时间,而不是obsolute的正常运行时间.通过在经过的时间段内获取这两个值,您可以使用以下等式计算HZ值:
(jiffies_after - jiffies_before)
HZ = -----------------------------------------
((nsecs_after - nsecs_before)/1000000000)
Run Code Online (Sandbox Code Playgroud)
如果您碰巧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
Run Code Online (Sandbox Code Playgroud)
由于舍入误差,HZ值可能稍微偏离; 您可能希望多次执行此计算并对其进行平均.大多数现代内核都将内核空间HZ设置为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
Run Code Online (Sandbox Code Playgroud)
/^now at/ { nsec=$3; }
nsec/^jiffies/ { jiffies=$2; }
jiffiesEND {
print nsec, jiffies;
system("sleep 1");
' /proc/timer_list | awk '
awkNR==1 { nsec1=$1; jiffies1=$2; }
nsec并jiffies从以前的值awk,以nsec1和jiffies1分别/^now at/ NR>1 { nsec2=$3; }
nsec2/^jiffies/ NR>1 { jiffies2=$2; }
jiffies2END {
dsec=(nsec2-nsec1)/1e9;
djiff=(jiffies2-jiffies1);
print int(djiff/dsec);
' - /proc/timer_list
| 归档时间: |
|
| 查看次数: |
1546 次 |
| 最近记录: |