
나는 두 가지 프로세스로 Ubuntu 기본 서버를 실행하고 있습니다. - 프로세스 1 - 100% 가동 시간 계산 수행, 컴퓨팅 성능을 커뮤니티에 공유하는 데 사용(prio 19에서 실행 중) - 프로세스 2 - 5~10분 동안 계산 수행, 때때로 나를 위해 계산하는 데 사용합니다(@prio -19를 실행 중입니다).
나는 프로세스 2에 100% 컴퓨팅 성능이 제공되기를 원합니다(프로세스 1은 그 순간 CPU의 0%에 가까워야 합니다).
나는 nice/renice를 사용하려고 시도했으며 프로세스 1에는 prio 19(가능한 가장 낮음)가 제공되고 프로세스 2에는 prio -19(가능한 가장 높음)가 제공됩니다. 하지만 내가 얻는 가장 좋은 것은 프로세스 1의 경우 CPU의 50%이고 프로세스 2의 경우 CPU의 50%입니다(htop으로 확인). 이는 나를 놀라게 했습니다...
두 프로세스 모두 다중 스레드이며 단독으로 실행될 때 CPU의 모든 코어를 100% 소비합니다. 다른 리소스(I/O, 메모리, 대역폭 등)는 이 사용량에 영향을 미칠 수 없습니다.
컴퓨팅 성능이 필요할 때 프로세스를 수동으로 중지/시작하고 싶지 않습니다(두 프로세스 모두 항상 실행되어야 함). 프로세스 2에 대한 CPU는 100% 자동으로 제공되어야 합니다.
목표를 달성하려면 어떻게 해야 합니까? 감사해요.
답변1
@ubfan1 덕분에 다양한 일정 계획 전략을 모색했으며 지금까지 달성한 최고의 결과는 다음과 같습니다.
프로세스 1이 SCHED_BATCH 정책으로 실행 중입니다.
프로세스 2가 SCHED_RR 정책으로 실행 중입니다.
결과: 두 프로세스가 동시에 실행되는 경우: - 프로세스 1에는 ca가 제공됩니다. CPU의 5% - 프로세스 2에는 ca. CPU의 95%
프로세스 1만 계산을 수행하는 경우(프로세스 2는 내 입력이 계산을 시작하기를 기다리고 있음) - 프로세스 1은 CPU를 100% 사용하고 있습니다.
누군가 더 관심이 있다면 다음을 읽어보세요.