为什么内核可能会受到限制?

为什么内核可能会受到限制?

我的 MBR 开始冻结一个多小时,我发现我的内核报告受到限制,例如(这只是 2 秒的示例)

$ sudo fs_usage | | grep -i throttled
12:26:45    THROTTLED    0.015159   kernel_task 
12:26:45    THROTTLED    0.015606   kernel_task 
12:26:45    THROTTLED    0.016328   kernel_task 
12:26:45    THROTTLED    0.014862   kernel_task 
12:26:45    THROTTLED    0.014797   kernel_task 
12:26:45    THROTTLED    0.015583   kernel_task 
12:26:45    THROTTLED    0.014794   kernel_task 
12:26:45    THROTTLED    0.014668   kernel_task 
12:26:45    THROTTLED    0.014915   kernel_task 
12:26:45    THROTTLED    0.014555   kernel_task 
12:26:45    THROTTLED    0.014660   kernel_task 
12:26:45    THROTTLED    0.015547   kernel_task 
12:26:45    THROTTLED    0.015364   kernel_task 
12:26:45    THROTTLED    0.015073   kernel_task 
12:26:45    THROTTLED    0.014832   kernel_task 
12:26:46    THROTTLED    0.015649   kernel_task 
12:26:46    THROTTLED    0.016643   kernel_task 
12:26:46    THROTTLED    0.014496   kernel_task 
12:26:46    THROTTLED    0.015488   kernel_task 
12:26:46    THROTTLED    0.014576   kernel_task 
12:26:46    THROTTLED    0.015531   kernel_task 
12:26:46    THROTTLED    0.015224   kernel_task 
12:26:46    THROTTLED    0.015182   kernel_task 
12:26:46    THROTTLED    0.015443   kernel_task 
12:26:46    THROTTLED    0.015166   kernel_task 
12:26:46    THROTTLED    0.015435   kernel_task 
12:26:46    THROTTLED    0.015105   kernel_task 
12:26:46    THROTTLED    0.015091   kernel_task 
12:26:46    THROTTLED    0.015131   kernel_task 
12:26:46    THROTTLED    0.015259   kernel_task 
12:26:46    THROTTLED    0.014865   kernel_task 
12:26:46    THROTTLED    0.015681   kernel_task 
12:26:46    THROTTLED    0.014455   kernel_task 
12:26:46    THROTTLED    0.015251   kernel_task 
12:26:46    THROTTLED    0.015928   kernel_task 
12:26:46    THROTTLED    0.015053   kernel_task 
12:26:46    THROTTLED    0.014699   kernel_task 
12:26:46    THROTTLED    0.015251   kernel_task 
12:26:46    THROTTLED    0.014499   kernel_task 
12:26:46    THROTTLED    0.015589   kernel_task 
12:26:46    THROTTLED    0.015166   kernel_task 
12:26:46    THROTTLED    0.015422   kernel_task 
12:26:46    THROTTLED    0.018772   nsurlsession
12:26:46    THROTTLED    0.029125   kernel_task 
12:26:46    THROTTLED    0.014671   kernel_task 
12:26:46    THROTTLED    0.014763   kernel_task 
12:26:46    THROTTLED    0.015114   kernel_task 
12:26:46    THROTTLED    0.009341   iStat Menus 
12:26:46    THROTTLED    0.008501   kernel_task 
12:26:46    THROTTLED    0.014090   kernel_task 

我已经将风扇控制增加到最大(通过 iStat 菜单),因为我读到它可能与 CPU 温度高有关,但它没有任何区别。仅杀死一些任务有一点帮助。

我知道如何终止任务或重新启动计算机来临时解决问题。不过我更感兴趣什么确切地是内核节流,为什么会发生这种情况(为什么它被限制以及什么阻止它不被限制)以及我可以采取什么行动或如何解除它?也许有一些选项可以让它不那么严格或禁用它,或者进一步降低 CPU 温度可能会有所帮助?


额外细节:

$ uname -a
Darwin MBP.local 15.2.0 Darwin Kernel Version 15.2.0: Fri Nov 13 19:56:56 PST 2015; root:xnu-3248.20.55~2/RELEASE_X86_64 x86_64 i386 MacBookPro11,3 Darwin
$ top | head
Processes: 464 total, 19 running, 8 stuck, 437 sleeping, 4157 threads 
2016/05/25 12:31:44
Load Avg: 30.72, 39.86, 29.86 
CPU usage: 14.86% user, 46.0% sys, 39.12% idle 
SharedLibs: 84M resident, 18M data, 7760K linkedit.
MemRegions: 360850 total, 2901M resident, 55M private, 435M shared.
PhysMem: 16G used (8494M wired), 5664K unused.
VM: 1406G vsize, 528M framework vsize, 3900541086(0) swapins, 3913990343(0) swapouts.
Networks: packets: 136234033/128G in, 133429405/73G out.
Disks: 288046480/15T read, 220716626/15T written.
$ macosver -h | tail -n1
ProductVersion 10.11.2

答案1

fs_usage 显示有关文件系统使用情况(以及相关内容)的信息。鉴于此,我怀疑 fs_usage 中的 THROTTLED 表明它是磁盘访问受到限制,而不是 CPU (尽管 THROTTLED 没有明确记录在手册页)。 OSX 降低了空闲应用程序的 I/O 吞吐量,以便为活动应用程序提供更好的性能(请参阅这篇 Ars 文章)所以这不一定是问题。

我认为这里重要的是,这并不是证据,无论怎样,你的 CPU 由于热量而受到限制,这导致了你的挂起。

不过磁盘 I/O 可能值得一看。在大多数传统的 UNIX 中,低磁盘吞吐量可能会导致明显的挂起 - 也许这就是您所看到的 - 但您需要进行更多调查 - 或者我们只能推测。

相关内容