ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Linux Load Average로 부하 확인하기
    커널(Kernel) 2022. 11. 27. 22:17

     

    환경 정보

    OS: ubuntu18.04 

    swap: off

     

    Load Average

    Load Average는 R(running)과 D(uninterruptted sleeping) 상태에 있는 프로세스를 1분, 5분, 15분마다의 평균 값을 나타낸 것인데, uptime 커맨드 사용시 확인할 수 있다. 

     

    Load Average가 높으면 실행 중인 프로세스가 많거나 I/O등을 처리하기 위한 대기 상태에 있다는 것이다. 

    반대로 말하면 CPU를 많이 쓰는 프로그램을 사용하거나 I/O 리소스를 많이 사용하는 프로그램을 사용하면 Load Average가 높아질 수 있다. 

     

    좀 더 구체적으로 말하면 Load Average는 Run queue에 있는 프로세스 수에 의해서 결정이 되는데

    이는 CPU core의 갯수에 따라서 다른 의미를 가질 수 있다.

     

    Run Queue에 프로세스가 2개 있다고 했을 때, 

    코어가 1개인 시스템에서 Run queue에 2개의 프로세스가 있는 경우와

    코어가 2개인 시스템에서 각 CPU 코어에 연결된 Run queue에 프로세스가 1개씩 있을 수 있다. 

     

    이 때, 일반적으로 후자의 경우가 프로세스 처리 속도가 빠르고 부하가 적다.  

    즉, 같은 Load average일지라도 CPU core의 갯수에 따라서 다를 수 있다.  

     

    각 CPU core와 연결되어 있는 run queue에서 돌아가고 있는 프로세스는 /proc/sched_debug에서 확인할 수 있다.  

     

     

     

    또한 Load Average를 통해서 시스템에 부하가 걸리고 있는 경우, vmstat를 이용하면 더 구체적으로 어떤 부하가 걸리는지 확인할 수 있다.

     

     

    여기서 r과 b가 의미하는 것은 다음과 같다. 

    r: 실행되기를 기다리거나 실행되고 있는 프로세스 수

    b: I/O를 위해 대기열에 있는 프로세스 수 

     

    Reference

    Devops와 SE를 위한 리눅스 커널 이야기 

     

    반응형

    댓글

Designed by Tistory.