인프런 커뮤니티 질문&답변

unchaptered님의 프로필 이미지
unchaptered

작성한 질문수

시스템엔지니어가 알려주는 리눅스 실전편 Bash Shell Script

Linux top 커맨드에 대한 질문

작성

·

31

0

안녕하세요. BashScript 1부, 2부 강의를 듣고 개인적으로 BashScript를 현업에서 사용 중인 수강생입니다.

 

개인적으로 공부를 하다가 모니터링을 위해서 Linux top 명령어를 쓰고 있는데 이상한 부분이 있어 질문 남기게 되었습니다. 실습 환경은 다음과 같습니다.

 

AWS EC2 t3.medium

OS : Amazon Linux 2023
pCPU : 1
Thread/Core : 2
vCPU : 2

 

해당 환경에서 스트레스 테스트 진행해서 다수의 PostgreSQL이 실행되도록 하였습니다.

그리고 top 명령어의 결과가 수시로 바뀌는 가운데 한 순간을 캡쳐해보았습니다.

의문이 드는 부분은 시스템 %Cpu(s)의 정보프로세스의 %CPU의 정보가 불일치 한다는 점입니다.

 

시스템 %Cpu(s)의 총합은 100.0이며, 사용율은 100.0 - id(idle, 유휴 지표) 이며 프로세스들이 실행됨에 따라서 ui, sy, si, st 등의 주요 지표가 증감하는 것을 볼 수 있었습니다.
실제로는 id 지표가 0.0이므로 순간 CPU 사용율은 100%인 것을 알 수 있었습니다.

 

프로세스의 %CPU의 총합은 스크린샷에 드러나는 것만 더해도 118.6%에 해당합니다.
따라서 백분율 상으로 초과한 최소 18.6%의 사용율이 어떻게 된 것인지 궁금합니다.

 

 

기본적으로 AWS EC2는 멀티스레딩(SMT) 환경에서 작동되기 때문에 발생되는 문제일까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. unchaptered님.

Linux의 top 명령어에서 보여지는 CPU 사용률과 관련하여 궁금증을 가지실 수 있는 부분에 대해 설명드리겠습니다.

CPU 사용률 차이 이유:

top 명령어에서 나타나는 시스템 %Cpu(s)프로세스의 %CPU의 결과가 다르게 보이는 이유는 CPU 사용률 계산 방식에 있습니다.

  1. 시스템 %Cpu(s):

    • 이는 시스템의 전체 CPU 사용 상황을 나타내며, 모든 논리적 CPU 코어를 기준으로 평균값을 계산합니다.
    • 100% - idle로 현재 사용 중인 CPU의 백분율을 보여주기 때문에, 실제로 물리적 코어만큼의 100%를 넘어가지는 않습니다.
  2. 프로세스의 %CPU:

    • 각 프로세스에 대해, 개별 프로세스가 현재 사용하는 CPU 사용량을 나타냅니다.
    • 멀티스레드 환경에서 이 값은 개별 스레드의 사용량을 모두 더한 값일 수 있어 100%를 넘어설 수 있습니다.
    • AWS EC2 t3.medium의 경우 두 개의 vCPU가 있어, 이론상 각 스레드가 100%까지 사용할 수 있습니다. 따라서 여러 스레드를 사용하는 프로세스들의 CPU 사용률 합이 100%를 넘어가는 것은 어느 정도 자연스럽습니다.

SMT (Simultaneous Multithreading):

  • SMT 혹은 Hyper-Threading이 사용되는 환경에서는, 논리 코어 수가 물리 코어 수의 배수로 증가하게 됩니다. 이는 프로세스가 물리적인 CPU 이상으로 논리적 CPU를 통해 더 많은 작업을 처리하게 하여 %CPU가 100%를 초과하는 결과를 초래할 수 있습니다.

관련된 기존 답변을 통해 좀 더 자세한 이해를 돕고자 하오니, 아래 링크를 확인해 보시기 바랍니다:
- top 에서 빠져나올 때 PID

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

unchaptered님의 프로필 이미지
unchaptered

작성한 질문수

질문하기