배경:
LXD와 호환되지 않는 시스템 단위 파일을 제공하는 패키지가 있습니다. 특히 컨테이너 내부에서 실패하는 것으로 보이는 다음 두 가지 옵션을 사용합니다.
[Service]
IOSchedulingClass=realtime
CPUSchedulingPolicy=rr
그래서 나는 노력한다드롭인을 사용하여 이를 재정의하세요.systemctl edit
다음과 함께 사용:
[Service]
IOSchedulingClass=
CPUSchedulingPolicy=
하지만 다음과 같은 메시지가 나타납니다 journalctl -xe
.
Jun 17 18:40:14 nickel systemd[1]: [/etc/systemd/system/freeswitch.service.d/override.conf:2] Failed to parse IO scheduling class, ignoring:
Jun 17 18:40:14 nickel systemd[1]: [/etc/systemd/system/freeswitch.service.d/override.conf:4] Failed to parse CPU scheduling policy, ignoring:
질문:
해당 옵션을 취소하는 것은 허용되지 않는 것 같습니다. 또한 빈 따옴표 쌍을 사용해 보았습니다(예 IOSchedulingClass=""
: ). 이를 수행하는 올바른 방법은 무엇입니까? 전체 유닛 파일을 덮어쓸 수 있다는 것을 알고 있지만 가능하다면 압축된 유닛 파일의 후속 업데이트를 차단하고 싶지 않습니다.
참조,systemd.exec(5)
맨페이지이를 수행할 수 있는 방법이 있어야 한다고 제안합니다.
이 옵션을 빈 문자열로 지정하면 IOSchedulingClass= 및 IOSchedulingPriority=의 모든 이전 사양이 적용되지 않습니다.
답변1
버그인 것 같지만 시도해 보겠습니다.
[Service]
IOSchedulingClass=best-effort
CPUSchedulingPolicy=other
그것을 고치십시오. 이는 ioprio_set
및 맨페이지 에서 가져온 기본값입니다 sched_setscheduler
.
물론 동일한 이름의 파일을 넣어서 이 작업을 수행할 수도 있습니다 /etc/systemd/system/
. 확실히 더 많은 유지 관리가 필요하므로 이 작업을 수행하지 않는 것이 좋습니다(컨테이너 빌드의 일부로 작성할 수 있음).