SMB92 Posted October 28, 2015 Share Posted October 28, 2015 Seems this is a popular subject, and there have been many questions about this, I figured I'd start a thread with my findings for my CPU. As can be seen in my sig, I run a 6-core 3960X CPU clocked to 4.65Ghz. I can tell you now that this does not mean I get dream performance. Many questions about why Skyrim cannot perform up to standard can be answered quite simply - DirectX 9 is not designed for multi-threading. That being said, there are some settings that would seem to imply that they would help with multi-threading. The main ones being: iNumHWThreadsiHWThread6iHWThread5iHWThread4iHWThread3iHWThread2iHWThread1iAIThread2HWThreadiAIThread1HWThreadiRenderingThread2HWThreadiRenderingThread1HWThread Furthermore, there is a setting in Nvidia's control panel called "Threaded Optimization". This apparently helps applications to "take advantage of multple CPUs", however it is recommended off for older applications. Why is this relevant? Well perhaps any DirectX 9 application should be considered old. With that said, I will test all my MTing settings with and without this setting enabled and I will document it each time. The rest of the multi-threading tweaks are irrelevant to me (well for this test anyway, because everyone probably has them on), as I'm only trying to get better performance from the renderer, which was always a long shot with DX9 anyway. So without further adieu, lets get to testing these settings. The INI setup: I have enhanced my own INIs to my own tastes, a bit above Ultra settings. Note that I play at a ugrids of 7 despite recommendations, and have done so for 2 years. That being said, there is a reason why I do. I find that with a ugrids of 5, not only do I get a buttload of terrible pop-in as I walk by places, especially open areas like Whiterun plains, I find that this always introduces a "frame-spike" or 1-2 second stutter, which is inevitably caused by the CPU having to suddenly render all those popped in objects. Now while I can't avoid pop-in everywhere, I can minimize the visible distance of it by increasing the ugrids, but also there is also a performance reason where this can be effective - ENB includes an "Occlusion Culling" feature. What i find is that, if I'm in a dense area per say, such as the Falkreath Hold, that if everything is loaded past what my eye can see, or more specifically what is shown in a scene, the loading transition becomes much less of a stutter-funk as most things are loaded already, but not specifically rendered. Whether that logic is really just placebo has been proven to me otherwise by playing many hours of the game. In Falkreath in particular, I get minimal stutter from load at ugrids 5, however I get even less so at 7. Now there is a catch - the overall FPS of some scenes goes down. So in Whiterun specifically for example, I get between 45-52 FPS outdoors around the city. With ugrids at 5 I get 55-60. While I do get generally smoother grid transitions, it doesn't completely rule out the "frame-spikes" from loading, but it sure as hell seems to me to be a lot smoother in general. You may view my INIs here: (Note that I have removed the above MT settings) Skyrim.ini[General]sLanguage=ENGLISHiLargeIntRefCount=262144iPreloadSizeLimit=104857600sIntroSequence=DISABLED.BIKuGridsToLoad=7uExterior Cell Buffer=36bLoadLooseFiles=1bRunHighLevelProcess=1bMultiThreadMovement=1bUseThreadedParticleSystem=1bUseThreadedBlood=1bUseThreadedMorpher=1bUseThreadedTempEffects=1bUseThreadedTextures=1bUseThreadedMeshes=1bUseThreadedLOD=1bUseThreadedAI=1bUseHardDriveCache=1fFlickeringLightDistance=8192[backgroundLoad]bUseBackgroundFileLoader=1bUseMultiThreadedFaceGen=1bBackgroundCellLoads=1bUseMultiThreadedTrees=1bUseBackgroundFileLoader=1bBackgroundLoadLipFiles=1[Display]fDefaultWorldFOV=75fDefault1stPersonFOV=75fSunShadowUpdateTime=0.01fSunUpdateThreshold=0.0250fShadowLODMaxStartFade=200.0fSpecularLODMaxStartFade=3000.0fLightLODMaxStartFade=8192.0iShadowMapResolutionPrimary=4096bShadowsOnGrass=1bPerPixelLighting=1bAllowScreenshot=1bSimpleLighting=0fDecalLifetime=56.5000iAdapter=0iPresentInterval=1[Audio]fMusicDuckingSeconds=6.0fMusicUnDuckingSeconds=8.0fMenuModeFadeOutTime=3.0fMenuModeFadeInTime=1.0[Grass]bAllowCreateGrass=1bAllowLoadGrass=0bGrassPointLighting=1b30GrassVS=1iMaxGrassTypesPerTexure=15iMinGrassSize=75 //<-- change this to 75 or higher, if you use grass on steroids.[GeneralWarnings]SGeneralMasterMismatchWarning=One or more plugins could not find the correct versions of the master files they depend on. Errors may occur during load or game play. Check the "Warnings.txt" file for more information.[Archive]sResourceArchiveList=Skyrim - Misc.bsa, Skyrim - Shaders.bsa, Skyrim - Textures.bsa, Skyrim - Interface.bsa, Skyrim - Animations.bsa, Skyrim - Meshes.bsa, Skyrim - Sounds.bsasResourceArchiveList2=Skyrim - Voices.bsa, Skyrim - VoicesExtra.bsa[Combat]fMagnetismStrafeHeadingMult=0.0fMagnetismCombatMult=0.0fMagnetismMult=0.0fMagnetismLookingMult=0.0f1PArrowTiltUpAngle=0.8f3PArrowTiltUpAngle=0.8[Papyrus]fUpdateBudgetMS=1.2fExtraTaskletBudgetMS=1.2fPostLoadUpdateTimeMS=500.0iMinMemoryPageSize=128iMaxMemoryPageSize=512iMaxAllocatedMemoryBytes=76800bEnableLogging=0bEnableTrace=0bLoadDebugInformation=0[Water]iWaterReflectHeight=2048iWaterReflectWidth=2048bUseWaterDisplacements=1bUseWaterRefractions=1bUseWaterReflections=1bUseWaterDepth=1bUseWaterReflectionBlur=1bReflectExplosions=1iWaterBlurAmount=4bAutoWaterSilhouetteReflections=1bForceHighDetailReflections=0bUseWaterHiRes=1bUseWaterLOD=1bReflectLODObjects=1bReflectLODLand=1bReflectSky=1bReflectLODTrees=1bUseWaterShader=1[Trees]bForceFullDetail=1bEnableTreeAnimations=1[Actor]fVisibleNavmeshMoveDist=12288.0000[TerrainManager]bKeepLowDetailTerrain=0[Controls]bMouseAcceleration=0[HAVOK]iNumThreads=2[saveGame]bAllowProfileTransfer=1bUseSaveGameHistory=1[Decals]bDecalMultithreaded=1bForceAllDecals=1[imagespace]bDoRadialBlur=1[LightingShader]fDecalLODFadeEnd=1.0000fDecalLODFadeStart=1.0000[Animation]fAnimInterpFarDist=10500.0000fAnimInterpNearDist=10000.0000[interface]fBookOpenTime=200.0000 SkyrimPrefs.ini[General]fBrightLightColorB=1.0000fBrightLightColorG=1.0000fBrightLightColorR=1.0000iStoryManagerLoggingEvent=-1bEnableStoryManagerLogging=0fDefaultFOV=75[imagespace]bDoDepthOfField=1iRadialBlurLevel=3[Display]iBlurDeferredShadowMask=3fInteriorShadowDistance=3000.0000fShadowDistance=4000iShadowMapResolutionSecondary=2048iShadowMapResolutionPrimary=4096iShadowSplitCount=2iMaxAnisotropy=0fLeafAnimDampenDistEnd=6000.0000fLeafAnimDampenDistStart=4600.0000fTreesMidLODSwitchDist=9999999.0000bAllow30HairShader=1iTexMipMapMinimum=4iTexMipMap=4096iTexMipMapSkip=0iUseTexHiRes=1iNormalMapQuality=4096iTexNormalMapMinimum=4iTexMipMapResolution=4096iTexMipMapQuality=4096iMipMapResolution=4096iMipMapSize=4096bFaceMipMaps=1bFaceGenTexturing=1bFaceGenTexturingQuality=4096bHighQualityTexMipMaps=1bDynamicWindowReflections=1fGamma=1.0000iShadowFilter=4fDecalLOD2=1500.0000fDecalLOD1=1000.0000iActorShadowCountInt=12iActorShadowCountExt=20fSpecularLODStartFade=4096fShadowLODStartFade=200.0000fLightLODStartFade=8192.0000bTransparencyMultisampling=0iWaterMultiSamples=0iMultiSample=0iShadowMode=4bTreesReceiveShadows=1bDrawLandShadows=1bDrawShadows=1bDeferredShadows=1bFull Screen=1iSize H=1080iSize W=1920fMeshLODFadePercentDefault=1.2000fMeshLODFadeBoundDefault=256.0000fMeshLODLevel2FadeTreeDistance=1000000.0000fMeshLODLevel1FadeTreeDistance=1000000.0000fMeshLODLevel2FadeDist=1e+007fMeshLODLevel1FadeDist=1e+007bShadowMaskZPrepass=0bMainZPrepass=0iMaxSkinDecalsPerFrame=25iMaxDecalsPerFrame=100sD3DDevice="NVIDIA GeForce GTX 980 Ti" <--- change to your card!bFXAAEnabled=0iShadowMapResolution=4096fShadowBiasScale=0.15iShadowMaskQuarter=4bFloatPointRenderTarget=1iScreenShotIndex=203bShadowsOnGrass=1[Grass]b30GrassVS=1fGrassStartFadeDistance=9000fGrassMaxStartFadeDistance=11000.0000fGrassMinStartFadeDistance=0.0000[MAIN]bGamepadEnable=0bCrosshairEnabled=1fHUDOpacity=1.0000bSaveOnPause=0bSaveOnTravel=0bSaveOnWait=0bSaveOnRest=0fSkyCellRefFadeDistance=150000.0000[GamePlay]bShowFloatingQuestMarkers=1bShowQuestMarkers=1iDifficulty=3[interface]bDialogueSubtitles=1bGeneralSubtitles=1fMouseCursorSpeed=1.0000bShowCompass=1[Controls]fGamepadHeadingSensitivity=1.0000fMouseHeadingSensitivity=0.0500bAlwaysRunByDefault=1bInvertYValues=0bGamePadRumble=1bMouseAcceleration=0bUseKinect=0[Particles]iMaxDesired=750[saveGame]fAutosaveEveryXMins=60.0000[AudioMenu]fAudioMasterVolume=1.0000fVal7=1.0000uID7=1778591256fVal6=1.0000uID6=1778589878fVal5=1.0000uID5=3954fVal4=1.0000uID4=654727281fVal3=1.0000uID3=94881fVal2=0.3000uID2=466532fVal1=0.8000uID1=554685fVal0=1.0000uID0=1007612[Clouds]fCloudLevel2Distance=262144.0000fCloudLevel1Distance=32768.0000fCloudLevel0Distance=16384.0000fNearDistance=25.0000fCloudNearFadeDistance=9000.0000[TerrainManager]fTreeLoadDistance=125000fBlockMaximumDistance=250000fBlockLevel1Distance=100000fBlockLevel0Distance=50000fSplitDistanceMult=2.0bShowLODInEditor=0fCloudNearFadeDistance=9000.0000[NavMesh]fObstacleAlpha=0.5000fCoverSideHighAlpha=0.8000fCoverSideLowAlpha=0.6500fEdgeFullAlpha=1.0000fEdgeHighAlpha=0.7500fEdgeLowAlpha=0.5000fTriangleFullAlpha=0.7000fTriangleHighAlpha=0.3500fTriangleLowAlpha=0.2000fLedgeBoxHalfHeight=25.0000fEdgeDistFromVert=10.0000fEdgeThickness=10.0000fPointSize=2.5000bUseThreadedMeshes=1[Trees]bRenderSkinnedTrees=1uiMaxSkinnedTreesToRender=50bUseMultiThreadedTrees=1bEnableTreeAnimations=1[Decals]uMaxDecals=1000bDecals=1bSkinnedDecals=1uMaxSkinDecals=100uMaxSkinDecalsPerActor=60[LOD]fLODFadeOutMultObjects=15.000fLODFadeOutMultItems=15.000fLODFadeOutMultActors=15.000fLODFadeOutMultSkyCell=1.0000[Launcher]bEnableFileSelection=1bShowAllResolutions=1uLastAspectRatio=3[blurShaderHDR]bDoHighDynamicRange=1[blurShader]bUseBlurShader=1[HAVOK]iNumThreads=2[Water]iWaterReflectHeight=1024iWaterReflectWidth=1024bUseWaterDisplacements=1bUseWaterRefractions=1bUseWaterReflections=1bUseWaterDepth=1 Now I will update this post with more tests as I go. I do not expect much variation in them having been through them before.EDIT NOTE: Yes I have Core-Parking disabled for Hyper-Threading. EDIT - The Benchmark - Forgot to note how I'm benching these tests. Quite simply, I'm running on Horseback, with 3 followers also on horses and 2 dogs, from Whiterun Gates west to the path that turns off into Falkreath Hold, toward Markarth just past the Mountain passage. EDIT - I am now running this bench backwards, from that road, past Fort Greymoor and into Whiterun. This better shows the actual increased usage over time. Test 1:Hyper-Threading Enabled, Nvidia Threaded Optimization EnablediNumHWThreads=11iHWThread6=10iHWThread5=9iHWThread4=8iHWThread3=7iHWThread2=6iHWThread1=5iAIThread2HWThread=4iAIThread1HWThread=3iRenderingThread2HWThread=2iRenderingThread1HWThread=1NOTES: This test I went for absolute threading. However I did not use Skyrim Performance Monitor to note the actual Thread Count. Observations are as followsCore 0 was 100% most of the time. Core 4 saw about 50%, peaking about 70%. Core 8 peaked around 70% also but in general wasn't that busy. Core 10 even less usage again. These wee the only 4 cores to move. Other cores just showed typical background usage where applicable.TREND - Core 0, 4, 8 and 10 are THE FIRST threads on the core, as in the cores are divided 0&1, 2&3, 4&5 etc etc. So already it is apparent from this test that Skyrim not only sticks to 4 cores, but where hyper-threading is concerned, it only touched the first threads. However, I did not experience particularly less performance from having only "half" a core active for Core 0 then I would have without HT. This is to my surprise. Test 2:Hyper-Threading On, Nvidia Threaded Optimization OffSame settings as previous test in INIThis test shows different core usage, namely more usage of more cores. Same Benchmark byt with Nvidia Thread Optimization off.Notes: Core 0 still 100%, Core 2 now averaging 75-80% peaking at 90, Core 4 averaging 20-25%, Core 6 now actually being used is up to the 50-60% mark, Core 8 showing 40% odd and Core 10 averaging 15% but peaking around 35%.TRENDS: Still only using the first thread of each core, but this time it is using all 6 to my surprise. HOWEVER THERE WAS NO PERFORMACNE IMPROVEMENT WHATSOEVER. From this point on I'm going to try some other tricks, such as changing the pre-rendered frames count and making use of ENB's UnsafeMemoryHacks settings as per suggestion. I will also start logging thread count from Test 4 onwards. EDIT - Well turns out SPM doesn't work under Windows 10 atm, I tried a few tricks to get it going but the performance counters have changed. This also explains why other programs I have don't work anymore. I suspect it would have been the same anyway. From my last observation with it, it usually has 33-37 threads open at the very start of the game during the menu, and then flatlines to about 26-28 threads while in game. From memory this number didn't change during loads made in game. Spewin' anyway :/ Test 3:HT on, Nvidia tweak off, UnsafeMemoryHacks=True. 2 pre-rendered framesSame INI as above tests.NOTES: For starts, I did not find UnsafeMemoryhacks to provide any relief for the loading stutter, but this is ugrids 7. Results are the same as Test 2 mostly. Core 0 was still 100% and the other 5 cores it's using roughly the same, however this time I noticed a new trend. perhaps one that I didn't see beforeTRENDS: This time I happened to have notice that Cores 2, 4, 6 and 8, in particular the latter 3, saw increased usage as I approached Whiterun. Core 2 spent most of its time at the 80% mark but by the end of the test was working around 95%. Core 4 was at 20% rising to nearly 40% with a big spike in the middle of the graph that hit roughly 55-60%. Core 6 was working about 50-60% on average, also rising toward the end, with a big spike in the middle to a bout 75%. Core 8 sat at a steady 35-40% but also rose toward the end, with a big spike in the middle Core 10 was about 20% but consistently got lower towards Whiterun. So the trend was slighlty more usage over time but in what appears ti be a define gradient. The spike seen at the half way point of the test might indicate combat, as a Saber cat roused me just outside Whiterun, probably enough to have the first few grids of the city exterior loaded.I'm going to run this same test again for test 4, with pre-rendered frames at 1, and SPM monitoring the thread count. TEST 4: Interesting resultsHT On, Nvidia Tweak off, Unsafehacks true, prerendered frames 2basically same as aboveINI settings reverted to default of:iNumHWThreads=5iHWThread6=5iHWThread5=5iHWThread4=5iHWThread3=4iHWThread2=4iHWThread1=4iAIThread2HWThread=3iAIThread1HWThread=3iRenderingThread2HWThread=1iRenderingThread1HWThread=0NOTES: Now this one proved interesting. Not only did the cores shift, the stutter was noticeably less. Core 0 still used 100%, however the rest of the threads jumped ship. Core 3 saw 80-90% steady, Core 4 & 6 10-20%, Core 7 50% on average, Core 9 about 35% steady and Core 10 only 5-10% at most.TRENDS: 7 cores became active this time, with most threads jumping to their HT cores. The cores seem to be more balanced out, I would say that with these default INI settings, threads were assigned more efficiently. Overall core usage was less, however it is apparent that the rendering, which I assume is on the 2 highest used cores, remained the same. When I say stuttering was less, it was still present but not as pronounced as previous runs. Interesting to say the least. TEST 5: turned Default setting on their headSame as test 4, INI settings flipped:iNumHWThreads=5iHWThread6=0iHWThread5=0iHWThread4=0iHWThread3=1iHWThread2=1iHWThread1=1iAIThread2HWThread=3iAIThread1HWThread=3iRenderingThread2HWThread=4iRenderingThread1HWThread=5NOTES: Well, the cores went back to the ordering found in the first 3 tests. Core 0 100%, Core 2 80-90%, Core 4 10-20%, Core 6 50% Steady, Core 8 40-50%, Core 10 10% give or take steady, and finally Core 11 was jumping up and down a bit in the 10-25% zones (Maybe a background task idk.)TRENDS: Cores went back to the old ordering, so one of these settings must change the ordering. Not sure which at this stage. Performance remained the same as all tests. OBSERVATIONAL NOTES AND CLOSING WORDS: Stutter and FPS:I am writing this mainly for people who don't understand why better hardware doesn't mean miracle performance. It is completely apparent to me that no matter what you change in the INIs, ENBlocal, the drivers etc etc, eventually even with current best hardware you are gonna hit a wall at draw calls. This game is completely and utterly bottlenecked by draw calls at the end of the day. The only true way to eliminate the stuttering is to find a balance of any settings that affect object load and total objects on scene, not because the renderer has trouble finalizing the render of triangles, but he calls to do so. This is exactly what is occurring on the busiest core. The stutter you get from going to grid to grid is caused by the drop of a number of calls and the demand for a number of new calls, the only way to eliminate it is to reduce the amount of objects to reduce the amount of calls. I can have static scenes with 7 million total triangles on scene, with 3-4000 draw calls, and get 50fps. Then I can get 2.5 million triangles, but 6400 draw calls and get 45fps. So you see the trend here, the actual amount of objects making calls is the detriment rather than the complexity of the model. There are only a few settings, albeit important, that affect this dramatically and they are all found under [terrainmanager] and the rest being the [LOD] settings (namely ObjectFade). Of course there are more settings that can have an effect, but at the peak of current hardware, these settings will have the most effect on fps and stuttering. Ugrids certainly counts as well towards this, but for an example I can have 5 grids with blockdistance at 70000/140000/250000 and object fade on 25 and get the same results with ugrids 7 blockdistance 45000/90000/250000 objects 20. Obviously for safety reason the former is preferable but as I mentioned above I personally prefer 7. I can eliminate any stutter by going 7 blockdistance 40k/80k/250k OF 16. However I can not do a whole great deal to bring back the fps with my CPU past 6000 draw calls. No matter what. In test 6 and 7 I amped my GPU to 1700mhz. This stays stable for about 20 minutes before the driver reverts to default (good feature from Nvidia IMO rather than BSOD lol). This makes no difference. Settings such as iFPSClamp only lock the frame times and provide a "time slowing" effect to stutter, which at high draw call interchange, becomes obvious and even more annoying than the original stutter. As for the rest of the settings being mentioned, sure they might help with memory speed etc, but remember I am talking about hardware that is at the pinnacle of our generation, so that is irrelevant here. Another little trick I tried to even out the frame rate with higher calls ws to increase shadow resolution to 8192. The logic here being if I can get shadows to be so good that they bring down the fps by say 20, then stutter will go much like locking the fps but without the slowing effect it brings (among other problems). This is sincerely not the case, no matter what level I bring the fps to even by other means, the draw call transition/interchange will remain per scene to scene and will always bring about the stutter. This is where the inefficiency lies and can only be averted by a faster CPU, not necessarily GHz but MIPS (Instructions per second). We don't measure by this anymore instead we measure by the time it takes to cycle (Hz) because this number varies greatly depending on the application. Sure, raw Hz are always gonna help, but the throughput remains the same, so for example you can't necessarily execute more scripts at a time, you can just get the ones you do have to go faster. A great example in our current, or better said analogy, is to look at the AMD Furys HBM memory vs GDDR5 - HBM is slow but wide and through-puts massive amounts of data in a single cycle, whereas GDDR5 is fast at throughputting smaller amounts (albeit still a lot these days). So at the end of the day this is the bottleneck that is DirectX 9 and there was only ever so much Bethesda could have done about it anyway. Unless they had of used 11, which god help us they better be for Fallout 4. Anyway I hope that has enlightened you further, and best of luck with your game. If you have anything to add on this or are unsure of something, please leave a comment, Link to comment Share on other sites More sharing options...
saurusmaximus Posted October 28, 2015 Share Posted October 28, 2015 HOWEVER THERE WAS NO PERFORMACNE IMPROVEMENT WHATSOEVER.This makes me wonder then if your cpu was really doing more work, or if it was doing the same work less efficiently. Skyrim is 4 years old now (which is like 20 in human years), and there is only so much you can do to improve the performance of a 32-bit game on a 64-bit cpu. Still, this was an interesting post as there as been an ongoing debate about how much processor you really need to make Skyrim sing. Link to comment Share on other sites More sharing options...
SMB92 Posted October 28, 2015 Author Share Posted October 28, 2015 This one still has me scratching me head, when i get back on the pc im going to run SPM and see exactly how many threads are open each time. Frim that particular test, this indicates the Nvidia threading tweak does indeed get the game running in a more efficient manner. The idea here isnt to improve performance per say , but more to quell the masses questions about it. I notice that a lot of people are confused about this, and dont really know what to input for these settings. I am surprised by one thing though, i haven't had HT on for a long, long time, but it doesn't seem to be hurting performance. I would of thought, and can swear the last time i tried it, that the performance was worse due to the core being effectively split. This makes me think there might be something else involved in the bottleneck. One thing though, loading stutter transitioning from grid to grid is more pronounced having said all that, but the frame rate hasn't changed. I don't expect to gain any performance increase out of this having tried similar tests before, but if there is any optimization to be found then bonus. Link to comment Share on other sites More sharing options...
MotoSxorpio Posted October 28, 2015 Share Posted October 28, 2015 Seems this is a popular subject, and there have been many questions about this, I figured I'd start a thread with my findings for my CPU. As can be seen in my sig, I run a 6-core 3960X CPU clocked to 4.65Ghz. I can tell you now that this does not mean I get dream performance. Many questions about why Skyrim cannot perform up to standard can be answered quite simply - DirectX 9 is not designed for multi-threading. That being said, there are some settings that would seem to imply that they would help with multi-threading. The main ones being: iNumHWThreadsiHWThread6iHWThread5iHWThread4iHWThread3iHWThread2iHWThread1iAIThread2HWThreadiAIThread1HWThreadiRenderingThread2HWThreadiRenderingThread1HWThread Furthermore, there is a setting in Nvidia's control panel called "Threaded Optimization". This apparently helps applications to "take advantage of multple CPUs", however it is recommended off for older applications. Why is this relevant? Well perhaps any DirectX 9 application should be considered old. With that said, I will test all my MTing settings with and without this setting enabled and I will document it each time. The rest of the multi-threading tweaks are irrelevant to me (well for this test anyway, because everyone probably has them on), as I'm only trying to get better performance from the renderer, which was always a long shot with DX9 anyway. So without further adieu, lets get to testing these settings. The INI setup: I have enhanced my own INIs to my own tastes, a bit above Ultra settings. Note that I play at a ugrids of 7 despite recommendations, and have done so for 2 years. That being said, there is a reason why I do. I find that with a ugrids of 5, not only do I get a buttload of terrible pop-in as I walk by places, especially open areas like Whiterun plains, I find that this always introduces a "frame-spike" or 1-2 second stutter, which is inevitably caused by the CPU having to suddenly render all those popped in objects. Now while I can't avoid pop-in everywhere, I can minimize the visible distance of it by increasing the ugrids, but also there is also a performance reason where this can be effective - ENB includes an "Occlusion Culling" feature. What i find is that, if I'm in a dense area per say, such as the Falkreath Hold, that if everything is loaded past what my eye can see, or more specifically what is shown in a scene, the loading transition becomes much less of a stutter-funk as most things are loaded already, but not specifically rendered. Whether that logic is really just placebo has been proven to me otherwise by playing many hours of the game. In Falkreath in particular, I get minimal stutter from load at ugrids 5, however I get even less so at 7. Now there is a catch - the overall FPS of some scenes goes down. So in Whiterun specifically for example, I get between 45-52 FPS outdoors around the city. With ugrids at 5 I get 55-60. While I do get generally smoother grid transitions, it doesn't completely rule out the "frame-spikes" from loading, but it sure as hell seems to me to be a lot smoother in general. You may view my INIs here: (Note that I have removed the above MT settings) Skyrim.ini[General]sLanguage=ENGLISHiLargeIntRefCount=262144iPreloadSizeLimit=104857600sIntroSequence=DISABLED.BIKuGridsToLoad=7uExterior Cell Buffer=36bLoadLooseFiles=1bRunHighLevelProcess=1bMultiThreadMovement=1bUseThreadedParticleSystem=1bUseThreadedBlood=1bUseThreadedMorpher=1bUseThreadedTempEffects=1bUseThreadedTextures=1bUseThreadedMeshes=1bUseThreadedLOD=1bUseThreadedAI=1bUseHardDriveCache=1fFlickeringLightDistance=8192[backgroundLoad]bUseBackgroundFileLoader=1bUseMultiThreadedFaceGen=1bBackgroundCellLoads=1bUseMultiThreadedTrees=1bUseBackgroundFileLoader=1bBackgroundLoadLipFiles=1[Display]fDefaultWorldFOV=75fDefault1stPersonFOV=75fSunShadowUpdateTime=0.01fSunUpdateThreshold=0.0250fShadowLODMaxStartFade=200.0fSpecularLODMaxStartFade=3000.0fLightLODMaxStartFade=8192.0iShadowMapResolutionPrimary=4096bShadowsOnGrass=1bPerPixelLighting=1bAllowScreenshot=1bSimpleLighting=0fDecalLifetime=56.5000iAdapter=0iPresentInterval=1[Audio]fMusicDuckingSeconds=6.0fMusicUnDuckingSeconds=8.0fMenuModeFadeOutTime=3.0fMenuModeFadeInTime=1.0[Grass]bAllowCreateGrass=1bAllowLoadGrass=0bGrassPointLighting=1b30GrassVS=1iMaxGrassTypesPerTexure=15iMinGrassSize=75 //<-- change this to 75 or higher, if you use grass on steroids. [GeneralWarnings]SGeneralMasterMismatchWarning=One or more plugins could not find the correct versions of the master files they depend on. Errors may occur during load or game play. Check the "Warnings.txt" file for more information. [Archive]sResourceArchiveList=Skyrim - Misc.bsa, Skyrim - Shaders.bsa, Skyrim - Textures.bsa, Skyrim - Interface.bsa, Skyrim - Animations.bsa, Skyrim - Meshes.bsa, Skyrim - Sounds.bsasResourceArchiveList2=Skyrim - Voices.bsa, Skyrim - VoicesExtra.bsa [Combat]fMagnetismStrafeHeadingMult=0.0fMagnetismCombatMult=0.0fMagnetismMult=0.0fMagnetismLookingMult=0.0f1PArrowTiltUpAngle=0.8f3PArrowTiltUpAngle=0.8[Papyrus]fUpdateBudgetMS=1.2fExtraTaskletBudgetMS=1.2fPostLoadUpdateTimeMS=500.0iMinMemoryPageSize=128iMaxMemoryPageSize=512iMaxAllocatedMemoryBytes=76800bEnableLogging=0bEnableTrace=0bLoadDebugInformation=0[Water]iWaterReflectHeight=2048iWaterReflectWidth=2048bUseWaterDisplacements=1bUseWaterRefractions=1bUseWaterReflections=1bUseWaterDepth=1bUseWaterReflectionBlur=1bReflectExplosions=1iWaterBlurAmount=4bAutoWaterSilhouetteReflections=1bForceHighDetailReflections=0bUseWaterHiRes=1bUseWaterLOD=1bReflectLODObjects=1bReflectLODLand=1bReflectSky=1bReflectLODTrees=1bUseWaterShader=1[Trees]bForceFullDetail=1bEnableTreeAnimations=1[Actor]fVisibleNavmeshMoveDist=12288.0000[TerrainManager]bKeepLowDetailTerrain=0[Controls]bMouseAcceleration=0[HAVOK]iNumThreads=2[saveGame]bAllowProfileTransfer=1bUseSaveGameHistory=1[Decals]bDecalMultithreaded=1bForceAllDecals=1[imagespace]bDoRadialBlur=1[LightingShader]fDecalLODFadeEnd=1.0000fDecalLODFadeStart=1.0000[Animation]fAnimInterpFarDist=10500.0000fAnimInterpNearDist=10000.0000 [interface]fBookOpenTime=200.0000 SkyrimPrefs.ini[General]fBrightLightColorB=1.0000fBrightLightColorG=1.0000fBrightLightColorR=1.0000iStoryManagerLoggingEvent=-1bEnableStoryManagerLogging=0fDefaultFOV=75[imagespace]bDoDepthOfField=1iRadialBlurLevel=3[Display]iBlurDeferredShadowMask=3fInteriorShadowDistance=3000.0000fShadowDistance=4000iShadowMapResolutionSecondary=2048iShadowMapResolutionPrimary=4096iShadowSplitCount=2iMaxAnisotropy=0fLeafAnimDampenDistEnd=6000.0000fLeafAnimDampenDistStart=4600.0000fTreesMidLODSwitchDist=9999999.0000bAllow30HairShader=1iTexMipMapMinimum=4iTexMipMap=4096iTexMipMapSkip=0iUseTexHiRes=1iNormalMapQuality=4096iTexNormalMapMinimum=4iTexMipMapResolution=4096iTexMipMapQuality=4096iMipMapResolution=4096iMipMapSize=4096bFaceMipMaps=1bFaceGenTexturing=1bFaceGenTexturingQuality=4096bHighQualityTexMipMaps=1bDynamicWindowReflections=1fGamma=1.0000iShadowFilter=4fDecalLOD2=1500.0000fDecalLOD1=1000.0000iActorShadowCountInt=12iActorShadowCountExt=20fSpecularLODStartFade=4096fShadowLODStartFade=200.0000fLightLODStartFade=8192.0000bTransparencyMultisampling=0iWaterMultiSamples=0iMultiSample=0iShadowMode=4bTreesReceiveShadows=1bDrawLandShadows=1bDrawShadows=1bDeferredShadows=1bFull Screen=1iSize H=1080iSize W=1920fMeshLODFadePercentDefault=1.2000fMeshLODFadeBoundDefault=256.0000fMeshLODLevel2FadeTreeDistance=1000000.0000fMeshLODLevel1FadeTreeDistance=1000000.0000fMeshLODLevel2FadeDist=1e+007fMeshLODLevel1FadeDist=1e+007bShadowMaskZPrepass=0bMainZPrepass=0iMaxSkinDecalsPerFrame=25iMaxDecalsPerFrame=100sD3DDevice="NVIDIA GeForce GTX 980 Ti" <--- change to your card!bFXAAEnabled=0iShadowMapResolution=4096fShadowBiasScale=0.15iShadowMaskQuarter=4bFloatPointRenderTarget=1iScreenShotIndex=203bShadowsOnGrass=1[Grass]b30GrassVS=1fGrassStartFadeDistance=9000fGrassMaxStartFadeDistance=11000.0000fGrassMinStartFadeDistance=0.0000[MAIN]bGamepadEnable=0bCrosshairEnabled=1fHUDOpacity=1.0000bSaveOnPause=0bSaveOnTravel=0bSaveOnWait=0bSaveOnRest=0fSkyCellRefFadeDistance=150000.0000[GamePlay]bShowFloatingQuestMarkers=1bShowQuestMarkers=1iDifficulty=3[interface]bDialogueSubtitles=1bGeneralSubtitles=1fMouseCursorSpeed=1.0000bShowCompass=1[Controls]fGamepadHeadingSensitivity=1.0000fMouseHeadingSensitivity=0.0500bAlwaysRunByDefault=1bInvertYValues=0bGamePadRumble=1bMouseAcceleration=0bUseKinect=0[Particles]iMaxDesired=750[saveGame]fAutosaveEveryXMins=60.0000[AudioMenu]fAudioMasterVolume=1.0000fVal7=1.0000uID7=1778591256fVal6=1.0000uID6=1778589878fVal5=1.0000uID5=3954fVal4=1.0000uID4=654727281fVal3=1.0000uID3=94881fVal2=0.3000uID2=466532fVal1=0.8000uID1=554685fVal0=1.0000uID0=1007612[Clouds]fCloudLevel2Distance=262144.0000fCloudLevel1Distance=32768.0000fCloudLevel0Distance=16384.0000fNearDistance=25.0000fCloudNearFadeDistance=9000.0000[TerrainManager]fTreeLoadDistance=125000fBlockMaximumDistance=250000fBlockLevel1Distance=100000fBlockLevel0Distance=50000fSplitDistanceMult=2.0bShowLODInEditor=0fCloudNearFadeDistance=9000.0000[NavMesh]fObstacleAlpha=0.5000fCoverSideHighAlpha=0.8000fCoverSideLowAlpha=0.6500fEdgeFullAlpha=1.0000fEdgeHighAlpha=0.7500fEdgeLowAlpha=0.5000fTriangleFullAlpha=0.7000fTriangleHighAlpha=0.3500fTriangleLowAlpha=0.2000fLedgeBoxHalfHeight=25.0000fEdgeDistFromVert=10.0000fEdgeThickness=10.0000fPointSize=2.5000bUseThreadedMeshes=1[Trees]bRenderSkinnedTrees=1uiMaxSkinnedTreesToRender=50bUseMultiThreadedTrees=1bEnableTreeAnimations=1[Decals]uMaxDecals=1000bDecals=1bSkinnedDecals=1uMaxSkinDecals=100uMaxSkinDecalsPerActor=60[LOD]fLODFadeOutMultObjects=15.000fLODFadeOutMultItems=15.000fLODFadeOutMultActors=15.000fLODFadeOutMultSkyCell=1.0000[Launcher]bEnableFileSelection=1bShowAllResolutions=1uLastAspectRatio=3[blurShaderHDR]bDoHighDynamicRange=1[blurShader]bUseBlurShader=1[HAVOK]iNumThreads=2[Water]iWaterReflectHeight=1024iWaterReflectWidth=1024bUseWaterDisplacements=1bUseWaterRefractions=1bUseWaterReflections=1bUseWaterDepth=1 Now I will update this post with more tests as I go. I do not expect much variation in them having been through them before.EDIT NOTE: Yes I have Core-Parking disabled for Hyper-Threading. EDIT - The Benchmark - Forgot to note how I'm benching these tests. Quite simply, I'm running on Horseback, with 3 followers also on horses and 2 dogs, from Whiterun Gates west to the path that turns off into Falkreath Hold, toward Markarth just past the Mountain passage. Test 1:Hyper-Threading Enabled, Nvidia Threaded Optimization Enabled iNumHWThreads=11iHWThread6=10iHWThread5=9iHWThread4=8iHWThread3=7iHWThread2=6iHWThread1=5iAIThread2HWThread=4iAIThread1HWThread=3iRenderingThread2HWThread=2iRenderingThread1HWThread=1 NOTES: This test I went for absolute threading. However I did not use Skyrim Performance Monitor to note the actual Thread Count. Observations are as follows Core 0 was 100% most of the time. Core 4 saw about 50%, peaking about 70%. Core 8 peaked around 70% also but in general wasn't that busy. Core 10 even less usage again. These wee the only 4 cores to move. Other cores just showed typical background usage where applicable. TREND - Core 0, 4, 8 and 10 are THE FIRST threads on the core, as in the cores are divided 0&1, 2&3, 4&5 etc etc. So already it is apparent from this test that Skyrim not only sticks to 4 cores, but where hyper-threading is concerned, it only touched the first threads. However, I did not experience particularly less performance from having only "half" a core active for Core 0 then I would have without HT. This is to my surprise. Test 2:Hyper-Threading On, Nvidia Threaded Optimization Off Same settings as previous test in INI This test shows different core usage, namely more usage of more cores. Same Benchmark byt with Nvidia Thread Optimization off. Notes: Core 0 still 100%, Core 2 now averaging 75-80% peaking at 90, Core 4 averaging 20-25%, Core 6 now actually being used is up to the 50-60% mark, Core 8 showing 40% odd and Core 10 averaging 15% but peaking around 35%. TRENDS: Still only using the first thread of each core, but this time it is using all 6 to my surprise. HOWEVER THERE WAS NO PERFORMACNE IMPROVEMENT WHATSOEVER. If you are OCing and disable CoolNQuiet, along with C6 and other functions, you will not see a difference without disabling hyperthreading (FX amd 8xxx are 4 cores with two threads each...not 8 cores). Its extremely difficult to accidentally set the cores to only four (three in your case). That said... According to STEP Guide, and with further testing on my own, those HW entries are completely placebo at best. iNumHWThreads is the only one the game pays attention to. In your case, enter "6". With my own ini setting at "8" for "iNumHWTHreads" I peak at 30%, average 30% and have determined that my lack of VRAM is where the bottleneck is. There is NO PERFORMANCE DIFFERENCE when editing those "iHWThread" entries...I can put 128 of them and nothing changes. You are better off leaving those entries out than messing. Your initial Vtune should tell you in renderer.txt how many threads the game is going to use, and if it does not match (which it should since like v. 1.4 Skyrim) maybe force with insertion of that single line "iNumHWThreads=*" *being how many threads your Core CPU utilizes. Good luck! :thumbsup: EDIT: and Nvidia's default is enable for Threaded Optimization. LIkely that has nothing to do with the multithreading we are talking about here. Link to comment Share on other sites More sharing options...
SMB92 Posted October 28, 2015 Author Share Posted October 28, 2015 Don't worry, ive got all potential power saving setting cut off and the cpu can only ever be in the c2 state at best (lowest drop is down to 3.3ghz when quiet) . All cores active (will try quad at some point just to document it, maybe even 3 as well) I already realize that these settings are placebo, this is more or less to showcase that very fact to the public. The only new info i have so far feom this is that by turning off the nvidia tweak, the game used more cores but no gain in performance. In fact it used all 6 cores whereas with the tweak it uses 4. So seems Nvidia know something about this. I dont understand this at this stage though. In the case of setting iNumHWThreads you actually have to set it to 5, 0 is a core. This is how it was set by default. These first tests just show clealry that nothing actually changed. During today, i will post the default tests. Ultimately there is just no getting around DX9 and its single pipeline renderer. This is my bottleneck. My 980ti would love some more work :/ Link to comment Share on other sites More sharing options...
MotoSxorpio Posted October 28, 2015 Share Posted October 28, 2015 Don't worry, ive got all potential power saving setting cut off and the cpu can only ever be in the c2 state at best (lowest drop is down to 3.3ghz when quiet) . All cores active (will try quad at some point just to document it, maybe even 3 as well) I already realize that these settings are placebo, this is more or less to showcase that very fact to the public. The only new info i have so far feom this is that by turning off the nvidia tweak, the game used more cores but no gain in performance. In fact it used all 6 cores whereas with the tweak it uses 4. So seems Nvidia know something about this. I dont understand this at this stage though. In the case of setting iNumHWThreads you actually have to set it to 5, 0 is a core. This is how it was set by default. These first tests just show clealry that nothing actually changed. During today, i will post the default tests. Ultimately there is just no getting around DX9 and its single pipeline renderer. This is my bottleneck. My 980ti would love some more work :/Likely the threaded optimazation for Nvidia is CPU to GPU, I've always left it default, but it defaults to "on". I'm curious if it turns off if I disable all but one core (on the cpu).... Link to comment Share on other sites More sharing options...
SMB92 Posted October 29, 2015 Author Share Posted October 29, 2015 I imagine it wouldnt have any effect yes, at least if the core isnt threaded. I have to have a look at some documentation on this setting, despite seeming to help keep the cpu activity more efficient, i couldnt say at this point that actually provided any performance gain. Link to comment Share on other sites More sharing options...
MotoSxorpio Posted October 29, 2015 Share Posted October 29, 2015 No change in performance for me whatsoever is if this setting is enabled or not. Link to comment Share on other sites More sharing options...
FiftyTifty Posted October 29, 2015 Share Posted October 29, 2015 According to Boris on the ENB forums, Skyrim has a fairly hackish multithreaded renderer; one core builds an array consisting of all the draw calls for a frame, then a different core processes the array. In regards to hyperthreading, a fellow on the Tale Of Two Wastelands forum was experiencing microstutter in his game. I advised him to try disabling hyperthreading in his BIOS, which fixed the microstutter. I wouldn't be surprised if a slight bit of stutter is being caused by that. Also, if you set an fps cap and set iFPSClamp= in Skyrim.ini to the same value, does your loading stutter go away? If you set EnableUnsafeMemoryHacks=true in enblocal.ini, does the cell-loading stutter go away @ ugrids=5? Link to comment Share on other sites More sharing options...
SMB92 Posted October 29, 2015 Author Share Posted October 29, 2015 Im fairly positive the stutter is from HT atm, its too exacerbated and pronounced with it on. Having said that the overall FPS is about the same.Regarding the unsafe hacks, that worked well on my 7970Ghz. It doesnt appear to do anything on the 980ti. Setting a frame cap has never ironed out that stutter for me, if i cap it at 20 then it will drop to 15 and if i cap it 55 it will drop to 35 etc. Having said that, i will run a test while i have HT on and see if that actually makes a difference now.If Boris is correct (i imagine he is) then that explains why the overall fps appears to be more affected by the draw call count then the actual actual number of shapes drawn (they dont always correlate, i have seen scenes where triangle count exceeded 7 million but draw calls around 5000, and scenes with 4 million but ludicrous 9000 calls, best tested with JKs cities, and frames were better with the former) EDIT: Test 5 indicates that one of the supposedly redundant settings actually changes which cores the game works from. Haven't analyzed this further as of yet. Link to comment Share on other sites More sharing options...
Recommended Posts