Better test case timings: I changed from doing entire linear write testing to just touching the pages, to take memory bandwidth out of the equation. VirtualAlloc takes 0ms on 4k pages, 6ms on 2mb pages. Fault handling takes 60ms on 4k pages, 0ms on 2mb pages. So that's that.
-
Show this thread
-
Replying to @cmuratori
Also, do you have experience of similar timings (handling of page fault) on different kernels/platforms? LARGE_PAGES are probably tuned differently because they were introduced to make NT faster on servers (IIS)
1 reply 0 retweets 0 likes -
Replying to @stephc_int13
The problem, if I had to guess, is solely due to the demand-paging nature of the 4k pages. 2mb pages on NT are locked, so they are provisioned in bulk in VirtualAlloc and then there is no faulting (AFAICT). If 4k pages were handled similarly, they would probably be as fast?
1 reply 0 retweets 0 likes -
Replying to @cmuratori
This is also something I am looking into at the moment. It seems like there are many options, do you think you have tried everything or is is simply a quick benchmark to know where you are?
1 reply 0 retweets 0 likes -
Replying to @stephc_int13
I mean I don't think there's much to say about it, unfortunately. 4k pages just suck on cold start because you will spend ~50ms+/gb on useless Windows fault handling, and that's pretty much the end of the story. If there's a way to fix it, I haven't heard what it is :(
2 replies 0 retweets 1 like -
Replying to @cmuratori
They might not be paged from the start. Have you tried this: PrefetchVirtualMemory ?
1 reply 0 retweets 0 likes
Yep, and it only made things worse AFAICT, although since that is not an API I was familiar with, I may not have done it right? If you are able to get a speedup using additional calls such as PrefetchVirtualMemory, please let me know because I am curious.
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.