How to improve performance when using YCSB for performance testing with NuoDB?
Let’s use an example of a system with 1 Storage Manager (SM) and 2 Transaction Engines (TEs). Each host has 128G memory.
1) Ensure your NuoDB Journal and Archive are on SEPARATE storage devices. If you only have one SSD, put the Journal on the SSD.
2) Set --mem on the SM and TEs to be about 40% less than the total system memory and make sure the nodes are not swapping during the YCSB load.
The SM has a greater memory need than TEs when multiple TEs are in use, so the SM should get all available memory on one of the hosts. We recommend AGAINST co-locating the TE with the SM since there are 2 other TE hosts. The following setup is recommended:
host1: SM with --mem set to 80 (80g x 1.4 = 112g, which gives us room for the memory allocator overhead before exceeding system RAM)
host2: TE with --mem set to 64g
host3: TE with --mem set to 64g
3) Make sure YCSB is using enough threads to saturate NuoDB - 2 client threads per TE core should do it
4) Use a monitoring tool like nmon or top on the client, TE and SM node(s) to see what might be the bottleneck.
5) Running YCSB client on the TE hosts may improve performance.