저는 Beaglebone 그린에서 un tar ie tar xzvf abc.tar.gz를 실행 중입니다. CPU를 너무 많이 사용하는 것 같습니다. 압축 해제 작업이 진행되는 동안 top 명령을 통해 CPU 사용량을 확인합니다. 왜 두 개의 다른 프로세스가 생성되는 것 같은지 잘 모르겠습니다. 이유는 무엇입니까? ? ?
PID PPID USER STAT VSZ %VSZ %CPU COMMAND
626 625 root R 1956 1% 64% tar xzvf abc.tar.gz
625 612 root S 1960 1% 12% tar xzvf abc.tar.gz
untar 프로세스가 CPU를 너무 많이 사용하지 않도록 제한하는 방법은 무엇입니까? CPU를 소비하지 않고 untar가 실행될 때마다 영향을 받는 시간이 중요한 실시간 프로세스가 있습니다. 따라서 압축 해제는 어떤 방식으로든 CPU의 40~50% 이상이 사용되지 않도록 제한되어야 합니다.
답변1
cpulimit -fl 50 -- tar xzvf abc.tar.gz
남자 CPU 제한:
cpulimit -- limits the CPU usage of a process
-l, --limit=N
percentage of CPU allowed from 1 up. Usually 1 - 100, but can be
higher on multi-core CPUs. (mandatory)
-f, --foreground
run cpulimit in foreground while waiting for launched process to
finish
• cpulimit always sends the SIGSTOP and SIGCONT signals to a process,
both to verify that it can control it and to limit the average
amount of CPU it consumes. This can result in misleading (annoy‐
ing) job control messages that indicate that the job has been
stopped (when actually it was, but immediately restarted). This
can also cause issues with interactive shells that detect or other‐
wise depend on SIGSTOP/SIGCONT. For example, you may place a job
in the foreground, only to see it immediately stopped and restarted
in the background.
답변2
CPU가 너무 뜨거워지거나 CPU가 완전히 활용되어 문제가 발생할 수 있는 경우 또는 작업이 그렇게 빨리 실행되는 것을 원하지 않는 경우에만 CPU 사용량을 제한해야 합니다.
이를 완전히 활용하지 않는 것은 단지 "유휴 작업"에 CPU 주기를 낭비하는 것입니다.
문제가 다른 프로세스가 해당 CPU 주기를 먼저 가져오길 원하는 경우 해결책은 tar
/ 의 우선순위를 낮추는 것입니다 gzip
. 즉, 우선순위를 높이는 것입니다.친절한.
예를 들어 다음을 사용합니다.
nice 20 tar...
그 중 20이 가장 높은 호감도 점수이다. 이렇게 하면 tar
다른 프로세스에 약간의 CPU 사이클이 필요한 경우 CPU 사이클이 거의 없지만 시스템이 할 일이 없으면 여전히 100% CPU가 사용됩니다.
이제 다른 프로세스가 실시간 우선 순위를 사용하는 경우 스케줄러가 일반 프로세스보다 실시간 프로세스의 우선 순위를 지정해야 하므로 그렇게 할 필요가 없습니다. 따라서 CPU는 프로세스가 지속하고 변경하는 데 사용할 수 있는 리소스가 아닐 수 있습니다. 우선 순위 또는 CPU 사용량을 줄이는 것은 tar
도움이 되지 않습니다.
ionice
다음을 사용할 수도 있습니다 tar
.
nice 20 ionice -c idle tar...
매뉴얼 ionice
페이지를 인용하면 다음과 같습니다.
게으른 유휴 I/O 우선순위로 실행되는 프로그램은 정의된 유예 기간 내에 다른 프로그램이 디스크 I/O를 요청하지 않는 경우에만 디스크 시간을 얻습니다. 유휴 I/O 프로세스는 정상적인 시스템 활동에 영향을 주지 않아야 합니다.