Centos

多個執行緒無法訪問 modprobe 創建的同一個 RAMdisk

  • November 6, 2020

modprove brd rd_size=62914560在 CentOS 7.5 上創建了 60GB 的 RAMdisk。檢查結果,fdisk -l /dev/ram*顯示 16 個 60GB 大小的 ram 塊設備(/dev/ram0、/dev/ram1、…、/dev/ram15)。

我想在一個 ram 塊設備上執行 16 個隨機訪問的作業(執行緒)來檢查性能。我使用 FIO 工具執行這樣的工作負載。但是,我收到以下錯誤:

/dev/ram1 的記憶體失效失敗:設備或資源繁忙

為什麼會發生這種情況?訪問單個 ram 塊設備的作業(執行緒)數量是否有限制?當我用 來檢查塊設備時lsblk,沒有顯示 ram 塊設備。是什麼原因?

謝謝

您一口氣問了多個問題,這降低了您全部回答的機會:-(

但是,我收到以下錯誤:

> > /dev/ram1 的記憶體失效失敗:設備或資源繁忙 > > >

為什麼會發生這種情況?訪問單個 ram 塊設備的作業(執行緒)數量是否有限制?

釋放 brd 設備使用的頁面的功能在ff26956875c2f05e12ecec9938411a2c7dfc767d: brd: remove support for BLKFLSBUF. 這樣做是因為發給BLKFLSBUF子 RAM 分區會損壞父 BRD 設備(我猜可能是其他可能共享該頁面的同級分區)。

訪問單個 ram 塊設備的作業(執行緒)數量是否有限制?

不,見上文。

當我用 lsblk 檢查塊設備時,沒有顯示 ram 塊設備。是什麼原因?

因為lsblk預設情況下不顯示 RAM 塊設備…從手冊頁的開頭lsblk(8)

該命令預設以樹狀格式列印所有塊設備(RAM 磁碟除外)。

有關如何更改顯示內容的資訊,請參見lsblk 手冊頁中的選項lsblk

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
...

引用自:https://unix.stackexchange.com/questions/617432