Linux에서 nice 및 renice로 프로세스 우선 순위를 설정하는 방법

0
672
우분투 노트북의 배쉬 쉘
Fatmawati Achmad Zaenuri / Shutterstock.com

그만큼 nicerenice 명령을 사용하면 우선 순위를 조정하여 커널이 프로세스를 처리하는 방식을 미세 조정할 수 있습니다. 이 튜토리얼을 읽고 macOS와 같은 Linux 및 Unix와 같은 운영 체제에서 사용하는 방법을 배우십시오.

그것은 모든 과정의 문제입니다

Linux 또는 Unix와 같은 컴퓨터에는 사용하려는 응용 프로그램을 시작하기 전에도 많은 프로세스가 실행됩니다. 이러한 프로세스의 대부분은 Linux 자체의 핵심 요소이거나 그래픽 데스크탑 환경을위한 프로세스를 지원합니다. 무대 뒤에서 많은 일이 벌어지고 있습니다. 물론 시스템 리소스와 CPU 시간이 너무 많습니다. Linux 커널은 이러한 모든 프로세스의 컨트롤러입니다.

현재 어떤 프로세스가 주목을 받고 리소스를 확보해야하는지, 어떤 프로세스를 기다려야하는지 결정하는 것이 커널입니다. 커널은 컴퓨터가 가능한 한 매끄럽게 실행되고 모든 프로세스가 적절한 공유를 얻도록 프로세스와 우선 순위를 지속적으로 조정하고 있습니다. 일부 프로세스는 우선적으로 처리됩니다. 그것들은 컴퓨터의 일반적인 작동에 매우 중요하므로 브라우저보다 먼저 필요합니다.

좋은 가치

커널이 프로세스를 처리하는 방법을 결정하는 데 사용되는 기준 중 하나는 좋은 가치입니다. 모든 프로세스에는 훌륭한 가치가 있습니다. nice 값은 -19에서 20 사이의 정수입니다. 모든 표준 프로세스는 nice 값으로 0으로 시작됩니다.

여기서 좋은 점은 좋은 가치가 높을수록 공정이 더 훌륭하다는 것입니다. 다른 프로세스. 다시 말해, 좋은 값이 높으면 커널에게이 프로세스가 기꺼이 기다립니다. 음수는 니스와 반대입니다. 음수 값이 클수록 많을수록 이기적인 과정은 다른 프로세스와 상관없이 가능한 한 많은 CPU 시간을 얻으려고합니다.

우리는 사용할 수 있습니다 nice ~에게 명령하다 세트 프로세스가 시작되고 사용할 수있는 좋은 가치 renice맞추다 실행중인 프로세스의 좋은 가치.

좋은 명령

우리는 사용할 수 있습니다 nice 프로그램을 시작할 때 멋진 값을 조정하는 명령입니다. 이를 통해 다른 프로세스에 비해 커널이 프로세스에 부여한 우선 순위를 높이거나 낮출 수 있습니다.

프로그래머가 다음과 같은 프로그램을 작성했다고 가정 해 봅시다. ackermann . Ackerman 함수를 계산합니다. CPU와 메모리를 많이 사용합니다. 프로그래머는 다음 명령으로 프로그램을 시작할 수 있습니다.

./ackermann

터미널 창의 ackermann 명령

우리는 사용할 수 있습니다 top 명령을 실행하여 실행중인 프로그램을 봅니다.

top

맨 위로 터미널에서 실행

우리는 세부 사항을 볼 수 있습니다 ackermann 프로그램 top. 좋은 가치는“NI 컬럼”의 수치입니다. 예상대로 0으로 설정되었습니다.

다시 시작하면 덜 까다로워집니다. 우리는 15의 좋은 가치를 설정합니다 ackermann 다음과 같이 프로그램하십시오. nice, 공백, -15, 다른 공백을 입력 한 다음 실행하려는 프로그램 이름을 입력하십시오. 이 예에서 가상의 프로그래머는 ./ackermann.

nice -15 ./ackermann

터미널 창에서 멋진 15 명령

“-15”는 음수 15가 아닙니다. 긍정적 인 15입니다. “-”는 nice 매개 변수를 전달합니다. 음수를 나타내려면 두 개의“-”문자를 입력해야합니다.

이제 시작하면 top 다시, 우리는 행동의 변화를 볼 수 있습니다 ackermann.

top

맨 위로 터미널에서 실행

좋은 가치 15, ackermann CPU 시간을 많이 소비하지 않습니다. 그놈과 리듬 박스 모두 더 많이 사용하고 있습니다. 우리는 강화했다 ackermann 약간의.

이제 그 반대를하고 ackermann 음수 좋은 가치. 두 개의“-”문자를 사용하십시오. 응용 프로그램을 더이기적이고 덜 멋지게 만들려면 다음을 사용해야합니다. sudo. 누구나 자신의 응용 프로그램을 더 멋지게 만들 수 있지만 수퍼 유저 만 이기적으로 만들 수 있습니다.

sudo nice --10 ./ackermann

터미널 창의 nice -10 명령

위로 가서 차이점이 무엇인지 봅시다.

top

맨 위로 터미널에서 실행

이 시간 ackermann 좋은 값은 -10입니다. 최고 수준으로 돌아 왔으며 이전보다 더 많은 CPU 시간을 소비합니다.

renice 명령

그만큼 renice 명령을 사용하면 실행중인 프로세스의 가치를 조정할 수 있습니다. 중지하고 다시 시작할 필요가 없습니다. nice. 새로운 가치를 즉각 설정할 수 있습니다.

그만큼 renice command는 프로세스의 프로세스 ID 또는 PID를 명령 행 매개 변수로 사용합니다. “PID”열에서 프로세스 ID를 추출 할 수 있습니다. top 또는 우리는 사용할 수 있습니다 psgrep 다음과 같이 우리를 위해 그것을 찾으십시오. 분명히, 당신은 대신에 사용자의 이름을 입력합니다 dave 관심있는 프로세스의 이름 대신 ackermann.

ps -eu dave | grep ackermann

터미널 창에서 grep을 통해 배관 된 PS

이제 PID가 있으므로 이것을 사용할 수 있습니다 renice. 우리는 설정합니다 ackermann 5의 좋은 가치를 가진 더 나은 행동으로 돌아갑니다. 실행중인 프로세스의 nice 값을 변경하려면 사용해야합니다 sudo. 에 “-“가 없습니다. 5 매개 변수. 양수에는 1 개가 필요하지 않으며 음수에는 2 개가 아닌 1 개만 필요합니다.

sudo renice -n 5 2339

터미널 창에서 실행되는 renice 명령

우리는 확인을 얻는다 renice 좋은 가치를 변경했습니다. 이전 값과 새로운 값을 보여줍니다.

커널은 일반적으로 우선 순위를 처리하고 CPU 시간과 시스템 리소스를 전달하는 데 큰 역할을합니다. 그러나 CPU를 많이 사용하는 긴 작업이 있고 종료 시점에 신경 쓰지 않으면 해당 작업에 대해 더 좋은 값을 설정하면 컴퓨터가 좀 더 부드럽게 실행됩니다. 그것은 모두에게 더 좋을 것입니다.