And to be more specific : Could TOS.description be extended with a rendering of the specific Windows edition?
(Here's a piece of code that does exactly that : http://msdn.microsoft.com/en-us/library ... s.85).aspx)
(How silly btw, that Windows itself doesn't have an API to read the most complete version-string from...)
The reason why I would like to know this additional piece of versioning information, is to be able to look up the various limits a given Windows edition implies (like the maximum amount of physical memory supported by said edition - see http://msdn.microsoft.com/en-us/library ... s.85).aspx ).
I have no idea if these (and other) limits need to be coded out in one big case-statement, or if there's a way to read these limits right from the OS itself. But in any case it could be a good idea to add some tooling around this too...
And ideally it'd be even better if we would be able to tune THAT Windows parameter from within our code!
The thing is, now that we're running our software on 64 bit Windows, we've increased the amount of memory our processes may use.
But instead of improving performance, we seem to suffer even more from page-swapping than before we switched to 64 bit - and that's even though there's plenty of physical memory available in the (bare metal) machines we use! (Think in the order of 128 GB of memory and up)
Any ideas on what might be the cause for this (unwanted and premature) page-swapping?
Oh, and yeah, sorry if this is way out of context - Please point me in the right direction for getting an answer or solution for this rather unexpected and unpleasant behaviour...
(Note, that most of the memory we use, is evenly devided between read-only memory-mapped files, and normally allocated virtual memory...)
I could probably add the code from that MS article to "madBasic.OS", but would it really help you that much? Do you plan to add a big "if OS.description = '...' then" for every possible combination of descriptions?
Have you looked into GlobalMemoryStatusEx? Doesn't that return the information you need?
As for GlobalMemoryStatusEx, this API returns what's physically available to Windows, not how much is actually present in the machine, nor does it tell the upper limit on the physical memory this Windows edition can handle.
As for the limit on how much (physical) memory each proces may use, there are a few things mentioned about that in the NT internals book, but it's rather complicated with all sorts of details about page pools, swap space, page table entries, a lazy writer, etc, etc, etc.
What I'm looking for is just a simple setting somewhere, that allows my proces to use loads of virtual memory, and not having to worry that there's a limit on how much physical memory is reserved for that (as this limit I'm experiencing still seems to result in swapping, which is NOT good for performance).
It makes no sense either, as there's plenty of physical memory present, and there are only a handfull of other processes that only use a fraction of the memory my process needs - so, why the swapping?!? No-one can tell me yet...
Anyway, thanks for the feedback, and good luck with adding Windows edition-details to TOS!