nice 및 renice 명령을 사용하면 우선 순위를 조정하여 커널이 프로세스를 처리하는 방법을 미세 조정할 수 있습니다. 이 튜토리얼을 읽고 macOS와 같은 Linux 및 Unix 계열 운영 체제에서 사용하는 방법을 알아보세요.
목차
모든 것은 과정의 문제입니다
Linux 또는 Unix 계열 컴퓨터 내부에는 사용하려는 응용 프로그램을 실행하기 전에도 실행 중인 프로세스가 많이 있습니다. 이러한 프로세스의 대부분은 Linux 자체의 핵심 요소이거나 그래픽 데스크탑 환경을 위한 지원 프로세스입니다. 무대 뒤에서 많은 일이 일어나고 있습니다. 물론 시스템 리소스와 CPU 시간이 너무 많습니다. Linux 커널은 이러한 모든 프로세스의 컨트롤러입니다.
어떤 프로세스가 지금 관심과 자원을 받고 어떤 프로세스를 기다려야 하는지를 결정해야 하는 것은 커널입니다. 커널은 컴퓨터가 가능한 한 원활하게 실행되고 모든 프로세스가 적절한 공유를 얻을 수 있도록 프로세스와 우선 순위를 지속적으로 조정합니다. 일부 프로세스는 특혜를 받습니다. 그것들은 컴퓨터의 일반적인 작동에 매우 중요하기 때문에 그들의 요구가 예를 들어 브라우저보다 먼저 와야 합니다.
좋은 가치
커널이 프로세스를 처리하는 방법을 결정하는 데 사용되는 기준 중 하나는 nice 값입니다. 모든 과정에는 좋은 가치가 있습니다. nice 값은 -19에서 20 사이의 정수입니다. 모든 표준 프로세스는 nice 값 0으로 시작됩니다.
여기서 트릭은 nice 값이 높을수록 프로세스가 다른 프로세스에 더 잘 전달된다는 것입니다. 다시 말해, nice 값이 높으면 커널에 이 프로세스가 기꺼이 기다릴 수 있다는 것을 알립니다. 음수는 착함의 반대입니다. 음수 nice 값이 클수록 프로세스가 더 이기적입니다. 다른 프로세스를 고려하지 않고 가능한 한 많은 CPU 시간을 얻으려고 합니다.
nice 명령을 사용하여 nice 값을 설정할 수 있습니다. 프로세스가 시작되었습니다 renice를 사용하여 nice 값을 조정할 수 있습니다. 실행 중인 프로세스의.
좋은 명령
nice 명령을 사용하여 프로그램을 시작할 때 nice 값을 조정할 수 있습니다. 이를 통해 다른 프로세스에 비해 커널이 프로세스에 부여한 우선 순위를 높이거나 낮출 수 있습니다.
프로그래머가 ackermann 이라는 프로그램을 작성했다고 가정해 봅시다. 이것은 계산 애커만 함수. CPU와 메모리를 많이 사용합니다. 프로그래머는 다음 명령으로 프로그램을 시작할 수 있습니다.
./ackermann
top 명령을 사용하여 실행 중인 프로그램을 볼 수 있습니다.
top
상단에서 ckermann 프로그램의 세부 정보를 볼 수 있습니다. 좋은 값은 “NI 열”의 수치입니다. 예상대로 0으로 설정되었습니다.
다시 시작하고 이번에는 덜 요구합니다. 다음과 같이 ackermann 프로그램에 대해 좋은 값 15를 설정합니다. nice, 공백, -15, 다른 공백을 입력한 다음 실행하려는 프로그램의 이름을 입력합니다. 이 예에서 가상의 프로그래머는 ./ackermann을 사용하고 있습니다.
nice -15 ./ackermann
“-15″는 음수 15가 아닙니다. 긍정적인 열다섯입니다. “-“는 매개변수를 전달하고 있음을 알려주는 데 필요합니다. 음수를 나타내려면 두 개의 “-” 문자를 입력해야 합니다.
이제 top을 다시 시작하면 ckermann의 행동 변화를 볼 수 있습니다.
top
15라는 좋은 값으로 ackermann은 CPU 시간을 가장 많이 사용하지 않습니다. GNOME과 Rhythmbox는 둘 다 더 많이 사용하고 있습니다. 우리는 ackermann을 조금 고쳤습니다.
이제 반대로 하여 ackermann에 음수 nice 값을 지정해 보겠습니다. 두 개의 “-” 문자 사용에 유의하십시오. 애플리케이션을 좀 더 이기적이고 덜 멋지게 만들려면 sudo를 사용해야 합니다. 누구나 자신의 응용 프로그램을 더 멋지게 만들 수 있지만 수퍼유저만 하나 더 이기적으로 만들 수 있습니다.
sudo nice --10 ./ackermann
맨 위로 실행하여 어떤 차이가 있는지 살펴보겠습니다.
top
이번에는 ackermann의 좋은 값이 -10입니다. 다시 정상으로 돌아오고 이전보다 더 많은 CPU 시간을 소비합니다.
르니체 사령부
renice 명령을 사용하면 실행 중인 프로세스의 nice 값을 조정할 수 있습니다. 중지하고 nice로 다시 시작할 필요가 없습니다. 즉석에서 새로운 값을 설정할 수 있습니다.
renice 명령은 프로세스의 프로세스 ID 또는 PID를 명령줄 매개변수로 사용합니다. 상단의 “PID” 열에서 프로세스 ID를 추출하거나 다음과 같이 ps 및 grep을 사용하여 찾을 수 있습니다. 분명히, 당신은 dave 대신에 사용자의 이름을 입력하고, ackermann 대신에 관심 있는 프로세스의 이름을 입력할 것입니다.
ps -eu dave | grep ackermann
이제 PID가 있으므로 이것을 renice와 함께 사용할 수 있습니다. 우리는 5의 nice 값을 가진 더 멋진 동작으로 ackermann을 다시 설정할 것입니다. 실행 중인 프로세스의 nice 값을 변경하려면 sudo를 사용해야 합니다. 5 매개변수에는 “-“가 없습니다. 양수에는 하나가 필요하지 않으며 음수에는 두 개가 아닌 하나만 필요합니다.
sudo renice -n 5 2339
renice가 nice 값을 변경했다는 확인을 받습니다. 그것은 우리에게 이전 가치와 새로운 가치를 보여줍니다.
커널은 일반적으로 우선 순위를 처리하고 CPU 시간과 시스템 리소스를 할당하는 일을 훌륭하게 수행합니다. 그러나 실행해야 할 길고 CPU 집약적인 작업이 있고 작업이 끝날 때 신경 쓰지 않는다면 해당 작업에 대해 더 높은 nice 값을 설정하면 컴퓨터가 조금 더 부드럽게 실행됩니다. 그것은 모두에게 더 좋을 것입니다.