nice 및 renice 명령을 사용하여 Linux 프로세스 우선 순위를 설정하는 방법
이 기사에서는 커널 스케줄러 (프로세스 스케줄러라고도 함)와이 가이드의 범위를 벗어난 주제 인 프로세스 우선 순위에 대해 간략하게 설명합니다. 그런 다음 약간의 Linux 프로세스 관리에 대해 알아 보겠습니다. 수정 된 우선 순위로 프로그램 또는 명령을 실행하는 방법과 Linux 프로세스 실행의 우선 순위를 변경하는 방법을 살펴 봅니다.
또한 읽기 : Linux 프로세스를 모니터링하고 사용자 단위로 프로세스 제한을 설정하는 방법
커널 스케줄러는 실행 가능한 모든 프로세스 중에서 다음에 실행할 가장 적합한 프로세스를 결정하는 커널 단위입니다. 시스템에서 실행 가능한 프로세스 사이에 프로세서 시간을 할당합니다. 실행 가능한 프로세스는 CPU 시간 만 대기하고 실행할 준비가 된 프로세스입니다.
스케줄러는 우선 순위 기반 스케줄링 알고리즘을 사용하여 시스템에서 실행 가능한 프로세스 중에서 선택하여 Linux에서 멀티 태스킹의 핵심을 형성합니다. CPU 시간에 대한 필요성과 가장 가치있는 것에 따라 프로세스의 순위를 매 깁니다.
커널은 프로세스에 첨부 된 스케줄링 우선 순위 인 프로세스 우선 순위를 포함하여 프로세스에 대한 많은 정보를 저장합니다. 우선 순위가 높은 프로세스는 우선 순위가 낮은 프로세스보다 먼저 실행되고 동일한 우선 순위의 프로세스는 다음 순서로 반복적으로 예약됩니다.
Linux에는 총 140 개의 우선 순위와 두 가지 다른 우선 순위 범위가 있습니다. 첫 번째는 -20
(가장 높은 우선 순위 값)에서 19
(가장 낮은 우선 순위 값)까지의 범위 인 nice 값 (niceness)이며 기본값은 0 <입니다./code>, 이것이이 가이드에서 알아볼 것입니다. "다른 하나는 실시간 우선 순위로, 기본적으로 1에서 99까지의 범위이며 100에서 139는 사용자 공간을 의미합니다.
Linux의 중요한 특징 중 하나는 동적 우선 순위 기반 스케줄링으로, 나중에 살펴 보 겠지만 필요에 따라 프로세스의 좋은 가치를 변경 (증가 또는 감소) 할 수 있습니다.
Linux 프로세스의 좋은 가치를 확인하는 방법
프로세스의 좋은 값을보기 위해 ps, top 또는 htop과 같은 유틸리티를 사용할 수 있습니다.
ps 명령을 사용하여 사용자 정의 형식으로 프로세스 nice 값을 보려면 (여기서 NI
열은 프로세스의 장점을 보여줍니다).
$ ps -eo pid,ppid,ni,comm

또는 top 또는 htop 유틸리티를 사용하여 표시된대로 Linux 프로세스 좋은 값을 볼 수 있습니다.
$ top $ htop


위의 상단 및 상단 출력에서 프로세스의 우선 순위를 보여주는 PR
및 PRI
라는 열이 있음을 알 수 있습니다.
따라서 이것은 다음을 의미합니다.
NI
– is the nice value, which is a user-space concept, whilePR
orPRI
– is the process’s actual priority, as seen by the Linux kernel.
Total number of priorities = 140 Real time priority range(PR or PRI): 0 to 99 User space priority range: 100 to 139
좋은 값 범위 (NI) : -20 ~ 19
PR = 20 + NI PR = 20 + (-20 to + 19) PR = 20 + -20 to 20 + 19 PR = 0 to 39 which is same as 100 to 139.
그러나 아래 스크린 샷에 표시된 것처럼 숫자가 아닌 rt
가 표시되면 기본적으로 프로세스가 실시간 예약 우선 순위에서 실행되고 있음을 의미합니다.

Linux에서 주어진 좋은 값으로 명령을 실행하는 방법
여기에서는 프로그램 또는 명령의 CPU 사용 우선 순위를 지정하는 방법을 살펴 보겠습니다. CPU를 많이 사용하는 프로그램이나 작업이 있지만 완료하는 데 시간이 오래 걸릴 수 있음을 이해하는 경우 nice 명령을 사용하여 우선 순위를 높거나 유리하게 설정할 수 있습니다.
구문은 다음과 같습니다.
$ nice -n niceness-value [command args] OR $ nice -niceness-value [command args] #it’s confusing for negative values OR $ nice --adjustment=niceness-value [command args]
중대한:
- If no value is provided, nice sets a priority of 10 by default.
- A command or program run without nice defaults to a priority of zero.
- Only root can run a command or program with increased or high priority.
- Normal users can only run a command or program with low priority.
예를 들어, 기본 우선 순위로 프로그램이나 명령을 시작하는 대신 다음 nice 명령을 사용하여 특정 우선 순위로 시작할 수 있습니다.
$ sudo nice -n 5 tar -czf backup.tar.gz ./Documents/* OR $ sudo nice --adjustment=5 tar -czf backup.tar.gz ./Documents/*
특히 부정적인 niceness 값에 대해 약간 혼란스러운 세 번째 방법을 사용할 수도 있습니다.
$ sudo nice -5 tar -czf backup.tar.gz ./Documents/*
Linux에서 프로세스의 예약 우선 순위 변경
앞서 언급했듯이 Linux는 동적 우선 순위 기반 스케줄링을 허용합니다. 따라서 프로그램이 이미 실행중인 경우 다음 형식의 renice 명령을 사용하여 우선 순위를 변경할 수 있습니다.
$ renice -n -12 -p 1055 $ renice -n -2 -u apache

아래의 샘플 상단 출력에서 PID 1055를 사용하는 teamspe +의 장점은 이제 -12
이며 사용자 apache가 소유 한 모든 프로세스에 대해 -2
입니다.
이 출력을 계속 사용하면 공식 PR = 20 + NI 스탠드를 볼 수 있습니다.
PR for ts3server = 20 + -12 = 8 PR for apache processes = 20 + -2 = 18

사용자의 프로세스 nice 값에 대한 renice 명령으로 변경 한 사항은 다음에 재부팅 할 때까지만 적용됩니다. 영구적 인 기본값을 설정하려면 다음 섹션을 읽으십시오.
특정 사용자 프로세스의 기본 Nice 값을 설정하는 방법
/etc/security/limits.conf 파일에서 특정 사용자 또는 그룹의 기본 nice 값을 설정할 수 있습니다. 주요 기능은 PAM을 통해 로그인 한 사용자에 대한 리소스 제한을 정의하는 것입니다.
사용자에 대한 제한을 정의하는 구문은 다음과 같습니다 (여러 열의 가능한 값은 파일에 설명되어 있음).
#<domain> <type> <item> <value>
이제 hard –는 하드 링크를 적용하고 soft는 소프트 제한을 적용하는 아래 구문을 사용합니다.
<username> <hard|soft> priority <nice value>
또는 /etc/security/limits.d/ 아래에 파일을 생성하여 위의 기본 파일의 설정을 재정의하면 이러한 파일을 알파벳 순서로 읽습니다.
사용자 tecmint에 대한 /etc/security/limits.d/tecmint-priority.conf 파일을 작성하여 시작하십시오.
# vi /etc/security/limits.d/tecmint-priority.conf
그런 다음이 구성을 추가하십시오.
tecmint hard priority 10
파일을 저장하고 닫습니다. 이제부터 tecmint가 소유 한 모든 프로세스의 좋은 값은 10이고 PR은 30입니다.
자세한 내용은 nice 및 renice의 man 페이지를 참조하십시오.
$ man nice $ man renice
Linux 프로세스 관리에 대한 다음 기사를 읽을 수도 있습니다.
- How to Find and Kill Running Processes in Linux
- A Guide to Kill, Pkill and Killall Commands to Terminate a Process in Linux
- How to Monitor System Usage, Outages and Troubleshoot Linux Servers
- CPUTool – Limit and Control CPU Utilization of Any Process in Linux
이 기사에서는 커널 스케줄러, 프로세스 우선 순위에 대해 간략하게 설명하고 수정 된 우선 순위로 프로그램이나 명령을 실행하는 방법과 활성 Linux 프로세스의 우선 순위를 변경하는 방법을 살펴 보았습니다. 아래 피드백 양식을 통해이 주제에 대한 의견을 공유 할 수 있습니다.