Number of queues and threads per queue for 150x


#1

Hi,

We’d like to test our SSDs with very high traffic e.g. 70x or even 150x, but when we set:

num-queues: 2
threads-per-queue: 8
read-reqs-per-sec: 300000
write-reqs-per-sec: 150000

we get

ERROR: too many read reqs queued

We tried to increase threads-per-queue to 48 (we have 48 cpu cores, so two threads per core). In that case test can be performed.

Question is: does num-queues and threads-per-queue setting have impact on test results? If so, do you have any tips on how to choose best values to set?

There is test of Micron P320h 700GB for 150x (http://www.aerospike.com/docs/operations/plan/ssd/ssd_certification.html ). Do you know how to get its configuration?


#2

The number of queues and threads per queue does have an impact on higher performing devices.

Looks like you have the correct settings for the number of queues. I would also recommend setting the number of threads per queue higher. The exact value is unclear, but depends on the CPU and your device. In most cases with NVMe or similar, a value of 16 is optimal with recent generation Xeon processors.

If your device times and transaction times differ from each other by a lot, this is normally an indication that your queue/thread settings are not optimal.

Note that at 150x, you do just about reach the limits of the current ACT. While Aerospike database can have multiple service threads, the ACT only uses a single high level one. So we have found that at around these speeds (depending on your CPU), 150x is about the top limit. In order to simulate multiple threads, you can partition your device and run multiple ACTs in parallel.

Very rare to have a device that can exceed the normal bounds of the ACT. But there are a few. I am working privately with various manufacturers that do this. I am happy to help, if you wish. Just drop me a private email to young@aerospike.com.