0

My kernel_task process has high CPU usage (150%+) on a late 2016 MacBook Pro running 10.12.5 when transmitting/receiving lots of data from the network and I think it's a bottleneck. I'm using a Anker USB-C 3-port USB 3 Hub + GbE adapter, so maybe it's a driver thing, but my CPU usage is also proportionately lower (relative to transfer speed) when I use wi-fi and I pretty much top out the bandwidth that the airport menubar TX rate (from holding option and clicking the airport icon) suggests I should be getting.

At first I thought it was due to lack of use of hardware encryption via an ssh tunnel and sftp, but I've tried iperf, iperf3, and plain cat /dev/zero | nc host port. These all result in high CPU usage. Direct connection -- bypassing my switch -- has no effect. It's not the cable, either.

Is CPU usage of 150%+ normal for networking on macOS? And is there anything I can do to improve my transfer rates (prefer software changes, but networking hardware is okay, too)? kernel_task appears to not use more than 180% or so of processor time and my transmission rate keeps increasing until I hit that utilization rate (which can be sooner, if I'm using ssh). The computers I'm connecting to (Solaris, FreeBSD, and Debian) never use more than 25% of CPU to to saturate a GbE connection amongst themselves, with and without ssh.

2
  • Seems likely to be something silly with your Anker USB 3 GbE dongle. I've never seen CPU usage like that with my Apple Thunderbolt GbE dongle.
    – Spiff
    Commented Aug 16, 2017 at 3:38
  • Thanks! I'll try picking up a different adapter. The only Mac I have with gigabit ethernet built in is a 2003 PowerBook which doesn't have the issue so I wasn't sure :)
    – lungj
    Commented Aug 16, 2017 at 3:57

1 Answer 1

0

For that kind of network task on this kind of hardware it is not normal to have so much CPU time used up for networking alone. But since this also about kernel-task:

Seeing that WiFi is much less affected then cable connections on this machine: If you look at the temperatures your machine generates then you might find it pretty high. kernel_task is probably not so much about networking anything here but in this case trying to help prevent any damage that might occur through overheating.

In this case kernel_task just does nothing meaningful except blocking too much computation on the CPU to lower the temps. See here for a fuller explanation and of course the official stance on this. It's ultimately down to a rather optimistic thermal design that falls a bit flat if challenged.

Provided you have already checked that your fans and fins are clean and not blocked with cuft: That means your best bet is to try lowering the overall temperature of the affected machine. Raising the unit, at least operate it on a hard, flat surface, may be blow on it with an external fan, cranking up an AC might all help here. Then there are the software solutions to raise the fans rpms. smcFanControl or the commercial ones: TGPro, MacsFanControl, to name a few.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .