시스템 전체 일정 수정

시스템 전체 일정 수정

전체 시스템의 프로세스 스케줄링 정책을 변경할 수 있는 방법이 있나요? 예를 들어 모든 프로세스에 대해 기본 SCHED_OTHER를 SCHED_RR로 변경하고 싶습니다. 이 명령은 chrt프로세스에서 작동합니다. 시스템 전체 설정을 변경하고 싶습니다. 이것에 대한 생각이 있나요?

고쳐 쓰다:

더 구체적으로 말하자면, 다른 정책을 사용하여 일부 명령을 실행하고 싶은데 tar문제는 프로그램을 시작하기 전에 프로세스 ID를 모른다는 것입니다.

답변1

chrt는 실행 중인 프로세스의 예약 우선순위를 변경할 수 있을 뿐만 아니라(실제로 pid가 필요함) 특정 예약 정책에 따라 새 프로세스를 시작할 수도 있습니다.

   chrt [options] priority command argument ...

   chrt [options] -p [priority] PID

설명하다

   chrt sets or retrieves the real-time scheduling attributes of an
   existing PID, or runs command with the given attributes.

따라서 SCHED_RR rtprio 10을 처음부터 실행하는 tar를 직접 부팅하려면

chrt -r 10 tar blahblahraroptions

주석에 쓰여진 대로, 실행 중인 모든 프로세스가 동일한 우선순위에서 동일한 스케줄링 정책을 실행하는 것이 타당하지 않다면 이를 달성할 수 있는 방법이 없습니다.
그러나 원하는 스케줄링 정책/우선순위에 따라 모든 사용자의 프로세스를 자동으로 시작할 수 있습니다. 이는 (기본적으로) 하위 프로세스에 의해 상속되기 때문입니다.

1/ bash 프로세스를 포크하고 SCHED_FIFO / 우선순위 10을 예약합니다.

$ chrt -f 10 bash

2/ 지금부터 시작되는 모든 프로세스는 chrt를 사용하지 않고 동일한 방식으로 예약됩니다.

/proc/2074 $ ps -eHo pid,ppid,tid,class,rtprio,ni,pri,comm
...
4168  2074  4168 FF      10   -  50         bash
4192  4168  4192 FF      10   -  50           ps
...

테스트 목적으로만 주의해서 사용하십시오. 물론 포크 폭탄 발사를 피하고 가능한 한 높은 우선순위를 지정하십시오!

관련 정보