컴퓨터에서 여러 애플리케이션을 실행하면 모두 동시에 실행되는 것처럼 보입니다. 실제로는 CPU 가 이들 사이를 빠르게 전환하며 각 프로세스에 짧은 처리 시간을 할당합니다.
CPU 가 프로세스를 관리하는 방법
각 프로세스에는 "타임 슬라이스 (time slice)"라고 하는 짧은 CPU 시간이 할당됩니다. 타임 슬라이스가 끝나면 프로세스는 일시 중지되고 CPU 는 다음 프로세스로 이동합니다. 기본적으로 Linux 커널은 프로세스를 라운드 로빈 방식으로 스케줄링하여 모든 프로세스가 완료될 때까지 공정한 CPU 시간을 얻도록 보장합니다. 커널 스케줄러는 이러한 빠른 전환을 관리하는 데 매우 효율적입니다.
Linux 에서 Niceness 란 무엇인가
프로세스가 CPU 시간을 직접 제어할 수는 없지만 커널의 스케줄링 결정에 영향을 줄 수 있습니다. 이는 프로세스의 linux niceness 값을 조정하여 수행됩니다. "Niceness"라는 용어는 시스템의 다른 프로세스에 대해 해당 프로세스가 얼마나 "예의 바른지 (nice)"를 나타냅니다.
프로세스의 niceness는 -20(가장 높은 우선순위) 에서 19(가장 낮은 우선순위) 사이의 숫자로 표현됩니다.
- 높은 niceness 값 (예: 19) 은 해당 프로세스가 매우 "예의 바르며" 우선순위가 낮아 CPU 시간을 다른 프로세스에 양보함을 의미합니다.
- 낮거나 음수인 niceness 값 (예: -20) 은 해당 프로세스가 "예의 바르지 않으며" 더 많은 CPU 시간을 요구하여 더 높은 우선순위를 가짐을 의미합니다.
linux process niceness를 이해하는 것은 시스템 리소스를 효과적으로 관리하는 데 핵심입니다.
프로세스 우선순위 조정
top 명령을 사용하여 실행 중인 프로세스의 현재 niceness 수준을 볼 수 있습니다. niceness 값을 표시하는 NI 열을 확인하십시오.
top
niceness linux 값을 제어하려면 nice 및 renice 명령을 사용할 수 있습니다.
특정 niceness 수준으로 새 프로세스를 시작하려면 nice 명령을 사용합니다. 예를 들어, 다음 명령은 niceness 를 5 로 설정하여 apt upgrade를 시작합니다.
nice -n 5 apt upgrade
이미 실행 중인 프로세스의 우선순위를 변경하려면 renice 명령을 사용합니다. 다음 명령은 PID 가 3245 인 프로세스의 niceness 를 10 으로 변경합니다.
renice 10 -p 3245