파일을 압축하기 위해 bzip2를 사용하고 있는데 프로세스가 CPU의 100% 이상을 차지하고 있습니다. 최소 CPU 비율로 bzip2를 실행할 수 있는 방법이 있습니까?
답변1
이 프로세스가 시스템의 다른 프로세스를 방해합니까? bzip2에서 사용되는 CPU를 제한하는 이유는 무엇입니까?
nice
다음 명령을 사용하여 프로세스의 우선순위를 변경할 수 있습니다 .
$ nice -n 19 bzip2 <file>
또한 bzip2
압축 수준을 낮추어 볼 수도 있습니다.
$ bzip2 -1 <file>
답변2
권장사항: 우선순위 사용
@EEAA의 답변 외에도 다른 프로세스의 영향을 최소화하기 위해 bzip 프로세스에 최대 낮은 우선 순위를 부여하려면 ionice
추가로 . 이는 IO 스케줄러(커널의 기본값이지만 설치에 따라 조정될 수 있음)를 사용할 때만 유용합니다 ionice
. 또는 IO 스케줄러를 사용하는 경우 영향이 없습니다.CFQ
ionice
deadline
noop
사용 중인 IO 스케줄러를 확인하려면 다음을 수행하세요.
cat /sys/block/<DEVICE>/queue/scheduler
<DEVICE>
하드 드라이브 장치는 어디에 있습니까?sda
지금은 ionice
가장 낮은 IO 우선순위인 클래스 3을 설정하려고 합니다. 이것을 함께 결합할 수 있습니다 nice
:
$ nice -n 19 ionice -c3 bzip2 <file>
Tom과 EEAA가 설명하듯이, 그것만으로도 충분합니다. 커널은 다른 프로세스에 CPU나 IO가 필요하지 않을 때 bzip이 최대한 빠르게 실행되도록 보장합니다. 그러나 필요한 경우 다른 프로세스에 우선순위를 부여합니다. 이는 권장되는 선택입니다.
대안: cpulimit - CPU 사용량 제한
이제 bzip에서 "CPU 제한"을 계속 사용할 수 있습니다. 내 선택은 아니지만, 사용해 보고 싶거나 더 마음에 든다면 사용하면 된다 cpulimit
. 그러나 일반적으로 Linux에서는 기본적으로 패키지되거나 설치되지 않습니다. 그래서 설치해야합니다.닉 크래프트좋은 문서가 있습니다설치 및 사용 방법 cpulimit
.
공식 웹사이트는 다음과 같습니다:http://cpulimit.sourceforge.net/