procps 패키지에서 top 소스를 까보면 쉽게 알 수 있다.
일단 CPU개수를 구해야하는데, sysconf(_SC_NPROCESSORS_ONLN)로 쉽게 구할 수 있다. (아쉽게도 표준이 아니므로 다른 OS에서 잘 돌아간다는 보장은 없다)
다음은 현재 CPU 사용률을 구해야하는데 리눅스는 이것을 /proc/stat에 텍스트 형태로 저장한다. 형태는 아래와 같다.
참고로 위 값은 커널 버전에 따라 wait, hi, si 필드가 없을 수 있다. 2.6 이상 버전은 모두 표시하기때문에 가볍게 넘어가도록 하자.
일단 CPU개수를 구해야하는데, sysconf(_SC_NPROCESSORS_ONLN)로 쉽게 구할 수 있다. (아쉽게도 표준이 아니므로 다른 OS에서 잘 돌아간다는 보장은 없다)
다음은 현재 CPU 사용률을 구해야하는데 리눅스는 이것을 /proc/stat에 텍스트 형태로 저장한다. 형태는 아래와 같다.
cpu user system nice idle wait hi si zero
cpu? user system nice idle wait hi si zero
(반복...)
첫 라인은 전체 cpu 평균을 가르키는 것 같다.(막가는거지요?) 다음 줄부터는 CPU 정보를 cpu0부터 표기하였다. 각 필드는 리눅스 시간 단위인 jiffies로 내용은 아래와 같다.- user : 사용자 영역 코드 실행 시간
- system: 커널 영역 코드 실행 시간
- nice : 기본보다 낮은 우선순위로 실행한 사용자 영역 코드 실행 시간
- idle : I/O 완료가 아닌 대기 시간
- wait : I/O 완료 대기 시간
- hi : Hard Interrupt(IRQ)
- si : Soft Interrupt(SoftIRQ)
- zero : 끝
참고로 위 값은 커널 버전에 따라 wait, hi, si 필드가 없을 수 있다. 2.6 이상 버전은 모두 표시하기때문에 가볍게 넘어가도록 하자.
Powered by ScribeFire.
댓글
댓글 쓰기