I installed AeroSpike on a VirtualBox VM (Ubuntu server 14.04, 8 cores, 8GB RAM). VirtualBox is running on a 24-core server with 64GB RAM on board. I added port forwarding for the web console and AeroSpike itself and test it with .NET client via 1GB LAN. The test was very simple: it just Put
ed same small json (~200 bytes) with different int
keys in a single thread. The result shocked me: ~200 operation per second. Should such a disaster performance be expected on a described configuration?
I read on Twitter you’re back up to 25k tps on an old laptop. Awesome! If there was something you did for tweaking and performance tuning, would love to hear it. Meanwhile, have a great weekend!
Edit: Whoops! Now I understand your 25k tps was on a separate box, not the VM you were running. So, still an open issue.
Q: I understand you’re running Ubuntu in the Virtual Box. What’s the native OS on the box you’re running the VM?
The native OS is Windows Server Standard 2012 R2 (x64). The client is a .NET app running on a machine with the same Windows Server version via 1GBit. All these are real servers, not a VMs in a cloud.
What about my old laptop, I reached 50K TPS on it yesterday (50K reads or writes, or 25K reads + 25K writes) Awesome.
To clarify things, I need some reasonable performance on VirtualBox to make a POC. We are a windows shop (mostly), so I need to create a well performing prototype to convince people to use Linux servers for the project.
I cannot speak to whether or not this is expected since this is not a configuration that we actively performance test. A quick search for VM benchmarks yields VirtualBox being the least performant option.
Would it be possible to POC on EC2’s infrastructure? We also provide AWS Tuning Docs to help get you started.
The issue is not actual for me anymore, feel free to close it.
Great to hear! Please feel free to reach out to us if you have any other questions or issues.
Regards,
Maud
I’ve been trying out Aerospike + Python on Virtualbox and want to say I’ve had poor results as well. I did several tests and they all came back with roughly equal results: ~800 ops/sec (client.put) and 250 ops/sec (UDF LSET). The numbers were quite consistent even as I tried the following approaches:
- synchronous inserts
- async inserts with Twisted deferreds
- async inserts with Twisted deferreds plus offloading to separate worker threads (GIL lock) (tried 1-50 threads)
The physical hardware: Laptop (Win 7, Core i5 1.6GHz, 2x8G RAM, 500G SSD) The laptop hosts 2 VMs (Python client, Aerospike server). Both are on Debian 7, 2 physical cores, 1.5G RAM
Hopefully I’ll get (much) better results on a real box.
Without access to top
it’s hard to tell, but most likely it’s the networking between those virtual machines. I’m using on VMWare instance on mine (for the Aerospike cluster) with 2 cores and 4GB RAM, while the client is on my actual machine, not virtualized. The numbers are significantly higher in my similarly simple laptop case.
Try a different setting and/or let us know more details.