Skip to content

Other optimisations

Miles edited this page Dec 10, 2020 · 3 revisions

Changing the CPUQuota for running processes

By default there is a setting in the systemd minknow.service file that appears to limit the loading of the systems CPUs - look for the variable CPUQuota and you'll notice it's default is CPUQuota=300% (for the MinIT configuration at least). Modifying this variable has provided quite dramatic increases in performance for particular applications/processes.

Jetson Xavier NX (6 cores)

For the NX I've settled on changing the CPUQuota to 400%, essentially allowing any one running process use a maximum of 4 CPU cores (as I understand it). So for example, doing this means that MinKnow is able to utalise an extra core, leaving 2 cores for Guppy. One could explore changing to 500% and benchmarking, on the NX/AGX Guppy might not require more than a single core. Example minknow.service file below.

[Unit]
Description=MinKNOW Instrument Software for MinIT (daemon)

[Service]
ExecStart=/opt/ont/minknow/bin/mk_manager_svc
WorkingDirectory=/opt/ont/minknow
KillMode=mixed
User=root
Group=root
SyslogIdentifier=minknow
LogsDirectory=minknow
LimitCORE=infinity
LimitNICE=40
NoNewPrivileges=true
ExecStartPre=/bin/sleep 15
CPUQuota=400%


[Install]
WantedBy=multi-user.target

Jeston Xavier AGX (8 cores)

For the Xavier AGX we are able to scale the CPUQuota up to 600%, so a maximum of 6 cores can be used for a running process. Doing so has greatly increased the performance for applications such as adaptive sampling. Example minknow.service below.

[Unit]
Description=MinKNOW Instrument Software for MinIT (daemon)

[Service]
ExecStart=/opt/ont/minknow/bin/mk_manager_svc
WorkingDirectory=/opt/ont/minknow
KillMode=mixed
User=root
Group=root
SyslogIdentifier=minknow
LogsDirectory=minknow
LimitCORE=infinity
LimitNICE=40
NoNewPrivileges=true
ExecStartPre=/bin/sleep 15
CPUQuota=600%


[Install]
WantedBy=multi-user.target