나는 nice를 사용하여 평소보다 더 높은 우선순위로 X 응용프로그램을 시작하는 프로그램 실행 프로그램을 작성 중입니다. nice/renice 사용에 대한 가이드는 많지만 프로그램 우선순위 설정에 대한 모범 사례에 대한 논의는 많지 않습니다. -10을 초과하는 것은 "중요한 하위 프로세스"가 이에 의존하는 프로그램보다 우선순위가 낮기 때문에 역효과를 낳을 수 있다고 말하는 사이트와 -20은 나쁜 생각이지만 다른 모든 것은 괜찮다고 말하는 다른 사이트를 발견했습니다. 그래서 내 질문은 워드 프로세서/브라우저/게임 등을 실행하는 단일 사용자 데스크톱에 대한 수익이 감소하는 지점이 있는지, 아니면 사용자가 실행하는 모든 프로그램에 대해 기본값을 -19로 설정하고 싶지 않은 이유가 있는지입니다. ? 현재는 Linux 커널에서 실행될 것으로 예상하지만 BSD와 같은 다른 유니스에도 잠재적인 문제가 있는지에도 관심이 있습니다.
답변1
Linux의 스케줄러에는 다음과 같은 전략이 있습니다.
SCHED_NORMAL
거의 모든 작업에 사용됩니다. 이러한 작업의 우선순위가 높을수록 예약 시간이 길어집니다.SCHED_BATCH
우선순위 가 낮습니다SCHED_NORMAL
.SCHED_IDLE
19
보다 우선순위가 더 낮습니다SCHED_NORMAL
.SCHED_FIFO
/는SCHED_RR
거의 실시간이며 시스템에서 가장 높은 우선순위를 갖습니다. 기본적으로 시간 분할이 없으며 종료될 때까지 실행할 수 있습니다.
이에 대한 문서는 다음과 같습니다.https://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt
이러한 우선순위가 어떻게 진행되고 있는지 이해하려면 다음 사항을 알아야 합니다.스케줄러가 하는 일:
컴퓨팅에서 예약은 작업을 수행하는 리소스에 어떤 방식으로든 지정된 작업을 할당하는 방법입니다.
뿐만 아니라,만성 피로 증후군당신이 말하는 스케줄러입니다.
따라서 프로세스를 더 높은 우선순위로 설정한다는 것은 스케줄러가 더 낮은 우선순위 프로세스보다 해당 프로세스를 선택한다는 것을 의미합니다.
답변2
nice
단일 사용자 데스크톱에서는 실시간 예약보다는 친숙함과 명령에 대해 이야기한다고 가정할 때 기본 응용 프로그램 프로세스 우선 순위를 변경해도 실제 단점/위험이 없습니다.
그러나 다음 두 가지 이유로 인해 실질적인 인센티브도 없을 것입니다.
프로세스 우선순위는 CPU 사용량과 관련이 있지만 요즘에는 CPU가 병목 현상을 일으키는 경우가 거의 없고 CPU가 빠르며 멀티 코어 및 멀티 스레드인 경우가 많기 때문에 일반적으로 프로세스를 동시에 실행할 수 있는 전력이 충분합니다. CPU(있는 경우).
데스크톱 응용 프로그램은 일반적으로 대화형이므로 사용자 입력, 네트워크 I/O 또는 디스크 I/O를 기다리는 데 많은 시간을 소비하므로 우선 순위를 변경해도 이러한 유휴 기간이 지나면 실제로 우선 순위가 변경되므로 큰 영향을 미치지 않습니다. 증가하다.
경우에 따라 CPU 집약적인 일괄 작업을 시작하는 경우 우선 순위를 낮추거나 다른 프로세스의 우선 순위를 높이면 눈에 띄는 영향을 미칠 수 있습니다.