Server Knobs - How in the world do you set them

We are using the operator for a large deployment of fdb in k8s using the operator.

We are using the cluster spec:

apiVersion: apps.foundationdb.org/v1beta2
kind: FoundationDBCluster

In the spec we are trying to set the custom paramter “storage_hard_limit_bytes”.

How we are doing this is with the “customParameter” section of the spec above:

storage:
  customParameters:
    - storage_hard_limit_bytes=3500000000

This does not work and stops the cluster from correctly reconciling can any help me with what is wrong if it is my understanding or in how we are setting this knob option?

Note we know we need to increase this variable from a lot of performance testing we just do not know how to do this. For some other information, we are using the RecordLayer in Java as a client. I got a little lost looking at the NetworkOptions trying to set the knob this way.

This seems to work :eyes:

 processes:
    general:
      customParameters:
      - memory=20GiB
      - knob_storage_hard_limit_bytes=10GiB
      - knob_target_bytes_per_storage_server=9GiB

which seems to be correctly interpreted into the commandline which I can see from the operator logs:

/usr/bin/fdbserver 
--class=log 
--cluster_file=/var/fdb/data/fdb.cluster 
--datadir=/var/fdb/data 
--knob_storage_hard_limit_bytes=10GiB 
--knob_target_bytes_per_storage_server=9GiB
...```

@padamson is correct on how to set the knob. We have an example in our docs: fdb-kubernetes-operator/operations.md at main · FoundationDB/fdb-kubernetes-operator · GitHub (if anything is missing please let us know). The parameters that are set in customParameters are directly passed down to the fdbmonitor configuration, so you have to make sure you set the correct parameters. It basically allows the user to set all configuration setting documented in Configuration — FoundationDB 7.2 and all knobs (which must have the prefix knob_.

1 Like