6. • 프로세스별 사용 파일 목록: lsof -p
• 프로세스별 입출력 모니터링: strace -p
파일 입출력 발생량과 용도
(리눅스 기준) #1
파일 크기 사용중인 파일 목록
I/O 시스템 콜 모니터링
7. • 프로세스별 입출력 위치 확인: pstack, jstack
• 시스템 모니터링
• AIX 시스템: filemon
• 리눅스: lsof
• 전체 프로세스가 사용하는 파일 목록 표시
파일 입출력 발생량과 용도
(리눅스 기준) #2
주기적으로 캡쳐하여
반복해서 발생하는 IO에
대하여 호출 부분 확인
10. 디스크 구성 확인
(리눅스 기준) #1
• df: 파일 시스템과 논리 볼륨 확인
• lvdisplay: 논리 볼륨 목록
• vgscan: 볼륨 그룹 목록
논리 볼륨
마운트 디렉토리
볼륨 그룸
11. 디스크 구성 확인
(리눅스 기준) #2
• pvdisplay: 물리 볼륨 목록
• vgdisplay -v: 볼륨 그룹 정보
12. • 일반 입출력 과정
• I/O 요청(Prog) -> 파일 버퍼 캐시에 로드(OS) -> 데이터 전
달(Prog)
파일시스템의 입출력 방
식 #1
13. • 비동기 입출력
• 읽고 쓰는 작업이 백그라운드에서 실행 됨
• 비동기 입출력을 담당하는 커널 프로세스가 존재
• 직접 입출력
• 운영체제의 버퍼 캐시를 사용하지 않음
• DB의 경우 내부 캐시를 구현하고 있어, 직접 입출력이 유리할 수 있음
• 동시 입출력
• inode 락을 사용하지 않고, 공유된 파일을 동시에 여러개의 스레드가 접
근 가능
• 오라클의 경우 내부에 쓰기 직렬화 알고리즘이 구현되어 있어 적용 가능
파일시스템의 입출력 방
식 #2
15. • RAID-0
• 데이터를 여러 하드에 분산하여 저장
• 성능이 뛰어 나지만, 신뢰도가 낮음
• RAID-1
• 데이터의 복제본을 별도의 하드에 저장
• 안정성이 뛰어나지만 저장 공간이 2배 필요
레이드 #1
<출처: http://www.dograt.com/2010/05/page/2>
16. • RAID-0+1
• 0 적용후 1을 적용
• RAID-1+0
• 1 적용후 0을 적용
• 0 + 1 보다 장애 복구가 용이
레이드 #2
<출처: http://www.jigi.net/4177>
17. • RAID-4
• 하나의 하드디스크에 패리티 정보를 저장
• 읽기 성능은 빠르지만, 쓰기 연산후 패리티 갱신
이 필요
• 패리티 하드가 병목의 원인
• RAID-5
• 패리티 정보를 여러 하드에 저장
• 4와 비교하여 쓰기 빠름, 읽기 느림
레이드 #3
<출처: https://en.wikipedia.org/wiki/Standard_RAID_levels>
18. 통합 모니터링 도구
(리눅스 기준)
• nmon
• 실시간 모니터링 및 로깅 기능 제공하는 강력한 모니터링 도구
• 실시간 모니터링 모드: nman -s <second> -b
• 기록 모드: nmon -f -s <second> -m <directory] -<모니터링 항목 옵션>
• top
• CPU, 메모리, 스왑, 프로세스 등 기본 모니터링 제공
19. •권문수. 실무로 배우는 시스템 성능 최적화. 경기도
파주시 위키 북스, 2016.
References