Quick Answer
You can monitor system performance on a Mac directly from Terminal using built-in commands like top, htop, vm_stat, iostat, and fs_usage. These tools give real-time visibility into CPU usage, memory pressure, disk I/O, and network activity without needing third-party apps.
Terminal-based system monitoring on macOS is more powerful than most users realize. Whether you are troubleshooting a slow Mac, identifying a memory leak, or just curious what is consuming your resources, the command line gives you granular, real-time data that GUI tools often obscure or simplify too heavily.
Core Commands for CPU and Process Monitoring
The most immediately useful command is top, which displays running processes ranked by CPU usage in real time. Press o while top is running to change the sort order - type cpu to sort by CPU consumption and identify which process is spiking your cores. To quit, press q.
For a more readable experience, htop is available via Homebrew (brew install htop) and presents the same data with colour-coded bars, mouse support, and easier navigation. Once installed, run it with just htop in Terminal.
To check CPU temperature indirectly (macOS does not expose sensor data natively via simple commands), watch for sustained 100% CPU usage in top combined with fan speed increases - these are reliable proxies for thermal throttling. Apple Silicon Macs can also be monitored with sudo powermetrics --samplers cpu_power which shows actual CPU wattage and efficiency core versus performance core utilization.
Memory and Disk I/O Monitoring
Memory pressure on macOS is best read with vm_stat. Run vm_stat 1 to get output every second. The key numbers to watch are "Pages swapped out" - if this climbs steadily, you are hitting RAM limits and the system is using disk swap, which causes significant slowdowns.
For disk activity, iostat -d 1 shows disk read/write throughput per second. This is useful when your Mac feels slow and you suspect a background process is hammering the SSD. High write rates when nothing obvious is running often point to Time Machine backups, Spotlight indexing, or iCloud sync.
fs_usage is more granular and shows file system calls as they happen. Run it as sudo fs_usage and filter with grep: sudo fs_usage | grep -i spotlight to see if Spotlight is the disk culprit.
Network Monitoring From Terminal
For network activity, nettop is the built-in macOS tool that shows per-process network usage. Run nettop -m tcp to filter to TCP connections only. This is particularly useful for identifying apps that are unexpectedly phoning home or consuming bandwidth in the background.
netstat -an lists all active network connections and listening ports, useful when diagnosing connection issues or checking what services are accepting incoming connections.
For a live bandwidth view, ifstat (available via Homebrew) provides a clean per-interface throughput display, similar to how Windows Task Manager shows network graph data.
Frequently Asked Questions
Q: How do I find what is slowing down my Mac using Terminal?
A: Start with top -o cpu to sort by CPU usage and identify high-consuming processes. Then check vm_stat for memory swap activity and iostat -d 1 for disk saturation. Between those three commands, you can identify the bottleneck in most cases.
Q: Is htop better than top on Mac?
A: htop is more user-friendly with colour coding and easier navigation, but requires installation via Homebrew. The native top is always available without installation and is sufficient for most monitoring tasks. For regular use, htop is worth the one-time setup.
Q: Can I monitor Mac GPU usage from Terminal?
A: Partially. sudo powermetrics --samplers gpu_power shows GPU power draw on Apple Silicon Macs. For detailed GPU utilisation on Intel Macs or discrete GPU monitoring, Activity Monitor's GPU History view or third-party tools provide clearer data than Terminal commands.
Ready to Find Your Perfect Match? Upgrade your Mac or PC setup with the best tech deals available in South Africa