약 100% CPU로 실행되는 프로세스가 있습니다. 그래서 나는 그것을 nice로 실행합니다.
$ nice /dir/myamd.sh
이 top
명령은 내 프로세스가 여전히 100%에 가까운 수준(99%처럼 약간 낮을 수도 있음)으로 실행되고 있음을 보여줍니다. 이 nice
명령이 실제로 작동합니까?
답장을 보내주셔서 감사합니다! nice
와 을 둘 다 사용할 수 있나요 cpulimit
? 왜냐하면 나는 내 프로세스 수율이 다른 프로세스보다 높기를 원하고 80% CPU를 예로 들기 때문입니다.
답변1
Nice는 프로세스의 상대적 우선순위를 변경합니다. CPU를 필요로 하는 다른 것이 없다면 우선 순위가 더 높은 것이 없으므로 계속해서 CPU를 100% 사용할 수 있습니다.
많은 최신 시스템에는 다중 코어가 있으므로 코어가 4개 있지만 프로세스가 3개만 실행될 수 있다면 프로세스가 양호한 수준에 관계없이 코어를 100% 사용할 수 있는 또 다른 예입니다.
답변2
top
ps lax
시스템에 있는 모든 프로세스의 현재 양호한 수준이 이 열에 표시 됩니다 NI
.
좋은 수준과 CPU 부하의 비유
CPU를 슈퍼마켓 계산대 계산원으로 생각하십시오. 멀티 코어 CPU가 있는 경우 여러 개가 있습니다.
각 카운터마다 결제를 기다리는 고객들의 줄이 늘어서 있습니다. 이것은 CPU의 실행 큐입니다.
대기열의 길이는 현재 CPU 로드입니다. 그것이 지금 카운터 뒤에 있는 사람의 부담이다.
대기열에 있는 사람이 다음과 같을 수 있습니다.좋아요뒤에 있는 사람들이 정말로 서둘러야 한다면 대기열에서 그들을 지나쳐도 전혀 괜찮습니다.
카운터 계산원그만큼 해야 할 일이 많다, 그리고여전히 같은 속도로 작동(대기열이 빌 때까지 100%) 단, 대기열에 있는 사람들은 대기열에 있는 다른 사람들과 얼마나 친절한지에 따라 순서대로 카운터에 도착합니다.
예를 들어, 슈퍼마켓은 비어 있을 수 있지만 계산이 필요한 큰 카트를 들고 있는 고객이 있고 계산원은 모든 구매를 처리하기 위해 최선을 다하고 있습니다. 그예아주 좋았지만... 상관없었지만, 계산원은 이야기를 나눌 시간을 가질 만큼 속도를 늦추지 않았습니다.
Unix 시스템에서는 Supermarket과 달리 CPU가 프로세스를 큐로 다시 보내기 전에 잠시 동안만 프로세스를 처리합니다. 이렇게 하면 한 프로세스가 다른 프로세스를 차단하지 않습니다.
이 비유에 컨텍스트 전환을 적용할 수도 있습니다. 이는 CPU가 한 프로세스 처리에서 다른 프로세스 처리로 전환하는 지점이며, 너무 자주 수행하면 시간이 많이 걸릴 수 있습니다. 이는 기본적으로 카운터에서 고객에게 서비스를 제공하는 데 걸리는 시간입니다. 가공 식품을 가방 등에 넣는 데 걸리는 시간과 다음 고객이 앞으로 나서서 "안녕하세요"라고 인사하는 데 걸리는 시간 등입니다.
참고: 위에서는 "CPU"를 사용했습니다. 어떤 경우에는 "코어"라고 말해야 합니다. 사용자 경험 관점에서는 차이가 없습니다.
답변3
명령 은 nice
예상한 대로 작동하지만 예상한 대로 작동하지 않습니다.
실제로 CPU 사용량을 제한하고 사용 가능한 CPU 리소스를 낭비하려는 경우 다음을 사용할 수 있습니다.
cpulimit -l 25 /dir/myamd.sh
CPU 한도Myadm.sh CPU 사용량은 SIGSTOP/SIGCONT를 사용하여 모니터링 및 조절되어 평균 사용량을 (vCPU 1개) 제한의 25% 미만으로 유지합니다. 멀티 코어/스레드 시스템에서는 사용량을 100% 이상으로 제한할 수 있습니다.
답변4
귀하의 예에서는 다음과 같습니다.아니요피복재.
누구세요아니요백그라운드(&)에서 프로그램을 실행합니다. 따라서 이것은 아마도 이 TTY에서 실행되는 유일한 프로그램일 것입니다(이를 시작한 쉘 제외).
두 번째 프로그램을 다른 TTY(예: 다른 터미널 창)에서 실행하는 경우 두 프로그램의 상대적인 양호한 수준은 눈에 띄는 영향을 미치지 않습니다.