続・sandisk SDCZ48-128Gベンチマーク

前回のあらすじ

環境準備

  • パーテションを再作成
[comicsong@comicsong ~]$ umount /mnt/USB/
umount: /mnt/USB: umount failed: 許可されていない操作です
[comicsong@comicsong ~]$ sudo umount /mnt/USB/
[comicsong@comicsong ~]$ sudo parted /dev/sdc
GNU Parted 3.1
/dev/sdc を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) p
モデル: SanDisk Ultra (scsi)
ディスク /dev/sdc: 124GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了   サイズ  ファイルシステム  名前   フラグ
 1    1049kB  124GB  124GB   ext4              OSD01

(parted) rm 1
(parted)
(parted) p
モデル: SanDisk Ultra (scsi)
ディスク /dev/sdc: 124GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始  終了  サイズ  ファイルシステム  名前  フラグ

(parted) mkpart OSD01 0% 100%
(parted) p
モデル: SanDisk Ultra (scsi)
ディスク /dev/sdc: 124GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了   サイズ  ファイルシステム  名前   フラグ
 1    1049kB  124GB  124GB   ext4              OSD01

(parted) q
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
[comicsong@comicsong ~]$ sudo mkfs.ext4 /dev/sdc1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
7585792 inodes, 30326272 blocks
1516313 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2178940928
926 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
  • マウントしてテスト環境づくり
[comicsong@comicsong ~]$ mount -t ext4 -o noatime /dev/sdc1 /mnt/USB
mount: only root can use "--options" option
[comicsong@comicsong ~]$ sudo mount -t ext4 -o noatime /dev/sdc1 /mnt/USB
[comicsong@comicsong ~]$ cd /mnt/USB/
[comicsong@comicsong USB]$ sudo mkdir fio
[comicsong@comicsong USB]$ cd fio/
[comicsong@comicsong fio]$ sudo vim fio.sh
[comicsong@comicsong fio]$ sudo chmod +x fio.sh
[comicsong@comicsong fio]$ sudo ./fio.sh

fio.sh

  • 基本的には冒頭に貼った昨日のテストと同一
    • ブレが大きかったため実行時間を60秒から180秒に延長している
#!/bin/bash

fio --size=30m --numjobs=4 --iodepth=8 --time_based --runtime=180 --overwrite=1 --ioengine=libaio --bs=4k --group_reporting --direct=1 --name=test --rw=read | grep iops=
fio --size=30m --numjobs=4 --iodepth=8 --time_based --runtime=180 --overwrite=1 --ioengine=libaio --bs=4k --group_reporting --direct=1 --name=test --rw=write | grep iops=
fio --size=30m --numjobs=4 --iodepth=8 --time_based --runtime=180 --overwrite=1 --ioengine=libaio --bs=4k --group_reporting --direct=1 --name=test --rw=randread | grep iops=
fio --size=30m --numjobs=4 --iodepth=8 --time_based --runtime=180 --overwrite=1 --ioengine=libaio --bs=4k --group_reporting --direct=1 --name=test --rw=randwrite | grep iops=

結果

  • 上からSeqRead,SeqWrite,RandRead,RandWriteの順
  read : io=4435.7MB, bw=25233KB/s, iops=6308, runt=180004msec
  write: io=750344KB, bw=4166.4KB/s, iops=1041, runt=180097msec
  read : io=538688KB, bw=2991.2KB/s, iops=747, runt=180043msec
  write: io=231164KB, bw=1212.4KB/s, iops=303, runt=190682msec
  • 比較用に昨日の
  read : io=882528KB, bw=14707KB/s, iops=3676, runt= 60009msec
  write: io=627904KB, bw=10463KB/s, iops=2615, runt= 60010msec
  read : io=158516KB, bw=2639.8KB/s, iops=659, runt= 60050msec
  write: io=109504KB, bw=1823.2KB/s, iops=455, runt= 60064msec
  • 繰り返し試したところSeqWriteのiopsは3000程度まで出ることがあったが全体の最高値としては上記のSeqReadの6308だった
  • Raspiのメモリ量を考慮してベンチマークファイルのサイズ小さすぎたのが悪かったようで
    • その後ファイルサイズを500MB,1job/32QD で試したところ公称値に近い値が出た
  read : io=8215.3MB, bw=93470KB/s, iops=23367, runt= 90001msec
  • しかしランダム系テスト項目については大きく変わらず

まとめ

  • Read系はスコア向上したがWrite系は下落。調子いいSeqReadでも25MB/sと公称値の1/4
  • 相変わらずRand系が弱く安定しない
  • Win系での利用が前提なのかしらんし、公式ページの下に注釈あるけれど up to 100MB/s は盛りすぎでは?
    • SeqReadスペシャルなIO傾向なので一度入れたらあとは読むだけな写真などには適していそう