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

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

Linux에서 질문을 실행 하면 top다음과 유사한 결과가 나타납니다.

상단 스크린샷

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

답변1

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

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

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

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

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

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

Matthew Wilcox의 메커니즘 softirq(및 일부 역사) 에 대한 좋은 자료입니다.나중에 할게요: Softirqs, Tasklets, Bottom Halfes, Task Queues, Work Queues and Timers(PDF, 64k).

st, "도용 시간"은 가상화된 환경에서만 관련이 있습니다. 이는 현재 가상 머신에서 실제 CPU를 사용할 수 없었던 시간을 나타냅니다. 즉, 하이퍼바이저에 의해 가상 머신에서 CPU가 "도난"된 것입니다(다른 가상 머신을 실행하기 위해 또는 자체 필요에 따라).

이것CPU 시간 통계IBM 문서는 가상화된 환경에서 도난당한 시간과 CPU 계산에 대한 자세한 정보를 제공합니다. (zSeries 유형 하드웨어를 대상으로 하지만 일반적인 아이디어는 대부분의 플랫폼에서 동일합니다.)

답변2

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

답변3

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

내부에AWS 설명서각 VCPU는 기준 성능의 10%만 얻는다는 것을 알 수 있습니다. 즉, CPU 시간을 많이 소비하는 프로세스가 있는 경우 VCPU의 10%만 사용할 수 있으므로 "st" 값은 약 90으로 유지됩니다. 다른 값의 합은 약 10으로 유지됩니다.

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

이것이 상황을 더 쉽게 이해할 수 있기를 바랍니다.

관련 정보