gpt4 book ai didi

android - 如何使用 ADB shell 获取 HZ

转载 作者:太空狗 更新时间:2023-10-29 16:05:12 27 4
gpt4 key购买 nike

如何通过ADB shell知道Android内核的HZ值? (没有任何编码)

我检查了How to check HZ in the terminal? ,但这不适用于 Android ADB shell。

有什么建议吗?

最佳答案

理论

您可以通过以 jiffies 为单位的耗时除以以 为单位的耗时来得出内核空间 HZ 值。

您可以从/proc/timer_list 文件中获得以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值可能略有偏差;您可能想多次执行此计算并取平均值。大多数现代内核都有内核空间 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
  • /^now at/ { nsec=$3; }
    • 保存纳秒数到变量nsec
  • /^jiffies/ { jiffies=$2; }
    • jiffies 的数量保存到变量jiffies
  • END {
    • print nsec, jiffies;
      • 打印出 nanosecondsjiffies 以空格分隔
    • system("sleep 1");
      • 休眠一秒,防止我们计算HZ值时被0除
  • ' /proc/timer_list | awk '
    • 处理/proc/timer_list文件
    • 将输出管道输出到 awk 的新实例
  • NR==1 { nsec1=$1; jiffies1=$2; }
    • 设置nsecjiffies以前的值 awknsec1jiffies1分别
  • /^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);
      • 将 HZ 值打印为整数
  • ' - /proc/timer_list
    • 处理标准输入,然后处理/proc/timer_list文件

关于android - 如何使用 ADB shell 获取 HZ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17337481/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com