Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Setting NUMA to interleaved for Linux dbservers #1366

Closed
Ryan3435 opened this issue Jul 25, 2023 · 1 comment
Closed

Setting NUMA to interleaved for Linux dbservers #1366

Ryan3435 opened this issue Jul 25, 2023 · 1 comment

Comments

@Ryan3435
Copy link

When deploying a cluster of ArangoDB dbservers using kube-arangodb on Linux machines the following warning is shown during initialization:

2023-07-21T14:07:34Z [1] WARNING [3e451] {memory} It is recommended to set NUMA to interleaved.
2023-07-21T14:07:34Z [1] WARNING [b25a4] {memory} put 'numactl --interleave=all' in front of your command

There doesn't seem to be an option within the operator to enable interleaved NUMA on the dbservers.

There is an option to override the entrypoint which seems like a possible solution but the entrypoint only allows for specifying the binary and no additional arguments.

When trying to override the entrypoint with a configuration like this:

apiVersion: "database.arangodb.com/v1"
kind: "ArangoDeployment"
metadata:
  name: "arangodb-cluster"
spec:
    dbservers:
        entrypoint: /usr/sbin/numactl --interleave=all /usr/sbin/arangod

I get the following error:

Error: failed to create containerd task: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/usr/bin/numactl --interleave=all /usr/sbin/arangod": stat /usr/bin/numactl --interleave=all /usr/sbin/arangod: no such file or directory: unknown

I have also tried utilizing the args configuration option to specify numactl --interleave=all arangod like the configuration below:

apiVersion: "database.arangodb.com/v1"
kind: "ArangoDeployment"
metadata:
  name: "arangodb-cluster"
spec:
    dbservers:
        entrypoint: /usr/bin/numactl
        args: ["--interleave=all", "arangod"]

but user specified arguments are added to the end of the command line arguments so this results in a final command of:

/usr/bin/numactl
      --cluster.agency-endpoint=<endpoint>
      --cluster.my-address=<address>
      --cluster.my-role=PRIMARY
      --database.directory=<dir>
      --foxx.queues=false
      --log.level=INFO
      --log.output=+
      --server.authentication=true
      --server.endpoint=tcp://[::]:8529
      --server.statistics=true
      --server.storage-engine=rocksdb
      --interleave=all
      arangod

which can't work because the arangod argument must come before the arguments.

There is also an entrypoint.sh script in the container which seems to have NUMA configurations within it but I haven't been able to invoke it as the entrypoint either.

Is there a simple way to enable NUMA on Linux dbservers via the kube-arango operator?

I am using kube-arangodb version 1.2.30.

@ajanikow
Copy link
Collaborator

Hello!

Starting from the latest release, options can be set via:

spec:
  agents:
    numactl:
      enabled: true
      args:
      - --interleave=all

Best Regards,
Adam.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants