io 3

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

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