Thanks, I'll look into it.
The advice and descriptions for enblocal mainly all came from Keithinhanoi himself and my own investigation on the ENB Dev forums. Because of this I find it to be mostly rock solid because it all came from him or Boris himself.
Hey Tech - alt3rn1ty was actually referring to a recent post by me on the thread about Sheson's Memory Blocks Log and despite what I've said before regarding ExpandSystemMemoryX64, I now believe that the STEP ENB Guide's recommendation should be to set it to false.
The reason for this is that STEP also recommends increasing the "Block 1" heap allocation in the SKSE.ini, and with help from hishtup, I have confirmed there is direct relationship between the ExpandSystemMemoryX64 setting and using Sheson's Memory Patch fix (with either implementation - SSME or SKSE) to increase the "Block 1" allocation.
If ExpandSystemMemoryX64 is set to true, after the "Block 1" allocation is set above a certain number, Skyrim will crash just before the main menu. For me, this happens when "Block 1" is over 512MB, though I've read user reports of it happening closer to or just past 768MB.
Before hishtup told me about his findings, the only way that I knew of to allow Skyrim to run after the "Block 1" allocation causes it to crash is to increase the "Block 2" allocation to 512MB. However, using Sheson's Memory Blocks Log and other tools, I and other people have observed Skyrim still never actually uses over 256MB for "Block 2". So that additional 256MB allocated to Block 2 is essentially wasted.
Then, after I posted an explanation of how the Memory Blocks Log tool works with a bit of history regarding Sheson's Memory Patch Fix, hishtup told me that if ExpandSystemMemoryX64 is set to false then Skyrim won't crash based on the "Block 1" allocation. From this, I realized that increasing the "Block 2" allocation should not be necessary.
So, I did some tests and can confirm that this is correct. With ExpandSystemMemoryX64, set to false, I can set my Block 1 allocation even over 1GB, and Skyrim doesn't crash when started, and I do not need to increase the "Block 2" allocation.
In retrospect, this make complete sense, because based on the source code of the ExpandSystemMemoryX64 feature that Boris posted on the ENB forums, it uses a system memory allocation function call (MEM_TOP_DOWN) to change the allocation of memory from the "bottom" of the memory space of a program to the "top" of its memory space. The MEM_TOP_DOWN call is intended to be used for testing when converting a 32-bit application to 64-bit.
I did quite a bit of research about MEM_TOP_DOWN, and although my findings were inconclusive, I never found any evidence to fully support the idea that it would allow memory to be used more efficiently. For an enlightening and interesting article on MEM_TOP_DOWN, you can check out this blog post by Bruce Dawnson, a programmer at Google (who used to work for Valve). Scroll down to the bottom of the page, and you will see my questions to him that I asked back in March last year.
So I highly recommend changing the ENB Guide to suggest setting ExpandSystemMemoryX64=false in enblocal.ini as the default, and adding an explanation about its effects on the Sheson Memory Patch fix.
For the explanation, my suggested edits:
T When set to true, this parameter changes some of Skyrim's memory allocation code to put write some cached data at the beginning top of Skyrim's memory space, instead of the default write to the bottom of the memory space method used for almost all Windows programs. The According to the author of ENB, this can greatly reduce memory fragmentation and make better use of the Skyrim's available memory, especially when running on 64-bit Windows. It is highly recommended to enable this parameter for all 64-bit systems; however, it can generally be left enabled even for 32-bit systems as some users have reported it working well for them on these systems. If using a 32-bit system and having issues such as CTDs, disable it. However, it has been found that this feature conflicts with the Sheson Memory Patch fix by causing Skyrim to crash if the memory patch fix is used to increase Skyrim's initial heap ("Block 1") allocation higher than 512MB. Therefore, if using the Sheson Memory Patch fix, then it is recommended to set ExpandSystemMemoryX64 to false. Note: For this parameter to work, ReduceSystemMemoryUsage must be set to true and EnableUnsafeMemoryHacks must be set to false below.
(9 Jan 2014, 3:52PM GMT -7: I edited my explanation of what hishtup told me, for clarity, and added some interesting, relevant and factual links.)
Edited by keithinhanoi, 09 January 2015 - 03:52 AM.