OS 기술/Linux

디스크 IOPS, speed 등 성능 체크

DongT 2024. 5. 14. 02:32
728x90
반응형

리눅스에서 디스크 및 파일시스템의 성능 벤치마킹이 필요할 때가 있다.
여러 방법과 도구가 있지만, 아래 3개가 대체로 많이 사용하는 도구로 생각된다.
1) hdparm  (https://man7.org/linux/man-pages/man8/hdparm.8.html)
2) fio   (https://github.com/axboe/fio)
3) dd   (https://man7.org/linux/man-pages/man1/dd.1.html


!!주의!! 사실 이거 쓰려고 포스팅했다.

oracle DB를 사용중인 시스템에서는 fio 명령어 중 write에 관여하는 옵션을 쓰면 절대 안된다. 
(물론 oracle에서 write가 되는 모든 명령어는 위험하다)
 - fio rw 옵션값중 write관여 값: readwrite, randrw, write, trimwrite
아래는 Oracle 공식문서
https://docs.oracle.com/en-us/iaas/Content/Block/References/samplefiocommandslinux.htm

oracle db에서 fio 명령어 사용시 제한되는 옵션

 


 
 
다시 본론으로 넘어와서 시스템이 뭔가 느려졌다고 느껴질 때 여러가지 확인을 하게 되고,
그중에 디스크, 파일시스템의 성능이 저하됬을지 확인이 필요할 때 특정 명령어를 사용해야한다.
 


1) hdparm
디스크 정보 수집 및 성능 테스트가 가능하다.
 
--설치

# yum install hdparm
search로 먼저 찾음

 
-- 디스크 성능 측정
-t: 성능을 측정.
-T: 버퍼 캐시 읽기 성능을 측정. 캐시를 이용하는것까지 측정하기 때문에 결과값이 빠름.

# hdparm -t /dev/sdb
검사할 디스크 먼저 식별

 
-- 정보출력
-i: ID 정보를 표시.
-I:상세한 ID 및 기능 정보를 표시.

# hdparm -i /dev/sdb

 
 
 
-- 사용시 위험: man page에도 나옴

 -J   Get/set Western DIgital "Idle3" timeout for a WDC "Green" drive (DANGEROUS)
 -N   Get/set max visible number of sectors (HPA) (VERY DANGEROUS)
 -r   Get/set device readonly flag (DANGEROUS to set)
 -s   Set power-up in standby flag (0/1) (DANGEROUS)
 -X   Set IDE xfer mode (DANGEROUS)
 --fwdownload            Download firmware file to drive (EXTREMELY DANGEROUS)
 --fwdownload-mode3      Download firmware using min-size segments (EXTREMELY DANGEROUS)
 --fwdownload-mode3-max  Download firmware using max-size segments (EXTREMELY DANGEROUS)
 --fwdownload-mode7      Download firmware using a single segment (EXTREMELY DANGEROUS)
 --make-bad-sector Deliberately corrupt a sector directly on the media (VERY DANGEROUS)
 --repair-sector   Alias for the --write-sector option (VERY DANGEROUS)
 --write-sector    Repair/overwrite a (possibly bad) sector directly on the media (VERY DANGEROUS)

 
 


2) fio
디테일한 디스크 성능 테스트 기능이 많은 도구.
기능이 많은만큼 자세히 알고 써야한다.
 
--설치

# yum install fio.x86_64

 
 
--디스크 성능 측정

# fio --filename=/dev/sdb1 --rw=read --name=DISKTEST --runtime=10 --time_based

 
--파일시스템 성능 측정

# fio --directory=/mount_point --rw=read --name=FSTEST --runtime=10 --time_based

 
 

[fio 주로 사용하는 명령어]
 
--filename=FILENAME: 테스트할 파일의 이름을 지정. 주로 파일시스템이 아닌 디스크 디바이스 지정시 사용.
--directory=/path/to/directory: 테스트할 디렉토리 지정. 주로 파일시스템 마운트 디렉토리를 지정하여 사용.
--size=SIZE: 테스트 파일의 크기를 지정. 기본 byte 수치이며, K, M, G 등 용량 단위 설정 가능.
--bs=BLOCKSIZE: 한번에 처리하는 블록의 사이즈를 지정. 사이즈가 커지면 작업속도가 빨라지지만 시스템 부하 발생.
                               일반적으로 4KB, 64KB로 지정
--iodepth=DEPTH: 한번에 동시 I/O 요청 수를 지정. 요청수가 커지면 작업속도가 빨라지지만 시스템 부하 발생.
--numjobs=NUMJOBS: 병렬 작업의 수를 지정. 병렬수가 커지면 작업속도가 빨라지지만 시스템 부하 발생.
--rw=READ/WRITE: 읽기 또는 쓰기 작업을 선택. read/write/randread/randwrite 등 옵션을 쓸수 있다.
--name=JOBNAME: 작업이름을 지정. 단순히 식별가능한 이름을 지정함.
--runtime=TIME: 테스트를 실행할 시간을 지정. 지정하지않으면 명령어 중단할 때까지 계속 명령어 실행.
--time_based: --runtime 옵션과 같이 사용.
--ramp_time=RAMP_TIME: 테스트 시작 전 대기 시간을 지정. 
--group_reporting: 여러 성능측정을 할 경우 통합된 보고서를 화면에 출력해줌.
--output=FILENAME: 테스트 결과를 파일로 남김.
--direct: 캐시를 거치지 않고 직접 디바이스의 성능을 측정함. --rw 옵션에서 random 값을 줄 때 사용.
--invalidate=1/0: 파일 시스템 캐시를 무효화할지 여부를 지정. 1=캐시무효, 0=캐시사용

 
 


3) dd
dd는 백업, 복구, 더미파일생성(=파일성능측정) 등 여러모로 사용처가 많다.
이중 파일성능측정 부분을 사용할 수 있다.
 
별도 설치는 필요없다.

# /bin/dd

 
--더미파일생성
실제 파일을 생성하면서 쓰기 성능을 측정할 수 있다.

# dd if=/dev/zero of=/mount_point/file01.txt bs=1024 count=1000

 
굉장히 간단하지만 직접 write 하면서 측정한다는 점에서 굉장히 주의해야할 명령어이다.
 
 
 


 
뭐가 됬든 설정변경, 쓰기에 관여된 옵션은 다 위험한것 같다.

728x90