オンライン記事によると、次のようにマウントするとnobarrier
ディスクの速度が速くなります。
imgに小さなデータの塊を書き込みます(使用
barrier
)。遅い# dd if=/dev/zero of=xfs.img bs=1024 count=20000 # mkfs.xfs xfs.img # mkdir -p xfs # mount -o loop xfs.img xfs # dd if=/dev/zero of=output bs=32K count=1 conv=fsync 32768 bytes (33 kB) copied,0.01037167 s, 2.4 MB/s
-o nobarrier
img()に小さなデータの塊を書き込みます。早く# dd if=/dev/zero of=xfs.img bs=1024 count=20000 # mkfs.xfs xfs.img # mkdir -p xfs # mount -o loop,nobarrier xfs.img xfs # cd xfs ; dd if=/dev/zero of=output bs=32K count=1 conv=fsync 32768 bytes (33 kB) copied, 0.000608567 s, 53.8 MB/s
今フラグを/
追加するために再インストールしたいと思います。nobarrier
だから編集しました/etc/fstab
:
/dev/sda2 / xfs defaults,nobarrier 0 0
次にmount -o remount /
。
しかし、結果は良くありません:
# pwd
/root
# dd if=/dev/zero of=output bs=32K count=1 conv=fsync
32768 bytes (33 kB) copied, 0.00811443 s, 4.0 MB/s
nobarrier
dd-imgでは機能しますが、既存のパーティションでは機能しない理由を理解できません。誰でも教えてもらえますか?
答え1
ループバックファイルシステムを使用する場合は、ループバックが生成されたファイルシステムを考慮する必要があります。特に、ループバックファイルシステムでfsyncが呼び出されたにもかかわらず、カーネルはループバックファイルシステムの書き込みページをファイルシステムを含むディスクにすぐにフラッシュしないことがあります。これらの書き込みはsync
ループバックで発生する可能性がありますが、ファイルシステムを含むメモリのダーティページとして発生する可能性があります。
これで、nobarrier
このオプションがループバックドライバや埋め込みファイルシステムとどのようにやり取りするのかわかりません。だから実験してみました。含まれるファイルシステムをマウントするための変数を追加しましたsync
。結果は次のとおりです。
(すべての出力はdd if=/dev/zero of=xfs/output bs=32K count=10000 conv=fsync
)
async
fs 、ループバックを含むbarrier
32768000 bytes (33 MB) copied, 0.401873 s, 81.5 MB/s
async
fs 、ループバックを含むnobarrier
32768000 bytes (33 MB) copied, 0.0414423 s, 791 MB/s
sync
fs 、ループバックを含むbarrier
32768000 bytes (33 MB) copied, 71.5749 s, 458 kB/s
sync
fs 、ループバックを含むnobarrier
32768000 bytes (33 MB) copied, 70.6415 s, 464 kB/s
fsを含めると、barrier
総速度が大幅に変化します。しかし、インクルードファイルシステムがページキャッシングの利点を享受し、ページキャッシングのメリットを得ることができない場合、速度向上はほとんど失われます。nobarrier
async
sync
結論は、ループバックファイルシステムをテストしbarrier
て使用することは役に立たないということです。nobarrier
ファイルシステムとカーネルキャッシュに関連する対話がブロックされます。ループバックを使用してパフォーマンスをテストするときに誤った結果をもたらす唯一の要因は、カーネルキャッシュではないようです。
答え2
Linuxでは、これらの前提に注意してください。 Linuxは、実際の速度を最適化するのではなく、ファイルシステムが高速であるという印象を与えるように最適化されています。
高速という印象を与える理由は、書き込みプログラムの完了時にファイルデータが(多くの場合)ディスクにないためです。つまり、あなたは言うことができません測定対象ddが完了した後、ファイルシステムの状態がわからないのでテストしてください。
比較可能な結果を得るには、指定された問題の影響を受けないパフォーマンステストを設定する必要があるため、コンピュータのローカルRAMサイズの少なくとも2倍以上のファイルを作成する必要があります。