[service]와 같이 동일한 이름을 가진 여러 부분을 가질 수 있는 시스템 단위 파일 적용 범위를 사용하십시오.

[service]와 같이 동일한 이름을 가진 여러 부분을 가질 수 있는 시스템 단위 파일 적용 범위를 사용하십시오.

시스템 서비스의 CPU 사용률을 재정의하는 데 관심이 있습니다. 이렇게 하면 정기적으로 실행하는 일부 CPU 집약적 프로세스에서 시스템이 잠기지 않습니다.

실행한 후에는 systemctl edit containerd.service 두 부분이 있음을 확인합니다 [Service].

예를 들어:

systemctl cat containerd.service
# /lib/systemd/system/containerd.service
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd

Delegate=yes
KillMode=process
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
# Comment TasksMax if your systemd version does not supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity

[Install]
WantedBy=multi-user.target

# /etc/systemd/system/containerd.service.d/override.conf

# https://unix.stackexchange.com/questions/494843/how-to-limit-a-systemd-service-to-play-nice-with-the-cpu
# https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html
[Service]
CPUAccounting=True
CPUQuota=95%
MemoryAccounting=True
MemorySwapMax=0

구체적인 값을 보면

systemctl daemon-reload
systemctl show containerd.service | grep MemorySwap
MemorySwapMax=infinity

그들은 변하지 않은 것 같습니다. 이 모든 것이 어떻게 작동하는지 오해하고 있습니까?

다른 값을 보면 변경된 것처럼 보입니다. 예전에는 CPUAccounting=비어 있었는데

systemctl show containerd.service | grep CPUAccountin
CPUAccounting=yes

추가 정보

systemctl --version
systemd 237
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid


uname -a
Linux srv-acquisitions02 4.15.0-66-generic #75-Ubuntu SMP Tue Oct 1 05:24:09 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

관련 정보