Linux "top"명령 : CPU 사용량에 대한 sy, ni, id, wa, hi, si 및 st는 무엇입니까?


195

topLinux에서 발행 하면 다음과 비슷한 결과가 나타납니다.

상단의 스크린 샷

라인 중 하나에는 다음과 같이 표시된 CPU 사용량 정보가 있습니다.

Cpu(s): 87.3%us,  1.2%sy,  0.0%ni, 27.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

나는 그들 각각의 정의를 알고 있지만 (아래),이 작업이 정확히 무엇을 의미하는지 이해하지 못합니다.

  • hi -하드웨어 인터럽트 서비스는 무엇을 의미합니까?
  • si -소프트웨어 인터럽트 서비스는 무엇을 의미합니까?
  • st - "하이퍼 바이저가 가상 머신에서 도난 당 한 다른 프로세서 (또는 % CPU 시간)를 서비스하는 동안 가상 CPU가 비자발적으로 대기하는 CPU 시간"이라고 말합니다.

그러나 실제로 무엇을 의미합니까? 누군가가 더 명확 할 수 있습니까?

나는 모든 상장 us, sy, ni이 같은 검색 다른 사람을 도울 수 있기 때문에, 등. 이 정보는 매뉴얼 페이지에 없습니다.

us: user cpu time (or) % CPU time spent in user space
sy: system cpu time (or) % CPU time spent in kernel space
ni: user nice cpu time (or) % CPU time spent on low priority processes
id: idle cpu time (or) % CPU time spent idle
wa: io wait cpu time (or) % CPU time spent in wait (on disk)
hi: hardware irq (or) % CPU time spent servicing/handling hardware interrupts
si: software irq (or) % CPU time spent servicing/handling software interrupts
st: steal time - - % CPU time in involuntary wait by virtual cpu while hypervisor is servicing another processor (or) % CPU time stolen from a virtual machine

답변:


92

hi하드웨어 인터럽트를 처리하는 데 소요 된 시간입니다. 하드웨어 인터럽트는 하드웨어 장치 (네트워크 카드, 키보드 컨트롤러, 외부 타이머, 하드웨어 센서 등)가 CPU에 무언가 신호를 보내야 할 때 (예 : 데이터가 도착했을 때) 생성됩니다.

이러한 상황은 매우 자주 발생할 수 있으며 실행중인 현재 CPU를 본질적으로 차단하므로 커널 하드웨어 인터럽트 처리기는 가능한 한 빠르고 간단하게 작성됩니다.

길거나 복잡한 처리를 수행해야하는 경우 이러한 작업은 메커니즘 호출을 사용하여 연기됩니다 softirqs. 이들은 독립적으로 예약되며 모든 CPU에서 실행할 수 있으며 동시에 실행될 수도 있습니다 (하드웨어 인터럽트 처리기에는 해당되지 않음).

현재 CPU를 차단하는 하드 IRQ에 대한 부분과 softirqs어디에서나 실행할 수 있는 부분은 정확하지 않으며 제한이있을 수 있으며 일부 하드 IRQ는 다른 IRQ를 방해 할 수 있습니다.

예를 들어, 네트워크 카드에서 "데이터 수신"하드웨어 인터럽트는 "어딘가에 카드 ethX를 서비스해야합니다"라는 정보를 저장하고 일정을 예약 할 수 softirq있습니다. 는 softirq실제 패킷 라우팅을 트리거하는 일이 될 것입니다.

si에 소요 된 시간을 나타냅니다 softirqs.

[정보] 좋은 읽기 softirq(역사의 비트도 포함) 메커니즘은 마태 복음은 윌콕스의이다 내가 나중에 그것을 할 수 있습니다 : : 인터럽트, 태스크 릿, 아래 반쪽, 작업 대기열, 작업 대기열 및 타이머 (PDF, 64K).

st"훔치기 시간"은 가상화 된 환경에서만 관련됩니다. 현재 가상 머신에서 실제 CPU를 사용할 수 없었던 시간을 나타냅니다. 하이퍼 바이저가 해당 VM에서 다른 VM을 실행하거나 자체 요구에 따라 "도난 당"했습니다.

IBM 의 CPU 시간 계정 문서에는 가상화 된 환경에서의 스틸 시간 및 CPU 계정에 대한 자세한 정보가 있습니다. (zSeries 유형의 하드웨어를 목표로하고 있지만 일반적인 아이디어는 대부분의 플랫폼에서 동일합니다.)


매우 명확한. 따라서 새로운 사운드 시스템, 헤드셋 등 (그 문제에 대한 하드웨어)을 연결하면 하드웨어 인터럽트가 발생합니까?
its_me

2
그렇습니다. 사운드 칩셋이 "무슨 일이 발생했다"는 신호를 보내는 방법 일 수 있습니다. 그러나 헤드셋 연결은 사운드 칩 자체에 의해 처리 될 수 있으므로 (예를 들어 메인에서 헤드폰으로 사운드 출력을 다시 라우팅) 메인 CPU에 대한 인터럽트를 생성하지 않을 수 있습니다. 키보드의 키를 입력하면 (USB 키보드가있는 경우 USB 허브 장치에서) 인터럽트가 발생합니다. cat /proc/interrupts( man proc해당 파일에 대한 doc. man) 도 참조하십시오 .
Mat

15
  • us-사용자 공간에서 보낸 시간
  • sy-커널 공간에서 보낸 시간
  • ni-niced 사용자 프로세스를 실행하는 데 소요 된 시간 (사용자 정의 우선 순위)
  • id-유휴 작업에 소요 된 시간
  • wa-IO 주변 장치 (예 : 디스크)를 기다리는 데 소요 된 시간
  • hi-하드웨어 인터럽트 루틴을 처리하는 데 소요 된 시간입니다. (주변 장치가 CPU에서주의를 기울여야 할 때마다 문자 그대로 한 줄을 당겨 CPU에 신호를 보냅니다.)
  • si-소프트웨어 인터럽트 루틴을 처리하는 데 소요 된 시간. (코드 조각, 인터럽트 루틴을 호출합니다 ...)
  • st-하이퍼 바이저가 다른 프로세서를 처리하는 동안 가상 CPU가 비자발적으로 대기하는 시간

2

"st"값은 AWS의 T2.micro EC2 인스턴스를 사용하여 간단히 설명 할 수 있습니다.

에서 AWS 문서 당신은 당신이 VCPU 당 10 %의 기본 성능을 얻을 수 있음을 읽을 수 있습니다. 이는 많은 CPU 시간을 소비하는 프로세스가있는 경우 "st"값은 VCPU의 10 % 만 사용할 수 있으므로 약 90으로 유지됨을 의미합니다. 다른 값의 합은 약 10입니다.

따라서 AWS는 하이퍼 바이저를 사용하여 특정 양의 컴퓨팅 성능에만 액세스 할 수 있습니다. 하위 계층 유형의 인스턴스 만 사용하므로 의도적으로 속도가 느려집니다.

이것이 좀 더 이해하기 쉽기를 바랍니다.

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