Hi folks (posting on platform-architecture-dev since this seems to be where a lot of base/ people hang out, feel free to forward).
I was looking a little bit at how the low levels of memory allocation works on Windows and I stumbled on a
feature (introduced in Windows 8.1) which promises to promises to decommit memory more aggressively and "optimize" each allocation heap's caches (whatever that means). I did a
really quick-and-dirty CL of it to see if there was any performance impact and Pinpoint came back with a resounding... maybe (the
first time it came back with an incredible +10% improvement in runs per second on Speedometer 1[1], which
didn't hold up on the second run, but Speedometer 2 also
indicated a slight improvement). The
impact on private footprint size is also a bit unclear - the size attributed to malloc increases by 8.7%, but the private footprint increases by only 7% (but I probably am not really running the right combination of stories in Pinpoint to be very representative). Setting the flag does not seem to have any negative effect on Windows 7.
- Whether I should continue running Pinpoint jobs on this (e.g. whether this HeapOptimizeResources flag has been tried before and rejected).
- Whether there's an upstream base/allocator OWNER who'd like to look into this a bit further (preferably, anybody who's managed to extract a useful memory number out of Pinpoint).
I'd also be interested in figuring out where memory consumption currently sits in the priority list versus performance, security, shipping new web platform features etc.
Best