hello

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

Read more