DX11 categorically worse: poor FPS, memory leaks
" " My page file is off, and I am well aware that I could extend my continuous playtime by turning it on, but the OOM crashes are really just a symptom of the underlying issue, i.e. the leak that causes PoE to gobble more and more memory endlessly. Again, the fact that this memory accumulation occurs over many zones, rather than sometime at the start of play, indicates that this is some issue with allocation and garbage collection, rather than memory capacity actually required by PoE to run. Yes I know that no page file is not efficient RAM usage, but I control my simultaneous app usage, and, at 8GB, have never had trouble with memory capacity (DX11 PoE excepted). I much prefer the improved responsiveness enforced by the lack of page file, especially for games like PoE that play by the millisecond and grab at memory like a schizophrenic; it really sucks to die just because your client froze up trying to pull some stale texture or attack sprite that got shunted to the page file because it was last used over half an hour ago. I also prefer the "fast fail" behavior of memory crashes, since it reveals and curtails memory leaks like this, instead of silently trying to compensate with the paging file. It's a lot easier to diagnose a memory crash or warning than an intermittent loss of responsiveness, or a complete grind to a halt if some program loses it and starts allocating ridiculous amounts of memory all of a sudden. " I don't see how just PoE and a media player can be called too much at once. " Err, the client (especially on DX11) runs 64-bit by default no? " Might have to do this at some point. I'm going to mess with a few more settings first to see if I can get a better handle on the problem though. | |
You can't have it both ways. You're trying to run multiple memory-heavy applications at once (PoE, media player, browser) without a pagefile, then you're wondering why you're running out of memory.
If you enable your pagefile, the crashes will go away. It doesn't make a bit of difference, guys. The balls are inert.
|
![]() |
" There are reasons for having a pagefile beyond this; technically, it is less efficient to keep private pages of memory that are unused sitting in memory than extra cache, so having a pagefile allows the OS to store valuable data by backing those private pages with the pagefile. Even with you "carefully controlling" memory use, this is still forcing the overall system to perform worse than it needs to. " PoE doesn't do this for other people, at least, within reasonable limits. Memory use is stable for most users in the 2-3 GB range, fluctuating as you change zones and different models and textures are loaded and freed. It definitely does not grow without bound in "normal" operation. I'm absolutely not denying your experience: for you, this is something that happens. Since this is different from the "common" experience, part of what we are trying to figure out is what is different that might contribute to the behaviour you observe. (Again: I absolutely believe that, for you, the DX11 client leaks memory. I'd love to figure out why so it stops, and you can play.) " Just for the record, most of those live over in the dedicated graphics memory, or dedicated "shared" main memory accessed by the graphics card direct from the memory subsystem. They won't wind up in the pagefile, because they are the wrong type of content. Oh, and to the best of current medical understanding, there is no relationship between schizophrenia and "too much memory", so you might want to choose a better analogy there. Anyway, my advice? Set a fixed 500MB page file size, see if your problems go away. I promise that 500MB, even on a very slow spinning disk, isn't going to hurt that much. :) |
![]() |
" Of those 3 I'm NOT currently using the browser (1GB), and the only other application that qualifies as memory heavy is PoE (at over 6GB), unless you count a 100MB player as heavy... " I know this already. Crashing is not the problem, it's the symptom. The problem is the memory leak, hence its presence in the post title. "If by "perform worse" you mean reserve more RAM than it really needs to, then I'm fine with that; 8GB is plenty for my purposes even without a page file. If you're referring to some sort of loss of responsiveness or speed, I'd like to hear more. I've yet to hear a coherent argument detailing how forcing everything to stay in physical RAM could actually slow things down. " I meant this as an analogy for how games like PoE have some of the most random memory accessing behavior there is, and are ergo some of the programs worst suited for memory/paging algorithms, since there is little to no correlation between how recently or frequently some piece of memory has been accessed previously, and how quickly it will need to be accessed in the future (can YOU predict what'll pop out of that next strongbox?). " I already tried this (see post about futzing with page file). No dice. P.S. I have also since determined that the --noasync and --waitforpreload launch parameters I normally use are not responsible either. Edit: "I now have a sneaking suspicion after rereading this bit, since I remember PoE consistently topping at around 4GB when I ran it on DX9. If that was a limit imposed by something 32-bit rather than the program itself, this issue may be older than I thought. I'll have to look at the DX9 numbers again more closely... Last edited by 三日前#5805 on Jan 10, 2018, 7:11:35 PM
| |
" Yeah, a 32-bit process has access to exactly 4GB of address space, and can use 2GB of that for the program. (That is, all the static data such as the executables and DLLs, DirectX and driver stuff, etc, as well as dynamic memory that it requires.) (3GB is possible on 32-bit host, 4GB on 64-bit host, if the app is compiled "large address space aware", which I have no idea if PoE has, but I doubt it - it is not just a flip-the-switch-and-win option, and comes with some potential performance costs. Well, or did, until the recent meltdown and spectre bugs, which mean you probably pay it anyway, but hey, nobody said this job was going to be easy. ;) Regardless, a 32-bit process imposes a hard cap of 4GB of (main) memory consumption, full stop. So, if you switched to DX11, a 64-bit process, memory consumption could rise above the level it was constrained to with the DX9 process. Bootnote: Before someone comes in and talks about multi-segment processes, yes, it is possible through very non-standard techniques that resolve around mapping and unmapping memory segments on demand, or at a hardware level through use of multiple segments, a technique I don't believe to be accessible in Windows, but may be. Regardless, this is not something PoE does. :) In practice "4GB is a hard cap" is a close enough approximation of accurate. |
![]() |