nice는 리눅스와 같은 유닉스와 유닉스-계열 운영 시스템에서 찾을 수 있는 프로그램입니다. 그것은 같은 이름의 커널 호출에 직접 매핑됩니다. nice는 특정 CPU 우선순위를 가진 유틸리티 또는 쉘 스크립트를 호출하기 위해 사용되고, 따라서 프로세스에 다른 프로세스보다 더 많거나 더 적은 CPU 시간을 제공합니다. -20의 niceness는 가장 높은 우선 순위이고 19가 가장 낮은 우선 순위입니다. 프로세스에 대해 기본 niceness는 부모 프로세스에서 상속되고 보통 0입니다.
Use and effect
nice는 여러 프로세스가 CPU가 제공할 수 있는 것보다 더 많은 리소스를 요구할 때 유용하게 됩니다. 해당 상태에서, 우선-순위가 높은 프로세스는 우선-순위가 낮은 프로세스보다 CPU 시간의 더 큰 양을 얻을 것입니다. 오직 수퍼유저 (root)가 niceness를 더 낮은 값 (즉, 더 높은 우선순위)으로 설정할 수 있습니다. 리눅스에서 /etc/security/limits.conf를 다른 사용자 또는 그룹에게 낮은 nice 값을 설정하기 위해 허용하는 것이 가능합니다.
만약 사용자가 다른 프로세스의 속도를 늦추지 않고 큰 파일을 압축하기를 원하면, 다음을 실행할 수 있습니다:
$ nice -n 19 tar cvzf archive.tgz largefile
프로세스에 대해 특정 niceness 값을 설정하는 정확한 수학적 효과는 해당 유닉스 구현에서 스케줄러가 어떻게 설계되었는지에 대한 세부 사항에 따라 다릅니다. 특정 운영 시스템의 스케줄러는 역시 그것에 빌드된 다양한 휴리스틱을 가질 것입니다 (예를 들어, CPU에 의존하는 프로세스보다 대부분 I/O에 의존하는 프로세스를 선호하기 위해). 간단한 예로서, 다른 두 개의 동일한 CPU-바운드 프로세스가 단일-CPU 리눅스 시스템에서 동시에 실행될 때, 각 프로세스의 CPU 시간 몫은 20 − p에 비례하며, 여기서 p는 프로세스의 우선 순위입니다. 따라서 nice +15로 실행되는 프로세스는 정상-우선 순위 프로세스에 할당된 CPU 시간의 25%를 받을 것입니다: (20 − 15)/(20 − 0) = 0.25. 특정 시스템의 스케줄러는 역시 BSD 4.x 스케줄러에서 i로 빌드된 다양한 휴리스틱을 가지 것이고, 다른 한편으로, 같은 예제에서 비율은 약 10:1입니다.
Similar commands
관련된 renice 프로그램은 이미 실행 중인 프로세스의 우선 순위를 변경하기 위해 사용될 수 있습니다.
리눅스는 역시 CPU 시간이 아닌 I/O 스케줄링에 영향을 미치는 ionice 프로그램을 가집니다.
Etymology
이름 "nice"는 프로그램의 목적이 프로세스 niceness 값을 수정하는 것이라는 사실에서 비롯됩니다. 각 프로세스에 양보할 CPU 시간을 결정하기 위해 사용되는 진정한 우선 순위는 커널 프로세스 스케줄러에 의해 각 프로세스에 의해 수행된 I/O의 총양과 같은 다른 프로세스의 niceness 값과 기타 데이터의 조합에서 계산합니다.
이름 "niceness"는 더 높은 niceness 값을 갖는 프로세스가 시스템에서 다른 프로세스보다 "nicer"라는 아이디어에서 유래합니다:
이것이 nice 번호가 보통 niceness라고 불리는 이유입니다: 높은 niceness를 갖는 작업은 시스템 사용자에게 매우 친절하지만 (즉, 낮은 우선 순위에서 실행됨), 작은 niceness를 갖는 작업은 CPU를 더 많이 사용합니다. 용어 "nicenes"는 어색하게 여겨질 수 있습니다. 불행하게도, 그것은 정확하고 (nice 번호가 우선 순위를 계산하기 위해 사용되지만 우선 순위 자체는 아닙니다) 끔찍한 변명 ("우선 순위를 높이는 것이 우선 순위를 낮추는 것을 의미합니다...)을 피하는 유일한 용어입니다.
External links
- nice: invoke a utility with an altered nice value – Commands & Utilities Reference, The Single UNIX Specification, Issue 7 from The Open Group