Does the number and type of disks affect the ideal q value?

On spinning disks, I might imagine a performance gain by putting each shard on a separate spindle, in which case the ideal performance might be something like q = # of cores = # of spindles. (Although I don't believe it's trivial to separate shards in such a way.)

This may not need to figure into the discussion, since I believe the goal is to find the ideal for low-end hardware, not every possible tweak for high performance.

Jonathan

On 7/11/19 6:07 PM, Joan Touzet wrote:
Hi Tabeth,

This is a good start. I'll let others comment on the specific advice.

One point raised in this thread is ermouth's request to have this value
automatically set by the installer. Detecting the number of cores in a
cross-platform way is pretty challenging, especially when you consider
things like hyperthreading (which aren't full "cores") on physical machines.

I agree a table would be a good thing for the docs, but we really need a
single number for q (plus other config settings) that will be good
defaults for low-performing HW.

-Joan

On 2019-07-11 11:43, Tabeth Nkangoh wrote:
Hello all,


After reading the documentation 
<https://docs.couchdb.org/en/2.2.0/cluster/sharding.html> and this thread I 
propose the following formula to document officially for determining the Q and N 
values.


To start, as currently documented, N should be set to the number of nodes. This 
much is straightforward and is documented more or less correctly.



For Q, it should equal the amount of cores at a minimum. So, for the cheapest 
Digital Ocean droplet, which 1GB of RAM and 1vCPU, Q should be set to 1 by the 
user. In the case that each core is sufficiently beefy, e.g. Intel Xeon or 
turbo clocked AMD EPYC 7000 2 should be added. 2 is an arbitrary value but 
reflects the reality that from what I can tell a dramatically higher clock 
speed benefits CouchDB performance AFAIK (I'm not sure if this benefit is a 
constant or a multiplier, but I doubt it is a multiplier simply due to the 
diminishing returns seen in increased clock speed).


To summarize the following table can be used (for example):


CPU Cores       CPU Clock Speed         Q Value
1       Low     1
2       Low     2
2       High    4
3       High    5
4       Low     4


Does anyone have any qualms with this as a general guide to give users in 
determining the Q value they should set for their CouchDB instance? If not I 
can submit a PR soon on this (have to figure out how to create a new reference 
for one that's currently open first).

Tabeth

________________________________
From: Joan Touzet <woh...@apache.org>
Sent: Thursday, July 11, 2019 11:17 AM
To: dev@couchdb.apache.org
Subject: Re: CouchDB and future

On 2019-07-11 8:05, ermouth wrote:
to help with the documentation step
Probably. Please give me a hint what you need.
What default settings right now are wrong for a system with low RAM, low
CPU, and slow disk - such as a RaspberryPi v1, or a $15/mo AWS server?

-Joan


Reply via email to