intel_gpu_top(1)

πŸ’… intel_gpu_top β€” NAME ✨

okay so <pink>intel_gpu_top</pink> is that girl who will literally show you a top-like summary of your Intel GPU's usage. it's giving "htop but make it graphics card." from the General Commands Manual, no cap. πŸ’–


🫢 SYNOPSIS

intel_gpu_top [OPTIONS]

that's it. that's the whole vibe check. ✨


🌸 DESCRIPTION

intel_gpu_top is the tool you use to see what's going on with your Intel GPU's usage. she's nosy in the best way. πŸ‘€

the data she shows you is collected from performance counters (PMU) β€” and those are exposed by i915 plus other platform drivers, like RAPL (which is the power one πŸ“) and Uncore IMC (which is the memory bandwidth one 🌈).

so like, it's not making numbers up. it's reading real counters. iconic behavior honestly. πŸ‘‘


πŸŽ€ OPTIONS

  • -h β€” show help text. your "wait what does this do again" button. 🫢
  • -c β€” output CSV formatted data. for the spreadsheet girlies. πŸ“Š
  • -J β€” output JSON formatted data. for the script girlies. 🧚
  • -l β€” list plain text data. no frills, just facts. ✨
  • -o <file>, or -o - β€” write to the file you name instead of standard output. you can also pass - to explicitly say "yeah, standard output, that's the one." πŸ’…
  • -s <ms> β€” refresh period, in milliseconds. how often she checks back in. ⏱️
  • -L β€” list the available GPUs on your system. a whole roster. 🌟
  • -d β€” select a specific GPU using one of the supported filters (scroll down to DEVICE SELECTION, bestie, it's cute down there πŸ’–)
  • -p β€” default to showing physical engines instead of aggregated classes. the detailed mode. πŸ”
  • -m β€” default to showing all memory regions separately. no lumping, we're separating. 🧺
  • -n <number> β€” set the application running time to <number - 1> * <refresh period>. passing 0 (that's the default) or a negative number will run it in an infinite loop until you break out with q, or Ctrl+C, or send a signal. and if you're using -c, -J or -l, it'll print the info <number> times instead. 😭
ngl the -n math is <number - 1> * <refresh period>, not <number> * <refresh period>. read it twice. i'm not kidding. 🫠

⌨️ RUNTIME CONTROL

these are the keys you can press while she's running. supported keys:

  • 'q' β€” exit from the tool. bye bestie πŸ¦‹
  • 'h' β€” show interactive help.
  • '1' β€” toggle between aggregated by engine class and physical engine mode.
  • 'n' β€” toggle display of numeric client busyness overlay.
  • 's' β€” toggle between sort modes (runtime, total runtime, pid, client id).
  • 'i' β€” toggle display of clients which used no GPU time. (yes, the freeloaders get shown too πŸ’€)
  • 'H' β€” toggle between per PID aggregation and individual clients.
  • 'm' β€” toggle between aggregated memory regions and full breakdown.

πŸ” DEVICE SELECTION

so on systems where you've got multiple GPUs (main character problems πŸ’…), you can pick exactly which GPU gets monitored. you can select by sysfs path, by drm device node, or by using various PCI sub filters. here's the lineup:

sys β€” syntax: sys:/sys/devices/pci0000:00/0000:00:02.0 select using the sysfs path. that's the criteria. πŸ—‚οΈ

drm β€” syntax: drm:/dev/dri/<node> select using the /dev/dri/* device node. πŸŽ€

pci β€” syntax: pci:[vendor=%04x/name][,device=%04x][,card=%d] select using the PCI address. vendor is a hexadecimal number or a vendor name. 🌈


🧾 JSON OUTPUT

JSON output will be correctly terminated when the tool cleanly exits. but if it doesn't exit cleanly? then one square bracket needs to be added before parsing. yes. one. bracket. πŸ™ˆ

so if your parser is choking on JSON that looks incomplete, that's why. add the bracket. it's a whole thing. 😭

πŸ’€ LIMITATIONS

  • Xe driver devices are not supported β€” please use the gputop tool instead. she said "not my department" fr fr.
  • not all metrics are supported on all platforms. where a metric is unsupported, its value will be replaced by a dashed line. so a - means "no data," not "zero," bestie. important distinction. ⭐
  • non-root access to perf counters is controlled by the perf_event_paranoid sysctl. so like, permissions exist. πŸ‘‘

πŸ› REPORTING BUGS

found a bug? report it on fd.o GitLab: <https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues> β€” go tell them directly, they wanna know. 🫢


🌟 Author

IGT Developers <igt-dev@lists.freedesktop.org>


2009,2011,2012,2016,2018,2019,2020,2023,2025 Intel Corporation


and that's the whole page, bestie πŸ’œ this was intel_gpu_top from igt-gpu-tools 2.6, dated 2023-01-27 β€” slay, go monitor some GPUs, and remember: the dashes mean unsupported, not zero. mwah. πŸŽ€βœ¨

πŸ“¦ where this page comes from