5

iStat Menus shows me that my GPU RAM is being maxed out.

Activity Monitor doesn't seem to show VRAM usage.

enter image description here

  • What are you looking to do if you get a graph? The GPU internals are really managed by the drivers and not something you can "tweak". Or are you looking to know about instrtments so you can measure the rendering pipeline for core graphics or metal layer of graphics that Apple ships? – bmike Nov 10 '17 at 13:00
  • 1
    @bmike - My machine feels sluggish, and I see that my VRAM is maxed out ... so I was just wanting to know which app is responsible. (By quitting/launching apps I saw that Chrome uses nearly 1GB.) Trying to decide if I should upgrade to a 4GB card ... or more ... – Dan Nov 10 '17 at 13:25
  • Aah - so the VRAM has nothing to do with application launch times. You could disconnect all displays and profile that purely on CPU. You can also convince yourself chrome itself isn't the issue by making a new user account and timing how much RAM and time Chrome launches on a new user. (log out your old user first of course). – bmike Nov 10 '17 at 15:08
  • FWIW: I found this by the same symptoms as OP: sluggish performance, but the only red flag was the maxed-out video memory. It turned out that it was my laptop's lid being open. I closed the lid and performance resolved itself. – ranvel Aug 9 at 3:07
4

A TL;DR answer is that the GPU takes all the RAM and manages it, always. On an OS level, the window server decides what is visible and the kernel schedules any request for GPU assets.

So, you choose which programs run and they send their commands to the driver and then you get a variable amount of work between vsync events when the display updates.

We get to control external refresh rates / the pixel specifications of attached displays and the number of connected displays.


If you are developing an app or just really curious, you can use Instruments in Xcode to inspect precisely gets done on the CPU side and the calls out to the GPU using metal in this example below:

enter image description here

It shows you the CPU calls that then get passed down to the Metal Application calls which then call out to the graphics driver both of which perform rendering passes. This graph is the result of one window to http://www.decisionproblem.com/paperclips/index2.html in Safari on High Sierra later in the game when the screen is busy constantly. The color area is about 75 ms on the first image and if you zoom in to 3 ms or so, the CPU activity with the circled R are about 15 stack traces each so you can inspect the heaviest user of time in that moment. That's the lower image:

enter image description here

Evan at this level of detail, measuring what's using VRAM isn't even considered something worth measuring since the constraint that matters is time to render and the VRAM is what it is so you reduce what you load in to the VRAM to get the renders you need between vsync events so that the frame rate is where you want it to be (as a programmer or as someone benchmarking a program).

  • 1
    VRAM is certainly a good thing to measure if you have reason to believe something is causing a memory leak on the GPU... – iAdjunct Jan 3 at 3:59
  • On linux with an Nvidia GPU I can see precisely how much memory each process uses on the GPU with the nvidia-smi command. And on Windows GPU-Z will give you a total of Memory Used (and it's not totalled out). So maybe it could be possible on Mac. And like @iAdjunct said, it would be a very useful metric just like it is for CPU RAM. – Duvrai Mar 1 at 22:29

You must log in to answer this question.

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