기본 콘텐츠로 건너뛰기

Linux에서 CPU 사용률 구하기

procps 패키지에서 top 소스를 까보면 쉽게 알 수 있다.
일단 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 : 끝
위 필드는 stat파일을 열 때, 컴퓨터를 켠 시점부터 jiffies누적이므로 top에서 보여주는 사용률을 구하기 위해서 이전 값을 저장해서 현재 값과 차를 구해야한다. 각 사용률(percent)를 위한 총합은 위에 제시한 모든 필드를 몽땅 더하는 것으로 구할 수 있다.

참고로 위 값은 커널 버전에 따라 wait, hi, si 필드가 없을 수 있다. 2.6 이상 버전은 모두 표시하기때문에 가볍게 넘어가도록 하자.


Powered by ScribeFire.


댓글

이 블로그의 인기 게시물

설치한 패키지에서 RPM 추출하기

오래된 패키지를 관리할 저장소가 없어졌고, 기존 패키지로 다른 서버를 세팅해야할 일이 생겼다면 RPM의 리패키지 기능을 이용해보자. $ rpm -e --repackage [PACKAGE_NAME] 위와 같이 리패키지하면, /var/spool/repackage/ 에 생성한 RPM파일이 있다. :-)

Winget 해시 무시하기

가끔씩 Winget 에서 패키지를 다운로드 했을 때, "설치 관리자 해시가 일치하지 않습니다." 오류가 뜰 때가 있다. 보안 이슈가 있지만, 그냥 무시하고 싶을 때, 아래 순서로 무시해준다. 관리자 권한 winget settings --enable InstallerHashOverride 설치 winget install --ignore-security-hash --id NirSoft.NirCmd