synology iscsi의 disk 성능 측정
10G NIC로 연결된 환경에서 sysnology ds923+에서 iscsi를 만들고
이를 연결한 후 sysbench를 수행해봄
리눅스에 먼저 다음을 설치
sudo apt install open-iscsi multipath-tools lsscsi
이후 discover를 하여 target을 찾은 후 TARGET_IQN을 정의
PORTAL_IP=%synology-ip%
sudo iscsiadm -m discovery -t sendtargets -p $PORTAL_IP
TARGET_IQN=%직전 명령어에서 발견한 iqn값%
CHAP 이 없다는 가정하에 DISK와 PART 정의
sudo iscsiadm -m node -T "$TARGET_IQN" -p ${PORTAL_IP}:3260 --login
lsblk -o NAME,SIZE,TYPE,SERIAL
# 등록된 디스크가 sda 였음.
DISK=/dev/sda
sudo parted -s $DISK mklabel gpt
sudo parted -s -a optimal $DISK mkpart primary 0% 100%
PART=${DISK}1
파티션 초기화 및 mount
sudo mkfs.ext4 -F $PART
sudo mount $PART /mnt/iscsi
이제 성능 측정 시작
# 테스트 파일 생성
sysbench fileio --file-total-size=10G prepare
# 아래와 같은 성능이 나옴
# 10737418240 bytes written in 16.58 seconds (617.56 MiB/sec).
# 순차 읽기/쓰기 테스트 수행 -> 결과로 읽기: 13320.09MiB/s, 쓰기: 334.05Mib/s
sysbench fileio --file-total-size=10G --file-test-mode=seqrd --time=60 --max-requests=0 --threads=$(nproc) run
sysbench fileio --file-total-size=10G --file-test-mode=seqwr --time=60 --max-requests=0 --threads=$(nproc) run
# 랜덤 읽기/쓰기 테스트 수행 -> 결과로 읽기: 12917.62MiB/s, 쓰기: 259.02Mib/s
sysbench fileio --file-total-size=10G --file-test-mode=rndrd --time=60 --max-requests=0 --threads=$(nproc) run
sysbench fileio --file-total-size=10G --file-test-mode=rndwr --time=60 --max-requests=0 --threads=$(nproc) run
nvme가 있는 p41과 성능 비교
# 테스트 파일 생성
sysbench fileio --file-total-size=10G prepare
# 아래와 같은 성능이 나옴
10737418240 bytes written in 6.65 seconds (1539.94 MiB/sec).
# 순차 읽기/쓰기 테스트 수행 -> 결과로 읽기: 13301.94MiB/s, 쓰기: 198.11Mib/s
sysbench fileio --file-total-size=10G --file-test-mode=seqrd --time=60 --max-requests=0 --threads=$(nproc) run
sysbench fileio --file-total-size=10G --file-test-mode=seqwr --time=60 --max-requests=0 --threads=$(nproc) run
# 랜덤 읽기/쓰기 테스트 수행 -> 결과로 읽기: 12972.65MiB/s, 쓰기: 85Mib/s
sysbench fileio --file-total-size=10G --file-test-mode=rndrd --time=60 --max-requests=0 --threads=$(nproc) run
sysbench fileio --file-total-size=10G --file-test-mode=rndwr --time=60 --max-requests=0 --threads=$(nproc) run
p41의 속도가 이상함. sysbench가 아닌 fio로 재시도
# 순차 읽기
fio --name=seqread \
--filename=/$PWD/testfile \
--size=10G \
--rw=read \
--bs=1M \
--iodepth=32 \
--numjobs=4 \
--direct=1 \
--runtime=60 \
--time_based \
--group_reporting
Run status group 0 (all jobs):
READ: bw=6730MiB/s (7057MB/s), 6730MiB/s-6730MiB/s (7057MB/s-7057MB/s), io=394GiB (423GB), run=60001-60001msec
# 순차 쓰기
fio --name=seqwrite \
--filename=/$PWD/testfile \
--size=10G \
--rw=write \
--bs=1M \
--iodepth=32 \
--numjobs=4 \
--direct=1 \
--runtime=60 \
--time_based \
--group_reporting
Run status group 0 (all jobs):
WRITE: bw=2003MiB/s (2100MB/s), 2003MiB/s-2003MiB/s (2100MB/s-2100MB/s), io=117GiB (126GB), run=60003-60003msec
# 랜덤 읽기
fio --name=rndread \
--filename=/$PWD/testfile \
--size=10G \
--rw=randread \
--bs=4k \
--iodepth=256 \
--numjobs=8 \
--direct=1 \
--ioengine=io_uring \
--runtime=60 \
--time_based \
--group_reporting
Run status group 0 (all jobs): READ: bw=5938MiB/s (6227MB/s), 5938MiB/s-5938MiB/s (6227MB/s-6227MB/s), io=348GiB (374GB), run=60002-60002msec
# 랜덤 쓰기
fio --name=rndwrite \
--filename=/$PWD/testfile \
--size=10G \
--rw=randwrite \
--bs=4k \
--iodepth=64 \
--numjobs=4 \
--direct=1 \
--runtime=60 \
--time_based \
--group_reporting
Run status group 0 (all jobs):
WRITE: bw=1315MiB/s (1379MB/s), 1315MiB/s-1315MiB/s (1379MB/s-1379MB/s), io=77.1GiB (82.7GB), run=60001-60001msec
다시 같은 방법으로 iscsi 테스트
# 순차 읽기
fio --name=seqread \
--filename=/$PWD/testfile \
--size=10G \
--rw=read \
--bs=1M \
--iodepth=32 \
--numjobs=4 \
--direct=1 \
--runtime=60 \
--time_based \
--group_reporting
Run status group 0 (all jobs):
READ: bw=991MiB/s (1040MB/s), 991MiB/s-991MiB/s (1040MB/s-1040MB/s), io=58.1GiB (62.4GB), run=60004-60004msec
# 순차 쓰기
fio --name=seqwrite \
--filename=/$PWD/testfile \
--size=10G \
--rw=write \
--bs=1M \
--iodepth=32 \
--numjobs=4 \
--direct=1 \
--runtime=60 \
--time_based \
--group_reporting
Run status group 0 (all jobs):
WRITE: bw=937MiB/s (983MB/s), 937MiB/s-937MiB/s (983MB/s-983MB/s), io=54.9GiB (59.0GB), run=60004-60004msec
# 랜덤 읽기
fio --name=rndread \
--filename=/$PWD/testfile \
--size=10G \
--rw=randread \
--bs=4k \
--iodepth=256 \
--numjobs=8 \
--direct=1 \
--ioengine=io_uring \
--runtime=60 \
--time_based \
--group_reporting
Run status group 0 (all jobs):
READ: bw=491MiB/s (515MB/s), 491MiB/s-491MiB/s (515MB/s-515MB/s), io=28.8GiB (30.9GB), run=60003-60003msec
# 랜덤 쓰기
fio --name=rndwrite \
--filename=/$PWD/testfile \
--size=10G \
--rw=randwrite \
--bs=4k \
--iodepth=64 \
--numjobs=4 \
--direct=1 \
--runtime=60 \
--time_based \
--group_reporting
Run status group 0 (all jobs):
WRITE: bw=72.0MiB/s (75.5MB/s), 72.0MiB/s-72.0MiB/s (75.5MB/s-75.5MB/s), io=4318MiB (4528MB), run=60001-60001msec