Unix / Linux - 시스템 성능

안녕하세요, 기술 열망하는 친구들! 여러분의 친절한 이웃 컴퓨터 과학 교사로서, Unix/Linux 시스템 성능의 fascinatig 세상을 안내해드리게 되어 기쁩니다. 프로그래밍에 처음인 사람이라면 걱정하지 마세요 - 기본부터 시작하여 차례대로 진행하겠습니다. 그럼 커피 한 잔 (또는 차, 그게 당신의 취향이라면)을 손에 들고, 이제 시작해보겠습니다!

Unix / Linux - System Performance

성능 구성 요소

시스템을 조정하기 전에 시스템 성능을 구성하는 요소를 이해하는 것이 중요합니다. 컴퓨터를 정밀하게 조율된 오케스트라로 생각해보세요 - 각 구성 요소는 조화로운 연주를 만들기 위해 중요한 역할을 합니다.

1. CPU 사용량

중앙 처리 장치(CPU)는 우리 오케스트라의 지휘자입니다. 지시를 실행하고 모든 다른 구성 요소를 조정하는 역할을 합니다. CPU 사용량에 대해 이야기할 때, 우리는 이 지휘자가 얼마나 바쁜지를 의미합니다.

2. 메모리 사용량

메모리, 또는 RAM은 우리 오케스트라의 악보입니다. CPU가 빠르게 접근해야 할 데이터를 저장합니다. 메모리가 부족하면 성능이 크게 저하될 수 있습니다.

3. 디스크 I/O

디스크 입력/출력(I/O)은 음악가들이 새로운 악기나 악보를 꺼내는 과정과 같습니다. 하드 드라이브에서 읽거나 쓰는 작업을 포함하며, RAM에 접근하는 것보다 느릴 수 있습니다.

4. 네트워크 성능

네트워크 성능은 우리 오케스트라가 서로를 잘 듣고, 동기화를 유지하는 것과 비슷합니다. 네트워크를 통해 데이터 전송의 속도와 효율성을 의미합니다.

성능 도구

이제 구성 요소를 이해했으므로, 시스템 성능을 측정하고 개선할 수 있는 도구를 살펴보겠습니다. 이 도구들을 우리 오케스트라의 조율 도구로 생각할 수 있습니다.

1. top 명령어

top 명령어는 시스템의 대시보드입니다. 실행 중인 프로세스와 시스템 자원을 실시간으로 제공합니다.

$ top

이 명령어는 기본적으로 CPU 사용량 순으로 정렬된 프로세스 목록을 지속적으로 업데이트하여 표시합니다. 다음은 볼 것을 보여줍니다:

  • PID: 프로세스 ID
  • USER: 프로세스 소유자
  • PR: 우선순위
  • NI: Nice 값(우선순위에 영향을 줌)
  • VIRT: 가상 메모리 사용량
  • RES: 물리 메모리 사용량
  • SHR: 공유 메모리
  • S: 프로세스 상태
  • %CPU: CPU 사용량
  • %MEM: 메모리 사용량
  • TIME+: 총 CPU 시간
  • COMMAND: 명령어 이름

2. vmstat 명령어

vmstat 명령어는 시스템의 심장을 들여다보는 도구입니다. 프로세스, 메모리, 페이지, 블록 I/O, 트랩, 그리고 CPU 활동에 대한 정보를 제공합니다.

$ vmstat 2 5

이 명령어는 2초 간 시스템 통계를 표시하고, 5번 반복합니다. 출력에는 다음이 포함됩니다:

  • r: 실행 대기 중인 프로세스 수
  • b: 비가동 상태인 프로세스 수
  • swpd: 사용된 가상 메모리 양
  • free: 자유 메모리 양
  • buff: 버퍼로 사용된 메모리 양
  • cache: 캐시로 사용된 메모리 양
  • si: 디스크에서 가져온 메모리 양
  • so: 디스크로 보낸 메모리 양
  • bi: 블록 장치에서 받은 블록 수
  • bo: 블록 장치로 보낸 블록 수
  • in: 1초당 인터럽트 수
  • cs: 1초당 컨텍스트 전환 수
  • us: 비 커널 코드 실행 시간
  • sy: 커널 코드 실행 시간
  • id: 대기 시간
  • wa: I/O 대기 시간

3. iostat 명령어

iostat 명령어는 디스크 드라이브의 속도계입니다. CPU 통계와 장치 및 파티션의 입력/출력 통계를 보고합니다.

$ iostat -x 2 5

이 명령어는 2초 간 확장 통계를 표시하고, 5번 반복합니다. 출력에는 다음이 포함됩니다:

  • Device: 장치 이름
  • rrqm/s: 1초당 병합된 읽기 요청 수
  • wrqm/s: 1초당 병합된 쓰기 요청 수
  • r/s: 1초당 읽기 수
  • w/s: 1초당 쓰기 수
  • rkB/s: 1초당 읽은 킬로 바이트 수
  • wkB/s: 1초당 쓴 킬로 바이트 수
  • avgrq-sz: 평균 요청 크기(セク터)
  • avgqu-sz: 평균 큐 길이
  • await: I/O 요청의 평균 시간
  • svctm: 평균 서비스 시간
  • %util: I/O 요청이 발생한 CPU 시간 비율

4. netstat 명령어

netstat 명령어는 네트워크의 교통 관제자입니다. 네트워크 연결, 라우팅 테이블, 인터페이스 통계, 마스컬링 연결, 그리고 멀티캐스트 구성원을 표시합니다.

$ netstat -tuln

이 명령어는 다음을 표시합니다:

  • 활성 인터넷 연결(TCP 및 UDP)
  • 리스닝 소켓
  • 숫자 주소와 포트 번호

출력에는 다음이 포함됩니다:

  • Proto: 프로토콜(TCP 또는 UDP)
  • Recv-Q: 수신 대기 데이터
  • Send-Q: 전송 대기 데이터
  • Local Address: 로컬 소켓 종단
  • Foreign Address: 원격 소켓 종단
  • State: 소켓 상태

5. sar 명령어

sar (System Activity Reporter) 명령어는 시스템의 블랙 박스 레이코더입니다. 시스템 활동 정보를 수집, 보고, 저장합니다.

$ sar -u 2 5

이 명령어는 2초 간 CPU 사용량 통계를 표시하고, 5번 반복합니다. 출력에는 다음이 포함됩니다:

  • %user: 사용자 수준에서의 CPU 사용량 비율
  • %nice: Nice 우선순위에서의 사용자 수준 CPU 사용량 비율
  • %system: 시스템 수준에서의 CPU 사용량 비율
  • %iowait: 시스템이 디스크 I/O 요청을 기다린 시간 비율
  • %steal: 가상 CPU가 다른 가상 처리기에 의해 강제로 기다린 시간 비율
  • %idle: CPU가 대기 중이었고 시스템이 디스크 I/O 요청을 기다리지 않은 시간 비율

다음은 이 성능 도구들의 요약 표입니다:

명령어 목적 중요 정보
top 실시간 시스템 모니터 프로세스 목록, CPU 사용량, 메모리 사용량
vmstat 가상 메모리 통계 프로세스, 메모리, 페이지, I/O, CPU 활동
iostat I/O 통계 CPU 통계, 장치 I/O 통계
netstat 네트워크 통계 네트워크 연결, 라우팅 테이블, 인터페이스 통계
sar 시스템 활동 보고서 CPU 사용량, 메모리 사용량, I/O 활동, 네트워크 활동

이 도구들에 능숙해지는 것은 악기를 연주하는 것과 같습니다 - 연습이 필요합니다! 처음에는 압도적일 수 있지만, 하나의 도구를 선택하여 그 출력을 깊이 이해한 후 다음으로 넘어가세요.

제 경험상, 학생들이 자신의 시스템에서 이 도구들을 자주 실험하면 시스템 성능에 대한 더 깊은 이해를 얻습니다. 악단의 각 악기를 듣고, 각각의 개선할 수 있는 부분을 찾는 것처럼 말입니다.

그러므로, 친구 여러분, 터미널을 열고 탐험해보세요. 누가 다음 위대한 시스템 성능 지휘자가 될지 몰라요!

Credits: Image by storyset