작성일: 2024년 8월 14일
SSD, HDD 등 저장 장치에 대해서 Read, Write 성능을 측정하기 위해서는 dd 같은 명령어를 사용하면 성능 수치까지 나오지만
실제로 File copy를 하면서 실사용 환경과 같이 Read, Write 성능을 측정해보고 싶다면 아래 shell script를 활용해보는 것을 추천한다.
#!/bin/bash
fallocate -l 1G sample-big.file
CNT=0
while true; do
CUR_DATE=`date +%4Y-%m-%d-%H-%M-%S`
CNT=$(( ${CNT}+1 ))
echo ""
echo ""
echo "============= TEST START ================"
echo "Test time: ${CUR_DATE}"
echo "Test count: $CNT"
START_TIME=`date +%s%N`
cp sample-big.file sample-big-1.file
sync
END_TIME=`date +%s%N`
INTERVAL_TIME_NANO=$(( ${END_TIME}-${START_TIME} ))
INTERVAL_TIME_NANO_COMMA=$(numfmt --grouping ${INTERVAL_TIME_NANO})
INTERVAL_TIME_MILI=$(( ${INTERVAL_TIME_NANO}/1000000 ))
INTERVAL_TIME_MILI_COMMA=$(numfmt --grouping ${INTERVAL_TIME_MILI})
echo "Total execution time: ${INTERVAL_TIME_NANO_COMMA} (nanosec) ${INTERVAL_TIME_MILI_COMMA} (milisec)"
BPS=$(( 1073741824*1000000/${INTERVAL_TIME_NANO} ))
BPS_COMMA=$(numfmt --grouping ${BPS})
echo "IO BPS: ${BPS_COMMA} (KBytes / Sec)"
rm sample-big-1.file
sync
echo "============= TEST END =================="
echo ""
echo ""
sleep 2
done
만약, Read, Write 부하를 더 많이 주고 싶다면 `fallocate` 명령으로 더 큰 사이즈의 file을 테스트하도록 하면 된다.
(위 코드에서 1G를 10G 또는 100G로 수정하면 됨)
위 스크립트를 실행하면, 아래와 같이 테스트가 되면서 출력물이 나온다.
$ my-run.sh
============= TEST START ================
Test time: 2024-08-14-10-58-10
Test count: 1
Total execution time: 1,400,259,865 (nanosec) 1,400 (milisec)
IO BPS: 766,816 (KBytes / Sec)
============= TEST END ==================
============= TEST START ================
Test time: 2024-08-14-10-58-14
Test count: 2
Total execution time: 758,501,406 (nanosec) 758 (milisec)
IO BPS: 1,415,609 (KBytes / Sec)
============= TEST END ==================
... 중간 생략 ...
여담:
내가 일하고 있는 연구소에서 사용중인 Ubuntu 18.04 장비 중에서 Linux 4.15.0-143-generic 커널 버전을 사용하는 모델만
SSD I/O와 HDD I/O 성능이 100분의 1 수준으로 떨어지는 증상이 있었다.
이를 쉽게 재현하기 위해서 위와 같은 Script를 만들었다.
위 IO 과부하 테스트를 해본 결과, 아래와 같은 Linux kernel version 들이 모두 IO 성능이 급격하게 떨어지는 현상이 있다.
4.15.0-136-generic -> 정상
4.15.0-137-generic -> SSD HDD IO 성능 저하 이슈 발생
4.15.0-138-generic -> SSD HDD IO 성능 저하 이슈 발생
4.15.0-139-generic -> SSD HDD IO 성능 저하 이슈 발생
4.15.0-140-generic -> SSD HDD IO 성능 저하 이슈 발생
4.15.0-141-generic -> SSD HDD IO 성능 저하 이슈 발생
4.15.0-142-generic -> SSD HDD IO 성능 저하 이슈 발생
4.15.0-143-generic -> SSD HDD IO 성능 저하 이슈 발생
4.15.0-144-generic -> 정상
'Shell Script' 카테고리의 다른 글
Bash Shell 기본 정리, 요약, 스크립트 예제 (Script example) (0) | 2023.02.15 |
---|---|
find xargs 명령 사용법 (편하게 사용하는 팁) (0) | 2022.07.05 |
카운트 다운 쉘 스크립트 (bash shell script - count down) (0) | 2022.07.05 |
sed 사용법 - 종합 (0) | 2022.06.16 |
문자열에서 따옴표 떼어내기(제거하기) (0) | 2022.01.22 |