Why doesn't my cluster performance scale when I double the number of machines?

multitest takes a variety of arguments:

  • -C <clusterfile> – the same cluster as everywhere else
  • -r multitest – the obvious requirement
  • -f <testspec> – one of the files under tests/ , or something that follows a similar pattern.
  • --num_testers N – the number of tester roles to recruit

A test spec of something like

testTitle = Benchmark
testName = ReadWrite
readsPerTransactionA = 1
writesPerTransactionA = 5
alpha = 0
testDuration = 60
runConsistencyCheck = false

would be about the same as the go client test that you’ve been running. There’s two more options you can add: nodeCount = N defines the number of keys involved in the workload, and valueBytes / minValueBytes defines the size of the value written in the tests.

(Though I didn’t take the time to throw up a mini cluster locally and actually invoke multitest against it, so I’m sorry if anything I gave in the above is wrong.)

If you are going to write a client in Go though, there is some degree of value in benchmarking FDB via your client, because it might teach you things that you’ll need to know when writing an FDB client.