我一直在阅读我的三星 Galaxy (sgh-i897) 上的 cpuinfo 文件来检索 bogoMIPS 值。刚刚学习如何解释这些信息。

最初我在加载线程中的主要 Activity 下执行此操作,并且始终获得 997.59 的值。然后我将文件读取方法移到服务中,因为直到很久以后我才在 UI 中需要它。一旦我这样做了,我读取的值就变得非常不同,并且似乎随着每个应用程序启动而变化,总是慢得多,比如在 300 到 500 范围内。

我的问题是:

  • Android OS/Linux 是否会导致测量 bogoMIPS 值并定期修改 cpuinfo 文件?
  • 如果是这样,是否有程序化的方式来强制它?
  • 为什么它会根据我是否从 Service 和主 Activity 线程读取文件而有所不同?
  • 最终,如果想要最正确的数字,是否最好直接编写我们自己的计时循环以在我们需要的时候自己获取它? (假设它一直在变化,由于 cpu 负载,无论如何?)
  • 最佳答案

    简短的回答:如果您没有破解内核,请不要打扰 BogoMIPS。

    BogoMIPS 是什么东西?

    操作系统内核执行的大多数任务都涉及等待硬件,或者最近在其他处理器内核上运行的进程。内核有多种方法可以在不同的时间尺度上等待。在最短的时间内,它通常只是“绕圈子跑”,在技术上更称为“忙等待循环”。

    BogoMIPS 基准测试只是一个繁忙的等待循环。内核运行这样的循环,使用非常可靠的挂钟对其进行计时,并确定运行繁忙的等待循环以等待特定时间所需的时间。

    为什么 BogoMIPS 值会发生变化?

    当计算机(在本例中为智能手机)不执行大量工作时,它很少需要非常快的处理器。当操作系统注意到它可以使用低于最大频率的频率时,它可能会将处理器降低到较低的频率。这是操作系统可以减少能源使用(与电池供电的计算机相关)和热量产生(与几乎所有事物相关)的方法之一。

    当然,当最大频率降低时,BogoMIPS 基准测试的结果不再相关,因为忙等待循环中的每次迭代都会花费更长的时间。内核将重新运行基准测试并更新 BogoMIPS 值,因此忙等待仍然是短时间等待的可靠方式。

    当处理需求增加时,类似的事情也成立,处理器需要再次节流。

    我应该如何使用这个 BogoMIPS 值?

    除非您正在破解处理时序的内核的某些部分,否则您不应该被 BogoMIPS 值所困扰。事实上,你应该使用任何 的 BogoMIPS 值。可能有一些方法可以使用 Android SDK 或使用 /sys 文件系统提供的信息来确定当前的 CPU 频率。

    关于android - bogoMIPS 值正在改变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11463448/

    10-11 16:32