“top”명령이 799 %의 CPU 사용량을 나타내는 이유는 무엇입니까?


46

4 코어 Ubuntu 서버에서 프로세스를 실행 중입니다. 그러나 top명령은 CPU 사용량이 항상 799 %임을 보여줍니다.

이것이 어떻게 가능합니까? 멀티 코어 CPU의 경우 100 % 이상의 CPU 사용이 예상되지만 799 %는 실제로 높은 가치입니다.

왜 이런 일이 언제 일어날 수 있는지 설명해 줄 수 있습니까?

편집하다:

Gregory MOUSSAT의 제안에 따라 htop을 사용하여 다음을 얻었습니다.

여기에 이미지 설명을 입력하십시오


1
4 개의 코어에 각각 2 개의 스레드가 있습니까 (예 : Intel Core i7)?
Renan

@Renan, 단일 스레드에서 실행 중입니다.
Arpssss 2009 년

그래 그리고 나서. 나는 이것이 일부 i7 시스템에서 발생하는 것을 보았 기 때문에.
Renan

1
그러나 JVM은 단일 스레드입니까?
Ignacio Vazquez-Abrams

6
이건 정말 완전히로드 된 I7과 같은, 나는 보통이 인코딩 비디오를 얻을
nohillside

답변:


64

top코어가 완전히 사용될 때 사용되는 스케일 은 100 %입니다. 또는 한 코어가 20 %이고 두 번째 코어가 80 % 인 경우. 멀티 코어 컴퓨터에서는 쉽게 100 %를 초과 할 수 있기 때문에 이상한 결과가 발생합니다.
코어가 8 개인 경우 top0 % (유휴 시스템)에서 800 % (최대 전력)까지 표시 할 수 있습니다.

귀하의 프로그램은 최대 용량의 하이퍼 스레딩 (8 개의 가상 코어)을 갖춘 4 개의 코어를 사용하고 있습니다. 따라서 top은 거의 8 x 100 % = 800 %입니다.

JVM에 명시 적으로 단일 스레드를 사용하도록 지시 할 수 없으며 애플리케이션에서 단일 스레드 만 사용하더라도 여러 스레드를 사용하여 작업을 수행합니다.

htop더 나은 top대안으로 유틸리티를 사용할 수 있습니다 . 8 개의 코어를 모두 사용하는 프로그램이 표시됩니다.


모든 프로세스 세트를 코어 세트로 제한하거나 CPU의 %를 제한 할 수 있습니다. 그러나 나는 명령을 기억하지 못한다. (하나는 cpulimit입니다)
ctrl-alt-delor

+1, 상단, 상단 또는 상단에 비해 +1
CodeLikeBeaker

멈춤 +1 이것은 두 개의 CPU 배고픈 스레드를 잡는 데 도움이되었습니다!
Arun

3
모든 우박htop
fragamemnon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.