Mac에서 명령을 테스트하려고 하는데 renice
효과가 없는 것 같습니다. 이것이 제가 테스트한 방법입니다:
하이퍼스레딩 기능이 있는 듀얼 코어 CPU가 있어서 6개의 인스턴스를 실행하고 있어 node -e 'while(1){}'
CPU를 많이 잡아먹습니다. (또는 while true; do echo running > /dev/null ; done
노드가 없으면 실행합니다.)
그런 다음 활동 모니터 앱을 통해 노드 프로세스 중 하나의 PID를 얻거나 pgrep
실행합니다 sudo renice -n 19 -p $PID
.
Activity Monitor 앱을 확인하거나 다음을 통해 htop
모든 노드 프로세스의 CPU 사용량이 여전히 동일합니다 .
renice
내 프로세스는 우선순위가 낮기 때문에 다른 프로세스가 이를 사용하고 있을 때 CPU 시간을 많이 사용하지 않는다는 것을 알고 있습니다 .
내가 뭔가를 오해했나요 renice
? 아니면 macOS의 버그인가요?
답변1
몇 가지 기본 테스트를 실행하면 10.13.4에서도 이 현상이 나타납니다.
나는 무한 루프에서 몇 가지 기본적인 수학 연산을 수행하는 Looper라는 작은 C 프로그램을 작성했습니다.
#include <stdio.h>
int main(){
unsigned long long prev = 0;
unsigned long long current = 1;
unsigned long long total = 0;
while(1){
total = current + prev;
prev = current;
current = total;
printf("%llu\n", total);
}
}
내 FreeBSD 컴퓨터에서 실행 중인 복사본이 여러 개 있고 htop(1)
.Nice renice(8)
값이 증가하고, 우선 순위 값이 증가하고, CPU 비율이 감소하는 것을 볼 수 있습니다. 이는 예상된 동작입니다.
macOS 10.13.4에서 동일한 프로그램을 실행하고 프로세스를 반복했습니다. Nice 값이 증가하는 것을 볼 수 있지만 우선순위 값과 CPU 비율은 일관되게 유지됩니다.
이것이 버그인지 궁금하고 이전에는 macOS에서 Nice 값을 이렇게 자세히 살펴볼 이유가 없었습니다. 동작이 예상한 것과 충분히 가깝기 때문에 조사할 의향이 없습니다.
개발자 계정이 있다면 이를 Apple에 보고하는 것이 좋습니다.