-
-
Notifications
You must be signed in to change notification settings - Fork 645
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Long pauses using LMDB on Windows #482
Comments
Hey @ChrisTrenkamp, The LMDB build included in LWJGL supports sparse file mappings on Windows, which has not made it to the official LMDB release (and probably never will - search for I could revert LMDB to the official release. This issue will be fixed but we lose sparseness, i.e. database files will grow immediately to their maximum size. I think you're the first user that does anything serious with LMDB on Windows, so please let me know if you're OK with this. |
ITS#8324 does mention a performance reduction. If there's a build with the patch reverted, I can test it to see if that's the culprit. |
I should mention I'm currently using a non-patched LMDB release on Windows, so I'm okay with the files immediately growing to their max size. |
Hey @ChrisTrenkamp, sorry for the delay, a build you may test is available here. Compiled from current head of https://github.com/LMDB/lmdb/commits/mdb.RE/0.9, the only difference is that malloc/free calls have been replaced by LWJGL's configurable allocator. Pass |
Yup, the patch is the cause of the slowdown. When using the test lmdb build, it's back to normal. |
@ChrisTrenkamp Thank you! |
Environment
3.2.2
?
8
Windows
core|lmdb
Description
I'm investigating lwjgl3's LMDB module. The program starts with a massive bulk insert. For some reason, there is roughly a 10 second pause every couple thousand inserts (it needs to make a couple hundred-thousand inserts). I ran the same program on a Linux box and it does not have this problem. I can also confirm that lmdbjni and lmdbjava does not have this problem, not even on Windows.
I turned on all the memory debugging options (-Dorg.lwjgl.util.Debug=true -Dorg.lwjgl.util.DebugAllocator=true -Dorg.lwjgl.util.DebugStack=true) and there haven't been any reports while the program is running. I also tried turning on MDB_NOSYNC and MDB_NOMETASYNC and it is still pausing.
Typically, what I would expect to see in the Task Manager is the CPU usage to spike near 100% and the memory usage would slowly climb over the duration of the program. What I'm seeing with lwjgl3's LMDB module is the CPU only slightly goes up and the memory usage remains relatively flat.
I'm not sure what else to look for. Any idea's on what else to look for?
The text was updated successfully, but these errors were encountered: