使用网络时 Mac 上的 kernel_task CPU 使用率很高;也会导致瓶颈

使用网络时 Mac 上的 kernel_task CPU 使用率很高;也会导致瓶颈

在 2016 年末的 MacBook Pro 上运行 10.12.5 时,我的kernel_task进程在从网络传输/接收大量数据时 CPU 使用率很高(150% 以上),我认为这是一个瓶颈。我使用的是 Anker USB-C 3 端口 USB 3 Hub + GbE 适配器,所以可能是驱动程序的问题,但当我使用 Wi-Fi 时,我的 CPU 使用率也会相应降低(相对于传输速度),而且我几乎达到了机场菜单栏 TX 速率(按住选项并单击机场图标)建议我应该获得的带宽上限。

起初我以为这是由于没有使用通过ssh隧道和 的硬件加密sftp,但我尝试了iperfiperf3和普通cat /dev/zero | nc host port。这些都会导致 CPU 使用率过高。直接连接(绕过我的交换机)没有效果。也不是电缆的问题。

在 macOS 上,联网时 CPU 使用率超过 150% 是否正常?我能做些什么来提高传输速率(最好是软件更改,但网络硬件也可以)?kernel_task似乎使用的处理器时间不超过 180% 左右,并且我的传输速率一直在增加,直到达到该利用率(如果我使用,可能会更快ssh)。我连接的计算机(Solaris、FreeBSD 和 Debian)从未使用超过 25% 的 CPU 来饱和它们之间的 GbE 连接,无论有没有ssh

答案1

对于这种硬件上的这种网络任务来说,有这么多是不正常的中央处理器时间用完用于网络单独。但由于这也与以下内容有关kernel-task

看到 WiFi 受到的影响比这台机器上的电缆连接要小得多:如果你看看你的机器产生的温度,你可能会发现它相当高。kernel_task可能与这里的网络无关,但在这种情况下试图帮助防止因过热而可能发生的任何损坏。

在这种情况下 kernel_task 只是做没有意义的事情,除了阻塞CPU 计算量过大,无法降低温度。请参见这里以获得更详细的解释,当然官方对此的立场。这最终归结为一个相当乐观的散热设计,但如果受到挑战,它就会有点失败。

假设您已经检查过风扇和散热片是否干净,没有被积尘堵塞:这意味着您最好的选择是尝试降低受影响机器的整体温度。将设备抬高,至少将其放在坚硬、平坦的表面上操作,可能用外部风扇吹它,启动空调可能都有所帮助。然后是提高风扇转速的软件解决方案。smcFanControl 或商业软件:TGPro、MacsFanControl,仅举几例。

相关内容