複数のスレッドがmodprobeによって生成された同じRAMdiskにアクセスできません。

複数のスレッドがmodprobeによって生成された同じRAMdiskにアクセスできません。

modprove brd rd_size=62914560CentOS 7.5で60GBのRAMdiskを作成しました。結果を確認すると、fdisk -l /dev/ram*16個の60GB RAMブロックデバイス(/dev/ram0、/dev/ram1、...、/dev/ram15)が表示されます。

パフォーマンスを確認するために、RAMブロックデバイスで16のランダムアクセスタスク(スレッド)を実行したいと思います。私はFIOツールを使用してこのようなワークロードを実行します。ただし、次のエラーが発生します。

/ dev / ram1のキャッシュ無効化に失敗しました:デバイスまたはリソースが使用中です。

なぜこれが起こるのですか?単一のRAMブロックデバイスにアクセスできるジョブ(スレッド)の数に制限はありますか?チェックブロックデバイスを使用すると、lsblkラムブロックデバイスは表示されません。なぜですか?

ありがとう

答え1

lsblkマニュアルページから:

このコマンドは、デフォルトですべてのブロックデバイス(RAMディスクを除く)をツリー形式で印刷します。

これはバグではありません。これは機能です! :-)

RAM デバイスを含めるには、次の手順を実行します。lsblk -I 1

lsblk -I 1
NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
ram0    1:0    0  9,8M  0 disk 
ram1    1:1    0  9,8M  0 disk 
ram2    1:2    0  9,8M  0 disk
...

答え2

一度に複数の質問をすると、すべての回答を得る可能性が減ります。:-(

ただし、次のエラーが発生します。

/ dev / ram1のキャッシュ無効化に失敗しました:デバイスまたはリソースが使用中です。

なぜこれが起こるのですか?単一のRAMブロックデバイスにアクセスできるジョブ(スレッド)の数に制限はありますか?

brdデバイスで使用されているページを解放する機能はすでにあります。ff26956875c2f05e12ecec9938411a2c7dfc767d: brd: remove support for BLKFLSBUF。これは、下位RAMパーティションにコマンドを実行すると、親BRDデバイスが破損する可能性があるために行われますBLKFLSBUF(ページを共有できる他の兄弟パーティションがある可能性があると仮定します)。

単一のRAMブロックデバイスにアクセスできるジョブ(スレッド)の数に制限はありますか?

いいえ、上記をご覧ください。

lsblk を使用してブロックデバイスを確認すると、RAM ブロックデバイスは表示されません。なぜですか?

RAMブロックデバイスは基本的に設計上表示されていないのでlsblk... マニュアルページの先頭からlsblk(8):

このコマンドは、デフォルトですべてのブロックデバイス(RAMディスクを除く)をツリー形式で印刷します。

よりlsblk マニュアルページのオプションlsblkディスプレイを変更する方法を学びます。

関連情報