14

I was stunned to discover that Mac OS X kernel can consume 750MB of RAM. A few related questions:

clarified the issue a little bit, but one question remains: the claim that video memory for onboard integrated graphics is marked as used by kernel as well.

Is it really true? Is VRAM included in the number shown by Activity Monitor for kernel_task?

5
  • As a note, my screen shot showing 750 MB of ram for the Kernel was a MacBook Pro, Retina, 13-inch, Early 2013 with "Intel HD Graphics 4000 1024 MB" as the only GPU and the CPU is 2.6 GHz Intel Core i5. I'll try to run sysdiagnose and see if I can break down your core question.
    – bmike
    Commented Oct 24, 2013 at 19:03
  • @bmike: So, since you have 1GB VRAM and kernel_task uses "only" 750MB, we just established that all 750MB come from the usual RAM, not VRAM. Right?
    – sds
    Commented Oct 24, 2013 at 19:20
  • I have 1.8GB taken by the kernel, is this bad ?
    – Render
    Commented Nov 9, 2013 at 11:40
  • @Render a bit late, but on a retro machine with 10.9 + 16GB main mem + iris graphics myself I'm seeing ~1.3GB for kernel_task. I think anything <= ~2GB is normal, given that vram is likely included as Artem's answer mentions. As long as it's stable and not ballooning, unlikely to be a kernel-level memory leak even if you've got a bunch of kexts installed. Also 10.9 started doing funky things with mem-management, it's more aggressive about hoarding it.
    – 1110101001
    Commented Apr 15 at 5:30
  • @1110101001 "a bit late" is a bit of an understatement xD
    – Render
    Commented May 10 at 13:25

2 Answers 2

3

What version of Mac OS X are you running?

The kernel_task in Mac OS X 10.9 Mavericks takes 1.07 GB of RAM on my 2012 MacBook Pro (non-Retina) with Intel HD4000 integrated graphics and 16GB of system RAM. Yes, this is completely necessary. If you have more physical RAM, then Mac OS X will use a lot for kernel_task in order to make the system run optimally.

With each new version of Mac OS X over the years, the kernel_task has taken more and more memory to run Mac OS X.

In my experience, if you are running Mac OS X 10.8 Mountain Lion, your Mac needs to have more than 4GB of system RAM to run optimally (without the OS needing to use the swapfile on the hard disk constantly, which degrades performance speed). It now appears that your Mac needs more than 6GB RAM to run Mac OS X 10.9 Mavericks effectively.

The amount of RAM needed for Microsoft Windows 8.0 and 8.1 are comparable. This is simply what is required for the newest personal computer operating systems in 2013.

Please note that many system functions run under kernel_task, and the list of what is running on your Mac changes based on what you are using your Mac for.

I found a good explanation for you, in "Kernel_task taking up RAM in OS X" from CNet in 2011. A quote:

...you will see another process called "kernel_task" that also will regularly use a few hundred megabytes of real RAM and seem to increase its RAM footprint with system usage.

The kernel in OS X is the software architecture that is responsible for handling resources that processes and programs need. These include the management of multitasking scheduling, virtual memory, system input and output, and various communication routines between processes. In addition, the kernel can be modified and given enhanced functionality by loading kernel extensions (kexts) to supply system-level management of features like Bluetooth and Wi-Fi, graphics processors, third-party hardware, access to peripheral devices, and special filesystem support. In essence, the kernel is responsible for running your hardware and making the hardware resources available to applications and system services.

...the process "kernel_task" may take up a large amount of system memory. When the system starts up, even though you may have kernel extensions loaded, not all of the services are active. The system may be ready to use them, but will not load them fully until needed. Therefore, if you initially start up your system and check Activity Monitor, you may see the kernel_task process taking up a relatively small amount of RAM. When you then start using your system and activating features like your iSight camera, Wi-Fi services, switching GPUs, and using external devices, then the kernel_task will make use of the resources for these devices and will grow in size.

3
  • 2
    how does this answer the actual question I asked about VRAM?
    – sds
    Commented Oct 24, 2013 at 12:26
  • I believe that the original wording of your question, as I read it, was "What is included under kernel_task?" and that is what I was attempting to answer. Since that time, you have reworded the title of the question.
    – user9290
    Commented Oct 24, 2013 at 21:42
  • 2
    I am sorry my question was confusing. I know what a kernel is and does, my question was about memory usage reporting.
    – sds
    Commented Oct 25, 2013 at 2:54
3

I guess, it is included. I have a MBP 13" 2015 with Iris, and the kernel_task that takes a lot of memory as well, I was investigating the situation and I've discovered a marvellous zprint command. It prints kernel memory zones usage, I see 2 entries taking most of the memory for me:

  • com.apple.iokit.IOAcceleratorFamily2 - 758044K
  • vm.pages.array - 221204K

Sadly, I failed to found reliable information on the IOAcceleratorFamily2 (and failed to find any information on vm.pages.array), but the name suggests it has to do something with I/O and acceleration. From that info I guess, it's part of the memory, that is responsible for video acceleration and is dedicated for the Iris's image processing needs.

I did a little test, starting a screen recording and two 4K youtube videos in parallel: com.apple.iokit.IOAcceleratorFamily2 rose to 1.1G in a matter of seconds, and after I stopped the recording and the videos, it fell down to 630M. Thus, I think, it's very likely, that it is responsible for VRAM.

4
  • So there's no way to reduce that almost-gigabyte of RAM? Shouldn't the video chipset have a dedicated memory? Taking minimum 800MB from the RAM is a crime :( Commented Mar 21, 2019 at 14:13
  • Note that even if the kernel reports VRAM being included in kernel_task it doesn't actually mean all that would actually be included in physical RAM needed. To get exact physical RAM usage, you would need to track physical pages of RAM (that is, look though the whole virtual memory address space and verify which part is actually backed by real physical RAM). The real question should be "how much real RAM is available to user mode processes?" instead of "how much RAM kernel reports to use for internal purposes?". Commented Oct 25, 2023 at 10:49
  • @Kamafeather if the chipset has dedicated memory then it might be "wasting" memory in its own way. Would that be better? Maybe yes, but probably not. There's lots of things to consider across the whole system.
    – hmijail
    Commented Feb 6 at 6:26
  • Yup IOAccelerator kexts are used for hw graphics acceleration, so are basically synonymous with gpu interfacing. On machines with unified main-memory/vram it's up to the kernel to set aside a portion reserved for vram, so this should theoretically be included as part of the zprint dump. Interestingly I don't see a section for IOAcceleratorFamily on 10.9, I think more detailed per-kext logging was added in later OSs.
    – 1110101001
    Commented Apr 15 at 5:26

You must log in to answer this question.

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