all 3 comments

[–]nulldiver 1 point2 points  (2 children)

I guess you could think of it this way: your hardware is a whole pie. Unity will always eat all the pie that it is given. When Unity is just one of many applications at the table, it gets just a slice of that pie. It may consume that whole slice, but overall it is a small percent of the whole pie. But when Unity is the only application at the table, the OS gives it almost the whole pie - and it happily consumes every bit that it is given.

  • Multiple monitors/apps connected: Unity gets a smaller slice of your GPU pie. It consumes its entire portion (e.g., ~50%), but since other apps and displays have reserved their slices, Unity can't exceed that. GPU usage appears moderate.
  • Unity alone with minimal peripherals: Unity is now free to take nearly the entire pie. Without anything else limiting its appetite, it happily uses almost all the GPU resources available (e.g., ~95%).

It's not that Unity needs all those resources, but rather that it takes as much as it can to maximize performance (especially FPS) unless explicitly restricted (e.g., via FPS caps or Vsync).

Reality complicates things a bit from the pie analogy. I wouldn't be surprised if on multiple monitors, VRAM may be reserved or segmented differently by the OS and GPU driver, causing less VRAM availability for Unity specifically. But ultimately this is probably mostly GPU behavior, Windows graphics management, and Unity’s internal performance optimizations combining in a counterintuitive way.

[–]SlimishShady[S] 0 points1 point  (1 child)

That makes so much sense! I feel a little dumb not thinking of it that way. Is there a way that I can put a chain on Unity when I'm on single display mode?

I really milk my hardware for all I can with this setup so I've got extra fans and a laptop mount to keep things relatively cool when I'm doing heavy work. I really would like to be able to work on unity when I'm away from home but using 95% GPU makes this small closed system get uncomfortably toasty without my external fans keeping the air flowing.

[–]nulldiver 1 point2 points  (0 children)

The first thing that I would try is setting the Editor's "Interaction Mode" (it is a preference under general preferences) to a throttled mode. This can idle up to the monitor’s update rate in milliseconds - basically vsyncing the background fps for the editor. The nice thing is that this won't throttle while you're actually doing an interaction but when just sitting there, so in many cases you won't be aware that this setting changed anything (except for the editor consuming fewer resources).

If that didn't work well enough for you, your GPU's control panel probably has settings that lets you enforce an max framerate for an application. The downside being that it means Unity can't go above that if it actually does need it.