-
Notifications
You must be signed in to change notification settings - Fork 66
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
Reproducible benchmarks #18
Comments
I am doing testing on my desktop (Ubuntu 16.04, i5 CPU with 32GB memory on Java 8). I am totally with you on moving to docker containers. Currently thinking to dockerize each of them into individual containers with wrk inside. Do you have any better idea? |
We need better explanation of results, at least define what every digit in result means. Also i found that some people create wrk2 https://github.com/giltene/wrk2
We can try docker-compose, so then wrk would live in separate container. But we should test impact of docker to our tests. |
@IRus I totally agree. I will write up something when time is permitted. The test is to gauge the raw throughput and latency of each framework on a very simple response ("Hello World!") without network limitation involves. I am guessing that docker-compose might impact the performance number a little bit as traffic goes through docker network although on the same docker host. Need to test it out on both approaches. The wrk2 looks pretty good. Thanks for the link. |
I just create docker image for wkr2 it can be used this way:
|
Other tools: Personally i used JMeter and ab in past. But i can't compate they with each other and wrk/wrk2. |
I have used both AB and JMeter. They are not designed to work with high performance microservices as they can only generate less than 100K request per second on a commodity hardware. wrk is the most efficient tool to generate enough load without hogging all CPUs. |
@IRus I think that memory and cpu limits should be specified |
@cortwave they can be specified via arguments.
Something like this for 1GB Ram and 4 CPUs |
Docker vs host
|
This is expected as requests have to go though docker network which added another layer. Is your first run using wrk2? |
Sure, i compiled wrk2 (there are few warning, but looks good). |
I trying to limit container with wrk2 (server running in host), but it works fine(i mean it still pretty fast, so result doesn't changes) even with 50mb of RAM, and one CPU. I don't know how to limit CPU performance in container, and i think that this is impossible actually :) Maybe virtual machines can help for limiting CPU. So my conclusion that limiting wrk2 doesn't make much sense. Upd. Why we actually want limit wrk2? I think it doesn't make sense at all, we can limit server, but because of every machine have different CPU it doesn't help too much anyway. |
These limitations will only work in certain scenarios on certain OS. For Java it is very complicated. I was trying to gauge memory usage and couldn't find any reliable way to do so. |
This task is still in our pipeline but as the benchmark has been moved to its own repo, we are going to trace it there. |
Which environment uses for benchmarks (OS, memory, cpu, java version)? What about moving benchmarks execution inside vm/containers with constant OS, resources for +- reproducible benchmarks?
The text was updated successfully, but these errors were encountered: