2025/12 7

vmstat

시스템 상에서 프로세스, 메모리, 페이징, I/O, CPU 등을 실시간으로 모니터링하기 위해 vmstat이라는 명령을 사용한다. procr : 실행 대기 중인 프로세스 수, cpu 코어 수보다 높으면 cpu 병목 체크해야 함.b : i/o 작업 등으로 인터럽트가 불가능한 대기 상태에 있는 프로세스 수. memoryswpd : swap 메모리 사용량free : 사용 가능한 여유 물리 메모리buff : 버퍼로 사용된 메모리 (i/o 작업으로 인한 임시 저장)cache : 캐시로 사용된 메모리 (파일 읽기 등 성능 향상용) swapsi (swap-in) : 스왑 영역(디스크)에서 메모리로 불러들이는 양so (swap-out) : 메모리에서 스왑 영역(디스크)로 밀어내는 양* 스왑 메모리가 사용되는 것은 ..

Linux 2025.12.30

top

top는 시스템의 전체적인 혹은 프로세스 별 리소스를 체크하기 위해 가장 널리 알려지고 간단하게 사용하는 명령어다. [상단 %Cpu(s)]us (user) : 사용자 영역 CPU- 애플리케이션, 사용자 프로세스가 사용하고 있는 cpu sy (system) : 커널 영역 CPU- 커널, 시스템 콜, 드라이버 등 시스템에서 사용하고 있는 cpu ni (nice) : nice 적용 프로세스- nice 값이 변경된 프로세스 (우선순위 변경) id (idle) : idle 상태, 놀고 있는 CPU 비율 wa (iowait) : I/O 대기- 디스크, 네트워크 I/O 대기로 인해 CPU가 쉰 시간 비율 hi (hardware irq) : 하드웨어 인터럽트로 인해 CPU가 사용된 시간 비율- NIC, disk 인터..

Linux 2025.12.29

Load Average

uptime 혹은 top 명령으로 확인할 수 있는 부하 평균 값(Load Average)은 실행 중이거나 실행을 기다리는 프로세스의 평균을 의미한다. 이것은 단순히 CPU 사용률을 의미하는 것이 아닐뿐더러, 수치를 어떻게 해석해야 할 지를 정리한다. 프로세스는 현재 상태에 따라 여러가지 상태 값을 가지는데, R, D 상태의 프로세스들이 부하 평균에 들어간다. Running / Runnable (R) : CPU에서 실행 중이거나 실행 대기 중인 프로세스Uninterruptable Sleep (D) : I/O 대기중인 프로세스 (디스크, 네트워크 등) 세 개의 값은 각각 1분, 5분, 15분 동안의 부하 평균을 의미하는데, 커널이 매 5초마다 프로세스 수를 체크해서 이동 평균값을 갱신한다. 각 수치는 CPU..

Linux 2025.12.26

interrupt와 context switch

시스템 리소스 체크 툴 중에 dstat이라는 것을 이용하면 system 항목에 int, csw라는 필드가 있다. (vmstat이나 sar로도 확인 가능하다.)각각 interrupt와 context switch 횟수를 의미한다. interrupt : 하드웨어 이벤트가 발생할 때 cpu에 전달하는 신호, 마우스 클릭, 네트워크 패킷 수신 등... context switch : CPU가 실행중인 프로세스를 중단하고, 다른 프로세스로 교체하는 과정.멀티 태스킹 환경에서 가지고 있는 cpu 보다 훨씬 많은 프로세스들이 동시에 실행되는데, 정확히는 context switch를 통해 cpu 자원을 각 프로세스들이 빠르게 교체하면서 사용한다. 네트워크 트래픽이 많아지면 당연히 int는 증가한다. NIC에서 패킷을 처..

Linux 2025.12.22

I/O 스케줄러

기본적으로 디스크 입출력은 CPU의 관점에서 매우 느린 작업이다.따라서, 디스크 입출력이 발생하면 캐시/버퍼, 스케줄러 등 OS에서는 여러 가지 방법을 통해 성능 보완을 한다. 그런데, 사실 예전의 HDD는 디스크 헤더가 물리적으로 이동하면서 데이터를 읽는 방식, 쉽게 말하면 기계적인 방식으로 I/O가 처리됐기 때문에 커널의 I/O 스케줄러는 매우 중요한 요소였다. 하지만 플래시 메모리 기반의 SSD는 전기적 신호로 데이터가 입출력되기 때문에 스케줄러가 사실상 필요가 없다. 오히려 커널에서 입출력을 병합하고 정렬하는 것이 더 병목일 수 있다. cat /sys/block/sda/queue/scheduler 명령을 실해하면 현재 OS에서 사용중인, 사용할 수 있는 스케줄러를 확인할 수 있는데, 대괄호 표시 ..

Linux 2025.12.19

rrqm과 wrqm

디스크 성능 및 리소스 체크 시 iostat이라는 명령어를 사용한다. iostat -x 시 확장된 통계 지표를 제공하는데, 그 중에 rrqm과 wrqm이라는 지표가 있다. Read Request MergeWrite Request Merge 병합된 요청 읽기/쓰기 수를 의미한다. OS에서 IO 작업 시 디스크에 인접한 요청들은 병합해서 한꺼번에 처리한다. (그렇게 해야 디스크 접근이 조금이라도 줄어드니까)그렇기 때문에 해당 지표가 높다는 것은 io 처리가 순차적으로 효율적이게 처리되고 있다는 것을 의미한다. 만약 이 지표들이 낮으면 디스크 랜덤 io의 비중이 높다는 것이고, 특히 데이터베이스 서버인 경우 이런 현상은 성능 모니터링이 필요하다.

Linux 2025.12.18

Dirty Page

디스크에서 파일을 불러올 때 커널은 메모리의 page cache를 먼저 조회하게 되는데, 이 때 page cache에 원하는 데이터가 없으면 디스크를 조회하고 page cache에 저장한다. 이를 통해 디스크 io 대신 메모리의 page cache 접근으로 i/o 성능에 도움을 준다. 만약 읽기 작업뿐만 아니라 쓰기 작업이 있으면 추가적인 고려 사항이 있다.page cache의 내용이 변경되서 디스크의 내용과 달라지면 dirty bit를 활성화시킨다.이 때 서버의 전원이 갑자기 내려가거나 하면 정합성이 깨지게 된다. 그렇기 때문에 디스크 page cache간 데이터 동기화가 주기적으로 이루어져야 하는데, 이를 page writeback이라고 한다. page writeback이 너무 자주 이루어지면 디..

Linux 2025.12.16