在 iOS 中,如何从正在运行的应用程序内部获取当前的 CPU 利用率?

发布于 2024-11-26 06:57:44 字数 660 浏览 3 评论 0原文

我正在寻找一种方法来获取 CPU 利用率数字,例如使用 C/C++/Obj-C 的仪器和活动监视器,以便我可以用它进行一些自动化测试。我正在寻找大约 1 秒的粒度,尽管 100 毫秒是理想的。看待这个问题的另一种方式是“活动监视器如何获取它所获取的信息?”。

以下是我到目前为止发现的内容:

  • 许多 *nix 等效项似乎不适用于 iOS
    • sysctl 没有 KERN_CPTIME
    • iOS 没有 proc 文件系统,所以我无法使用 /proc/stat。
      • 这消除了许多程序,例如 vmstat 和 iostat
  • MacOSX 的 vmstat 和 iostat 这样的程序 示例 iOS 中不存在。

I'm looking for a way to get the CPU Utilization numbers like in Instruments and Activity Monitor with C/C++/Obj-C so I can do some automated testing with it. I'm looking for somewhere around a 1 second granularity, though 100 ms would be ideal. Another way to look at this question would be "How does Activity Monitor get the info it gets?".

Here's what I have found out so far:

  • Many of the *nix equivalents don't seem to work with iOS
    • sysctl
      doesn't have KERN_CPTIME
    • iOS doesn't have the proc filesystem so I can't use
      /proc/stat.

      • This eliminates a lot of programs like vmstat and iostat
  • MacOSX's
    sample
    doesn't exist in iOS.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

远山浅 2024-12-03 06:57:44

我找到了答案。有一个未记录的 API,即带有 PROCESSOR_CPU_LOAD_INFO 风格的 host_processor_info(),它可以为您提供系统、用户、nice 和空闲时钟周期的数量。您必须减去先前调用的滴答数才能获得当前的 CPU 利用率。请记住对您获得的数组调用 vm_deallocate。

I found out the answer. There is an undocumented API, host_processor_info() with the PROCESSOR_CPU_LOAD_INFO flavor, that can give you the number of system, user, nice, and idle ticks. You have to subtract the number of ticks from a previous call to it to get the current CPU utilization. Remember to call vm_deallocate on the array you get.

少年亿悲伤 2024-12-03 06:57:44

你不能。 iOS 应用程序中不提供对此信息的标准 Un*x 访问。

You cannot. The standard Un*x access to this information is not available within an iOS app.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文