Skip to content
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

Out of memory error running bench3 with 500000 records #36

Closed
meddulla opened this issue Nov 28, 2013 · 7 comments
Closed

Out of memory error running bench3 with 500000 records #36

meddulla opened this issue Nov 28, 2013 · 7 comments

Comments

@meddulla
Copy link

Hi,

I was looking into tiedot and was running the benchmark with UID's with 500000 as benchsize (./tiedot --mode=bench3 --benchsize=500000). I get this error:

runtime: memory allocated by OS (0xb0514000) not in usable range [0x11407000,0x91407000)
fatal error: out of memory

Is this a bug or a known limitation due to the use of memory mapped files?

@HouzuoGuo
Copy link
Owner

Hello Meddulla.

Benchmark 1 and 3 are designed to find performance regression in individual document operation. To make benchmark result more accurate, all documents are prepared up-front before being inserted into collection.

Therefore, there are benchsize deserialized JSON structures in memory before the real benchmark begins.

Deserialized 500k JSON documents should use approx. 3 - 3.5 GB of memory. Please make sure your system has enough free memory before proceeding.

On another hand, Benchmark 2 (-mode=bench2) is designed to find concurrency performance regressions, and require very little available memory to run even with a very large benchsize.

If your system has at least 1.5 GB of free memory, it should be able to handle benchmark 2 with more than 2 million records easily.

Some more information can be found at (slightly outdated) page "Performance Tuning and Benchmark"(https://github.com/HouzuoGuo/tiedot/wiki/Performance-tuning-and-benchmarks),

In normal operation, tiedot requires little memory to run. Experiments have been conducted to find that tiedot HTTP service still runs well in under 90 MB of available system memory.

@HouzuoGuo
Copy link
Owner

Hey Meddulla. Has the situation improved?

@meddulla
Copy link
Author

meddulla commented Dec 4, 2013

Hi

Sorry for the delay. Yes, running the benchmark2 with half a million as benchsize works out perfectly - the wiki page you pointed to helped clear up some confusion. We were looking into tiedot but ended up going a different route for our use case (it involved the concept of 'live queries', ie. queries that stayed as live entities emitting events like itemEnteredLiveQuery and itemLeft as items were updated). Although I did develop some more operators besides equal, like contains, not equal, greater than, etc. Would you be interested in a pull request containing these changes?

@HouzuoGuo
Copy link
Owner

Hey Meddulla.

Sounds good, please make a pull request.

And please let me know how I can make tiedot better for your use case... if there was a chance.

@intel352
Copy link

I can see how the additional operators would be handy, as otherwise you have to get fancier with union/intersect, etc.

Really, the same probably could have been achieved (to some extent) using the Regexp search, but I wonder what the performance impact of Regexp vs a standard operator comparison would be...

@meddulla
Copy link
Author

Yes, i implemented them on par to the equal operator, all going to the V2Lookup function, instead of going to the more optimized functions like V2IntRange so they were not optimized at all, eg. greater than/less than did not use the possible indexes defined and start running through the collection from there. So I don't think it's a worthy trade-off - better off using the current api, with regex a whole lot can be done.

@HouzuoGuo
Copy link
Owner

All right.

By the way a proper range index is coming alone... let's wait for skip list.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants