パススルーデバイスマッパー、つまり何もしないデバイスマッパーのデフォルトスループットオーバーヘッドを設定しようとしています。ベンチマーク手順に概ね従います。Cloudflareから、おおよそ測定してみましたスループットを30%削減Ubuntu 20.04 LTSおよび22.04 LTSを使用してAzure VM、GCP VM、およびネイティブメタルシステムで実行されているRAMディスクの直接I / Oの代わりに、RAMディスクでパススルーデバイスマッパーを使用するには、fioを使用します。
これが期待されるか。
RAMディスクを介してデバイス全体で約1000 + MB / sを取得し、600 + MB / sのパススルーを取得します。
私の結果を複製したい人のために、私の設定は次のとおりです。
- Ubuntu 20.04または22.04 VMを作成するか、そのマシンにアクセスしてください。カーネルモジュールをロードできるように、セキュアブートをオフにします。
- 4GBのRAMディスクを作成します。
sudo modprobe brd rd_nr=1 rd_size=4194304
- Fioをインストールします。
sudo apt install -y fio
- RAMディスクでfioを実行します。
sudo fio --filename=/dev/ram0 --readwrite=readwrite --bs=4k --direct=1 --loops=20 --name=plain
- 出力の下部に読み取り/書き込みスループットを記録します
aggrb=?MB/s
。これがベースラインです。
パススルーデバイスマッパーの場合は、「遅延」デバイスマッパーを使用してください。これは次のために発生します。ユンヤオ:
- パススルーデバイスマッパーを設定します。
echo '0 8388608 delay /dev/ram0 0 0' | sudo dmsetup create plain
- fioを実行してください:
sudo fio --filename=/dev/mapper/plain --readwrite=readwrite --bs=4k --direct=1 --loops=20 --name=plain
- スループットも同様に記録されます。
あるいは、レイテンシがゼロの「待機時間」デバイスマッパーのパフォーマンスの低下が疑われる場合は、パススルーデバイスの実装を使用できます。ここ。これら2つのファイルをダウンロードしてくださいここ、カーネルモジュールをコンパイルしてロードします。
- 走る
make
- モジュールのロード:
sudo insmod passthrough.ko
- デバイスマッパーをロードします。
echo "0 `sudo blockdev --getsz /dev/ram0` passthrough /dev/ram0" | sudo dmsetup create passthrough
- fioを実行してください:
sudo fio --filename=/dev/mapper/passthrough --readwrite=readwrite --bs=4k --direct=1 --loops=20 --name=passthrough
- スループットも同様に記録されます。