여러 스레드가 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디스플레이를 변경하는 방법을 알아보세요 .

관련 정보