1. Count 방식으로 CPU를 측정해야 하는 이유 ¶
- Linux의 경우 snmp에서 보여주는 CPU 사용량은 부팅시 부터의 평균값이므로 성능 측정시 고려대상이 안됨.
- 보통 Linux 의 경우 cronjob 에 의한 결과물을 이용하여 guage 로 cpu usage 를 그리는 경우가 많음
- guage 값은 rrd database 를 update 할 당시의 값이므로, 이전값을 업데이트 하는 순간 부터 현재값을 업데이트 하는 시간사이의 사용률은 전혀 반영되지 못함.
- 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
- linux kernel 2.4 에서는 또는 (다른 OS 에서는) IOWAIT/Interrupt/SoftIRQ 에 대한 Counter 가 없을 수도 있으므로 예외 처리를 염두에 두어야 한다.
|
|