· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
proc 나 snmp 의 값을 이용하여, cpu counter 를 구하는 공식



1. Count 방식으로 CPU를 측정해야 하는 이유

  • Linux의 경우 snmp에서 보여주는 CPU 사용량은 부팅시 부터의 평균값이므로 성능 측정시 고려대상이 안됨.
  • 보통 Linux 의 경우 cronjob 에 의한 결과물을 이용하여 guage 로 cpu usage 를 그리는 경우가 많음
  • guage 값은 rrd database 를 update 할 당시의 값이므로, 이전값을 업데이트 하는 순간 부터 현재값을 업데이트 하는 시간사이의 사용률은 전혀 반영되지 못함.

2. 해결방법

  • UCD-SNMP-MIB (.1.3.6.1.4.1.2021) 의 CPU 관련 Counter 를 이용하여 값을 구함
    • user => UCD-SNMP-MIB::ssCpuRawUser.0
    • nice => UCD-SNMP-MIB::ssCpuRawNice.0
    • sys => UCD-SNMP-MIB::ssCpuRawSystem.0
    • idle => UCD-SNMP-MIB::ssCpuRawIdle.0
    • wait => UCD-SNMP-MIB::ssCpuRawWait.0
    • intr => UCD-SNMP-MIB::ssCpuRawInterrupt.0
    • irqt => UCD-SNMP-MIB::ssCpuRawSoftIRQ.0

  • counter 방식이기 때문에 각 값의 2 지점(시간상) 의 차이를 구하도록 한다.
    • 예) user = userpost - userpref

  • scale = 100.0 / (user + nice + sys + idle + wait + intr + irqt)
  • user = (user + nice) * scale
  • sys = (sys + intr + irqt) * scale
  • idle *= scale
  • idwait *= scale

3. 참고

  • linux kernel 2.4 에서는 또는 (다른 OS 에서는) IOWAIT/Interrupt/SoftIRQ 에 대한 Counter 가 없을 수도 있으므로 예외 처리를 염두에 두어야 한다.




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2011-06-01 13:08:01
Processing time 0.0071 sec