Guide:ENBlocal INI/Memory

From S.T.E.P. Project Wiki

[MEMORY]

ENB now has memory management features added that can significantly reduce CTDs caused by hitting Skyrim's memory limit (~3.1GB). These features are referred to as, ENBoost. These parameters will need to be changed depending on the hardware within individual systems. ENBoost features depend heavily on these values to work correctly. Setting them incorrectly could result in users experiencing additional issues in-game. When running Skyrim with ENB enabled it is highly recommended to close any unnecessary programs running in the background to free up system resources for ENBoost use.

ExpandSystemMemoryX64

Warning-Logo.png      Warning:It has been reported that this feature can conflict with "Sheson's Memory Patch 3.0" (now included with SKSE) by causing Skyrim to crash if the memory patch fix is used to increase Skyrim's initial heap allocation (Block 1 or DefaultHeapInitialAllocMB in skse.ini) higher than 512 in Sheson's Memory Patch or 768MB in SKSE. Therefore, if using the Sheson Memory Patch fix (either standalone or with SKSE), it is recommended to set ExpandSystemMemoryX64 to false.
While this warning does not apply to everyone under all circumstances (me for example, running DefaultHeapInitialAllocMB=768), credible testing here on STEP supports the notion that setting EnableUnsafeMemoryHacks=true can contribute to Skyrim CTD at startup when using sheson's memory patch. ~z929669 Ixian Insignia.png Talk 23:19, January 17, 2015 (EST)


When set to true, this parameter changes some of Skyrim's memory allocation code to cache data at the 'top' of Skyrim's memory space (Windows default caches to bottom of memory space). According to Boris, this can reduce memory fragmentation and make better use of Skyrim's available memory, especially when running on 64-bit Windows; Vista or newer. Note:' for this parameter to work, ReduceSystemMemoryUsage must be set to true and EnableUnsafeMemoryHacks must be set to false (see below).

ExpandSystemMemoryX64=(false, true)

Please read these posts before posting support questions in the forums about this parameter! Don't be lazy!
More of an explanation by Boris can be found here and by keithinhanoi here and here.


ReduceSystemMemoryUsage

This parameter will enable the ENBoost features to dramatically reduce CTDs and other issues caused from reaching Skyrim's memory limit. It does this by launching the enbhost.exe process to handle dynamic memory allocations. It is highly recommended to enable and keep this feature enabled! For this feature to work properly, users should have a minimum of 4GB system RAM. ENBoost is able to initialize multiple instances of the enbhost process, each able to use up to 4GB of system RAM up to a maximum of 128GB (capped by the kilobyte value set in VideoMemorySizeMb below. Set to true if ExpandSystemMemoryX64 is enabled (see above).

ReduceSystemMemoryUsage=(false, true)


DisableDriverMemoryManager

This was mainly implemented as a fix for AMD video card users; however, it can also be useful for others. The parameter forces the ENBSeries driver libraries to manage video memory resources for cached textures (rather than the video drivers) and will ignore more of the errors reported by the video drivers. When enabled this parameter can cause lower than optimal performance and/or long pauses. If experiencing CTDs even while ENBoost features are enabled, users can try enabling this parameter to see if it resolves (helps to confirm video driver issues); otherwise, it is best to leave it disabled (false).

DisableDriverMemoryManager=(false, true)


DisablePreloadToVRAM

Routinely running Skyrim with this enabled is not recommended. When enabled this parameter can give faster cell-load times as geometry/textures are not loaded into video memory until they are visible. This may cause stuttering since more data must be dynamically loaded into memory during gameplay as the PC looks and moves around. Enabling this parameter could potentially help load a save game which fails to load otherwise. If this works, users are encouraged to go to a small interior, save the game, and then disable this again before trying to load the problem savegame. If experiencing extended cell load times, before enabling this feature, it is recommended to first try using the "free VRAM" key (see [INPUT] section) to clean video memory before entering a new location or fast traveling.

DisablePreloadToVRAM=(false, true)


EnableUnsafeMemoryHacks

Enabling this parameter is generally not safe. This is a workaround for users experiencing large amount of stuttering, typically on systems with large amount of VRAM (4GB+). When enabled, it does not use memory reallocation, compression, or enbhost.exe and will only work when ReduceSystemMemoryUsage is also enabled. A known bug is that Alt+tab will not work in fullscreen when this is enabled. Set to false if ExpandSystemMemoryX64 is enabled (see above).

EnableUnsafeMemoryHacks=(false, true)


ReservedMemorySizeMb

This parameter sets the size of a buffer used for swapping geometry and textures between VRAM and system memory. The buffer will be set in VRAM and this portion of VRAM will not be used for ENBoost's dynamic memory allocation; however, it will also be duplicated in the system memory used by TESV.exe as well. This means that increasing this parameter's value will result in equal increases in both VRAM and system RAM usage. The values here are measured in megabytes. For video cards with 1GB or more VRAM, start with 128 as a baseline. If stuttering persists, increase the value in increments of 128 ( 256, 384, 512, etc ) until the stuttering has ceased or is as minimal as possible with the lowest possible value. The maximum value that can be used is 1024, but be aware that whatever value is used is how much VRAM will be reserved for the swap space. This is the reason the lowest value possible without experiencing issues is recommended. Because of this parameter being system dependent, users will need to test different values to find the one which works best for their specific setup.

ReservedMemorySizeMb=(64, 128, 256, 384, 512, 640, 768, 896, 1024)

VideoMemorySizeMb

This sets the total memory that will be used for the ENBoost dynamic memory allocation. All available VRAM, except for the amount set with ReservedMemorySizeMb, will be used first, and if VideoMemorySizeMb is set to a value higher than total VRAM of the user's videocard, then ENBoost will use system RAM, if necessary, by running instances of enbhost.exe.

Download Boris's VRamSizeTest tool, run VRamSizeDX9.exe, and note the number it shows after "Video memory available." Then, if you are running Windows 7, subtract 170 from that number; if you are running Windows 8/8.1, use the number provided by the tool; and if you are running Windows 10, subtract 350 from that number. Use the result as the variable here. (Example 1: If VRamSizeDX9.exe shows 10240, and you're running Windows 7, you should subtract 170 to get 10070. Example 2: If VRamSizeDX9.exe shows 4064, and you're running Windows 8, you should use 4064. Example 3: If VRamSizeDX9.exe shows 11168, and you're running Windows 10, you should subtract 350 to get 10818.) For more information, please refer to this post.

VideoMemorySizeMb=(see above instructions)
Info-Logo.png      Notice:Windows 8/8.1 users: Microsoft has, unintentionally, introduced a memory limit for DirectX 9 games/software. This limit is 4GBs (4096) and there is nothing which can be done to circumvent this limit. For users seeing the VRamSizeTest tool reporting 4064 or similar, this is not a mistake. This is actually the limit for the OS in use and the maximum value you can set the VideoMemorySizeMb to. This bug was fixed for Windows 10 in the 2017 Fall Creator's Update, but still affects Windows 8/8.1.

EnableCompression

Enables/disables memory compression. It is disabled by default. Disabling memory compression can reduce stutter, but at the cost of more RAM usage. For this reason, it is generally only recommended to be disabled on systems with more than 2GB VRAM. Any system that is already nearing its VRAM limit should leave this parameter enabled or it could do more harm than good.

EnableCompression=(false, true)

AutodetectVideoMemorySize

If enabled, this feature will attempt to detect a system's shared video memory and automatically set the VideoMemorySizeMb parameter for a user. Any value placed in the VideoMemorySizeMb above will simply be ignored. This feature works for some users and for other users it'll give the wrong values which are usually too high. Users can try this feature; however, disabling it and setting the VideoMemorySizeMb parameter manually to fine tune the ENBoost settings is currently the recommended method.

AutodetectVideoMemorySize=(false, true)