프로세스의 스케줄링 정책을 변경하여 이를 수행하고 싶었지만 chrt
아래와 같이 systemd 프로세스에는 아무런 영향을 미치지 않습니다. 이것은 예이며 다른 프로세스도 시도했습니다. 아직 SCHED_OTHER입니다.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1862 mahmood 20 0 24980 11908 9768 S 5,9 0,1 0:00.09 systemd
$ sudo chrt -p 1862
pid 1862's current scheduling policy: SCHED_OTHER
pid 1862's current scheduling priority: 0
$ sudo chrt -f -p 1862
pid 1862's current scheduling policy: SCHED_OTHER
pid 1862's current scheduling priority: 0
$ sudo chrt -p 1862
pid 1862's current scheduling policy: SCHED_OTHER
pid 1862's current scheduling priority: 0
이것에 대한 생각이 있나요?
답변1
$ sudo chrt -f -p 1862
지침에 따르면 chrt를 사용하고 있지 않습니다 man chrt
.
chrt -r -p 우선순위 PID
스케줄링 정책을 변경할 때 우선순위 매개변수는 다음과 같습니다.아니요임의로 선택할 수 있는. chrt --max
허용 가능한 값의 범위를 확인하는 데 사용됩니다 .
$ chrt -p 21549
pid 21549's current scheduling policy: SCHED_OTHER
pid 21549's current scheduling priority: 0
$ chrt -f -p 10 21549
$ chrt -p 21549
pid 21549's current scheduling policy: SCHED_FIFO
pid 21549's current scheduling priority: 10
chrt -o -p 0 21549
원래 SCHED_OTHER 정책 + 우선순위를 복원하는 데 사용됩니다 .
답변2
나쁜 소식: 아마도 chrt
버그일 가능성이 높습니다.
sudo strace -e /sched -o /tmp/strace chrt -f -p 94495
쌍의 시스템 호출만 표시 sched_getattr
하고 쌍의 시스템 호출은 표시하지 않아도 sched_setattr
됩니다 .
cat /tmp/strace
sched_getattr(94495, {size=56, sched_policy=SCHED_OTHER, sched_flags=0, sched_nice=0, sched_priority=0, sched_runtime=0, sched_deadline=0, sched_period=0, sched_util_min=0, sched_util_max=0}, 56, 0) = 0
+++ exited with 0 +++
그래서 설정하려고도 하지 않았습니다.