橋谷と申します。

ちょっと気になったので、いくつかテストしてみました。
/dev/hdbはマウントなどしていない「つながっているだけ」のHDDです。
ちょっと見にくいですが...

# uname -a
Linux vdebian 2.6.18-6-686 #1 SMP Thu Nov 5 16:28:13 UTC 2009 i686 GNU/Linux
# vmstat -d | egrep '^(disk|    |hdb)'
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
hdb       43     17     473       4      0      0       0       0      0      0
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
# dd if=/dev/hdb ibs=512 count=1 of=/dev/null
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000149291 seconds, 3.4 MB/s
# vmstat -d | egrep '^(disk|    |hdb)'
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
hdb       44     20     505       4      0      0       0       0      0      0
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec

sectorsを見ると分かるように、1セクタ指定のddでも実際には32セクタ読まれていま
すね、やはり先読みが働いているようです。これに対して

# dd if=/dev/hdb ibs=512 iflag=direct count=1 of=/dev/null
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000153211 seconds, 3.3 MB/s
# vmstat -d | egrep '^(disk|    |hdb)'
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
hdb       45     20     506       4      0      0       0       0      0      0
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec

directフラグつきだと「正しく」1セクタ読まれているようです。
多分この場合はFreeBSDと大差ない速度の転送になるのではないかと思います。

# VirtualBoxはこのようなテストを手軽にできてよいですね。

メールによる返信