리눅스에서 디스크 및 파일시스템의 성능 벤치마킹이 필요할 때가 있다.
여러 방법과 도구가 있지만, 아래 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
![](https://blog.kakaocdn.net/dn/stwPg/btsHl1RsCKy/TX53OP7jOYL13EQQ74ZXHk/img.png)
다시 본론으로 넘어와서 시스템이 뭔가 느려졌다고 느껴질 때 여러가지 확인을 하게 되고,
그중에 디스크, 파일시스템의 성능이 저하됬을지 확인이 필요할 때 특정 명령어를 사용해야한다.
1) hdparm
디스크 정보 수집 및 성능 테스트가 가능하다.
--설치
# yum install hdparm |
![](https://blog.kakaocdn.net/dn/tcpoC/btsHnHd8f8W/gIiXQ4Dzeaa8ZXbXLmu901/img.png)
-- 디스크 성능 측정
-t: 성능을 측정.
-T: 버퍼 캐시 읽기 성능을 측정. 캐시를 이용하는것까지 측정하기 때문에 결과값이 빠름.
# hdparm -t /dev/sdb |
![](https://blog.kakaocdn.net/dn/czlN7h/btsHnd5zbor/Ebq0m5hYNbpSdqNHMspIlK/img.png)
-- 정보출력
-i: ID 정보를 표시.
-I:상세한 ID 및 기능 정보를 표시.
# hdparm -i /dev/sdb |
![](https://blog.kakaocdn.net/dn/bJqBVf/btsHpPBHlcX/dcBnD3WjKsM6VYoUshBST0/img.png)
-- 사용시 위험: 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 |
![](https://blog.kakaocdn.net/dn/cqKuc8/btsHnwKCEQB/rit8zxcBEREkOdEE3FsKN1/img.png)
--디스크 성능 측정
# fio --filename=/dev/sdb1 --rw=read --name=DISKTEST --runtime=10 --time_based |
![](https://blog.kakaocdn.net/dn/cIUQAd/btsHpsGQHBp/Lu0PCenZeemk6okAzPZrZ1/img.png)
--파일시스템 성능 측정
# fio --directory=/mount_point --rw=read --name=FSTEST --runtime=10 --time_based |
![](https://blog.kakaocdn.net/dn/47CHM/btsHncMo86O/1WliMVYrnOWgbCNsGmzh6k/img.png)
[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 |
![](https://blog.kakaocdn.net/dn/beJ7En/btsHobTtpB3/kg6bK5q8XkUOOvbmxYzeSk/img.png)
--더미파일생성
실제 파일을 생성하면서 쓰기 성능을 측정할 수 있다.
# dd if=/dev/zero of=/mount_point/file01.txt bs=1024 count=1000 |
![](https://blog.kakaocdn.net/dn/Ph3LN/btsHo3gv1lV/GuxBz2zkUIP8qvc66enLd1/img.png)
굉장히 간단하지만 직접 write 하면서 측정한다는 점에서 굉장히 주의해야할 명령어이다.
뭐가 됬든 설정변경, 쓰기에 관여된 옵션은 다 위험한것 같다.
'OS 기술 > Linux' 카테고리의 다른 글
리눅스 LVM이 없는 환경에서 OS디스크 볼륨 증설하기 (2) | 2024.06.28 |
---|---|
SNMP Config 셋팅 스크립트 (0) | 2024.05.28 |
리눅스 명령어 반복하는 방법 (1) | 2024.04.20 |
NTP 오류 - ntpd[]: frequency error -506 PPM exceeds tolerance 500 PPM (1) | 2023.11.13 |
NFS 서버,클라이언트 설정 파일/폴더 공유 만들기 (0) | 2023.11.10 |