반응형
작성일: 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   -> 정상

 

 


 

+ Recent posts