2012년 6월 4일 월요일

Linux IO performance

요즘 IO문제로 시스템을 보고 있는 중이다.
역시나 기본부터 시작을 할려고 이것 저것 보다 보니 좋은 자료가 있어서 하나씩 정리를 하고 있다.


일반적으로 Disk IO subsystem은 모든 시스템 중에서 가장 느린 부분이다. ( 뭐 요즘은 SSD가 나오면서 많이 빨라지고 있지만…)

하지만 물리적인 동작이 필요한 부분이라서 다른 컴퓨터 구성요소보다는 느린 단점을 가지고 있다.
그리고 폰 노이만 컴퓨터 구조에서는 모든 프로그램이 결국에는 메모리에 올라와야 하는 형태를 뛰고 있기 때문에
이 Disk IO의 발생을 줄이는 것이 성능 향상에 주요한 요소이다.

일단 이야기에 들어가기 전에 간단한 용어 정리를 할려고한다.

Major Page Fault(MPF, sar에서는 majflt/s) : 필요한 Data가 Memory, Cache에 없는 경우에 발생하는 것으로 Disk에 있는 Data를 Memory로 옮기는 작업이 발생을 한다. --> 즉 IO event 발생

Minor Page Fault(MnPF, sar에서는 fault/s) : buffer에 데이터가 있는 경우 발생. 시간의 절약을 가져 옴.

==> File Buffer cache는 MPF는 최소하시키고 MnPF는 최대화 시키기 위함.

IO Monitoring tool : top, iostat, vmstat, sar
top에서는 F, u(page falut)순으로 정렬을 함.
vmstat 에서는 wa(wait IO), bi(block input(Disk->Memory), bo(Memory -> Disk)
sar -B를 통해서 pgpgin/s, pgpgout/s, fault/s,majflt/s 를 중점적으로 보아야 함. 

IO문제는
1. Too much IO at onece : CPUs wait on I/O
2. Read and Write Efficiency : Pipes too small
3. Slow disks
4. When Virtual Memory Kills IO

일단 이런 이유가 있다. 

댓글 없음: