Guides/Which app is using my CPU or memory

How to check CPU and memory usage on a Mac, app by app

Atta 🐬

Founder, Vitals

Published

Quick answer

Open Activity Monitor, click CPU and sort by % CPU, or click Memory and sort by Memory. The top rows are using the most right now. Choose View → All Processes, Hierarchically to see helper processes under the app that started them. Judge memory by the Memory Pressure graph, not Memory Used: green means the Mac has enough. Vitals, a system monitor for the Mac, shows one row per app with its helpers counted in, and which apps used the most over the last hours or 30 days.

How to see which app is using the CPU or memory

  1. 01 Press ⌘Space, type Activity Monitor and press Return.
  2. 02 Click CPU, then click the % CPU column header until the highest values are at the top.
  3. 03 Click Memory, then click the Memory column header the same way.
  4. 04 Choose View → All Processes, Hierarchically. Helper processes move under the app that started them, so a browser’s tabs sit under the browser.
  5. 05 Look at the Memory Pressure graph at the bottom of the Memory tab. Green means the Mac has enough memory, however full Memory Used looks.
  6. 06 For a meter that stays on screen, choose Window → CPU Usage. For each core over the last minutes, choose Window → CPU History.

To quit a busy app, select it and click the Stop button (the octagon with an ×) in the toolbar, then Quit. Use Force Quit only for an app that does not respond. Leave system processes such as kernel_task and WindowServer alone: they are busy because something else is.

Activity Monitor is good at one question: what is busy this second. It is less clear on the ones that usually follow. Which app does this process belong to? Is a high memory figure a problem? What was using the CPU an hour ago, when the fans came on? The table below says which figure answers which question, and the sections after it explain the numbers that confuse people most.

Which figure answers which question

QuestionWhere to lookWhat to read
Which app is using the CPU right now? Activity Monitor → CPU % CPU, sorted high to low. 100% is one full core
How busy is the whole Mac? Activity Monitor → CPU, bottom System, User and Idle, which add up to 100%
Which app is using the most memory? Activity Monitor → Memory Memory, sorted high to low, with View → All Processes, Hierarchically
Is the Mac short of memory? Activity Monitor → Memory, bottom Memory Pressure: green is fine, yellow is tight, red is short
Is the Mac using the disk as memory? Activity Monitor → Memory, bottom Swap Used, and whether it keeps growing
What was busy an hour ago? Activity Monitor → Energy 12 hr Power, the only column with any history

Why % CPU goes past 100%

The % CPU column is a share of one core, and every core counts to 100%. An app using four cores fully reads 400%, and on a Mac with ten cores the column can add up to 1,000%. The System, User and Idle figures under the list are shares of the whole Mac, which is why they always add up to 100% while the column does not.

On Apple silicon the cores are not equal. Efficiency cores take background work at a fraction of the power, so a process at 100% on one of them is using much less of the Mac than the number suggests. Choose Window → CPU History to see which cores are busy: the efficiency cores are grouped first.

Why one app shows up as dozens of processes

Browsers and apps built on web technology split their work into helper processes: one per tab or site, one for graphics, one for the network, one per extension. Chrome shows them as Google Chrome Helper and Google Chrome Helper (Renderer), and Safari shows its tabs by the site’s address. A single app can be 30 or 40 rows, and none of them looks large on its own. For browsers, see Chrome using too much memory.

View → All Processes, Hierarchically puts each helper under the app that started it, which tells you whose it is. Activity Monitor does not add them up, and adding the Memory column yourself overcounts, because memory shared between processes is counted in each of them. Treat the sum as a rough upper bound.

When high memory use is a problem, and when it is not

A Mac with Memory Used close to its Physical Memory is normal. macOS keeps recently used files in memory as Cached Files, and it compresses memory before it uses the disk. Unused memory is wasted memory, so a full bar means macOS is using what you paid for.

The figure that tells you whether the Mac is short is Memory Pressure. Green means everything fits. Yellow means macOS is compressing and swapping to keep up, which is fine for a while on Apple silicon. Red means it cannot keep up, and apps slow down or stop responding. Swap Used that keeps growing through the day points the same way. In Terminal, memory_pressure ends with the share of memory that is free across the whole Mac.

  • Pressure turns yellow or red during your normal work: the Mac needs fewer apps open at once, or more memory next time. Memory in Apple silicon Macs cannot be added later. See how to free up RAM.
  • Pressure turns red and stays there after you quit the app that caused it: restart the Mac.
  • One app’s Memory figure keeps climbing while you are not using it more: it is likely leaking. Quit and reopen it, and update it.

The system processes you will see near the top

Some of the busiest rows belong to macOS itself. They are usually doing work for something else, so the useful question is what set them off.

  • kernel_task: high CPU usually means the Mac is too hot, and macOS is keeping the processor busy so it has less time to heat up. See why a Mac’s fans get loud.
  • WindowServer: draws everything on screen. Busy when an app redraws constantly or several displays are connected.
  • mds_stores and mdworker: Spotlight indexing, heavy after a macOS update or a large copy.
  • photoanalysisd and mediaanalysisd: Photos analyzing your library. They finish on their own.
  • launchd: starts every other process. When it is busy, a login item or background task keeps restarting.

How to check CPU and memory in Terminal

Terminal gives the same figures without a window, which is handy over SSH or in a script.

  1. Run top -o cpu for a live list sorted by CPU, or top -o mem sorted by memory. Press q to quit.
  2. Run ps -Ao pid,pcpu,rss,comm -r | head -11 for the ten processes using the most CPU right now. Use -m instead of -r to sort by memory; the rss column is in kilobytes.
  3. Run memory_pressure for the memory statistics behind the Memory Pressure graph. The last line gives the share of memory that is free.

What actually helps

Most slowdowns have one cause, and the fix is to find it rather than to free memory in general.

  • Quit or update the app at the top of the list. For a browser, close the busy tab or turn off the extension behind it.
  • After a macOS update, give Spotlight and Photos a few hours on power to finish their work.
  • Skip memory cleaner apps and the purge command. They empty the file cache that macOS rebuilds straight away, and the Mac is slower until it does. For a Mac that is slow for other reasons, see why is my Mac so slow.
  • Restart when memory pressure stays red after you quit the apps that caused it, or when a process is stuck and Force Quit does not end it.

What Vitals adds

Vitals lists apps instead of processes, and remembers what each one used.

  • One row per app with every helper counted in: about 60 apps instead of about 1,000 processes
  • Click a browser to see its CPU and memory split into tabs, extensions, graphics and the browser itself
  • 30 days of CPU and memory for every app, ranked over the last hour, 12 or 24 hours, 7 or 30 days
  • A notification when a background app keeps the CPU busy, an app keeps growing in memory, or the Mac runs short of memory

Good to know

  • CPU can be shown per core, as Activity Monitor does, or as a share of the whole Mac, in Settings → General → Units.
  • Root and system processes, such as kernel_task and WindowServer, are measured when the optional helper is on.
  • Vitals does not sample a process or take a spindump. Activity Monitor still does.
Get Vitals for $9 $9 during the launch, $29 after it. 14-day refund.

Questions people ask

How do I check CPU usage on a Mac?

Open Activity Monitor, click the CPU tab and sort by % CPU. The top rows are using the most. The System, User and Idle figures at the bottom show how busy the whole Mac is. For a live view in Terminal, run top -o cpu.

How do I see how much RAM each app is using?

Open Activity Monitor, click Memory and sort by the Memory column. Choose View → All Processes, Hierarchically so an app’s helper processes sit under it. Activity Monitor does not total them; Vitals does.

Why is my Mac using so much memory with nothing open?

macOS keeps recently used files in memory as Cached Files and holds some for itself as Wired Memory. That memory is handed back the moment an app needs it. Check Memory Pressure: if it is green, nothing is wrong.

What is normal CPU usage for a Mac?

At rest, Idle at the bottom of the CPU tab is usually above 90%, with short spikes as apps and background tasks run. A single app that stays near the top while you are not using it is worth a look.

Is yellow memory pressure bad?

Not by itself. It means macOS is compressing memory and using swap to keep up, which Apple silicon handles well. If it is yellow during your normal work every day, or turns red, you are short of memory for what you run.

Is there an easier way to see CPU and memory per app on a Mac?

Vitals shows one row per app with its helper processes counted in, so a browser or Slack has one figure for CPU and one for memory, and it keeps 30 days of both for every app.

In the glossary

More guides