July 6, 2005

Steam Memory Usage Myths Debunked

I've been seeing a metric shit-ton of posts online about the Steam client from Valve using a lot of memory...57Mb of RAM just for the distribution client is their claim. I figured, what the hell...I've got Steam on this machine, let's check their claims.

This is from Process Explorer looking at my Steam instance, which has the Half-Life 2 Gold Package and a few mods:

Steam using ~32Mb

According to this snapshot, Steam is currently using 32.2Mb of memory (the 14,128K for Private Bytes, and the 18,812K Working Set). At its peak, Steam was using 41.2Mb of memory (18,776K for Private Bytes, 23,368K Working Set).

Okay, no biggie. That's 32Mb of its own address space used...but how much of that is being shared among other processes? After all, if a DLL is loaded in Windows, it's loaded once into memory, then mapped into the appropriate address space in other processes, so it's really only using memory once.

We know for a fact that Steam is currently using 13.8Mb for itself. That's what the Private Bytes is for. That is memory that the Steam Client has allocated to itself and is currently using. Some of that may have been swapped to disk, but that amount is exclusively Steam.

So now for the Steam libraries being loaded in...
dbg.dll (Steam DLL, 68Kb)
FileSystem_Steam.dll (Steam DLL, 120Kb)
serverbrowser.dll (Steam DLL, 1.08Mb)
Steam.dll (Steam DLL, 3.51Mb)
steam.exe (Steam Executable, 1.18Mb)
steamclient.dll (Steam DLL, 260Kb)
SteamUI.dll (Steam DLL, 1.91Mb)
tier0_s.dll (Steam DLL, 192Kb)
TrackerNET.dll (Steam DLL, 152Kb)
trackerUI.dll (Steam DLL, 560Kb)
vgui2.dll (Steam DLL, 252Kb)
vstdlib_s.dll (Steam DLL, 196Kb)
That's it for Steam-related DLL's. The rest is all part of Windows and the same DLL's are loaded by Explorer. So that means that Steam's working set is truly only 9.48Mb.

So Steam's true cost is a total of 23.28Mb, which is less than half the memory cost being quoted online, or about the equivalent of MSN Messenger 7.0, and that cost only exists while the Steam client is loaded.

If you don't believe me, that's fine. You don't have to. Download Process Explorer from SysInternals and do the tests yourself. This is what I got, and it's all documented here.

No comments: