통과 장치 매퍼, 즉 아무 작업도 수행하지 않는 장치 매퍼에 대한 기본 처리량 오버헤드를 설정하려고 합니다. 벤치마킹 절차를 대략적으로 따릅니다.Cloudflare에서, 대충 측정해 봤습니다처리량 30% 감소Ubuntu 20.04 LTS 및 22.04 LTS를 사용하여 Azure VM, GCP VM 및 원시 금속 시스템에서 실행되는 램디스크에 대한 직접 I/O 대신 램디스크에서 통과 장치 매퍼를 사용하려면 fio를 사용하세요.
이것이 예상되는가?
램디스크를 통해 장치 전체에서 약 1000+MB/s를 얻고 600+MB/s 패스스루를 얻습니다.
내 결과를 복제하려는 사람들을 위해 내 설정은 다음과 같습니다.
- Ubuntu 20.04 또는 22.04 VM을 생성하거나 해당 머신에 액세스하세요. 커널 모듈을 로드할 수 있도록 보안 부팅을 끄십시오.
- 4GB 램디스크를 생성합니다:
sudo modprobe brd rd_nr=1 rd_size=4194304
- Fio를 설치하십시오.
sudo apt install -y fio
- 램디스크에서 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
- 처리량도 비슷하게 기록됩니다.
또는 대기 시간이 0인 "대기 시간" 장치 매퍼의 성능 저하가 의심되는 경우 통과 장치 구현을 사용할 수 있습니다.여기. 이 두 파일을 다운로드하세요여기, 커널 모듈을 컴파일하고 로드합니다.
- 달리기
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
- 처리량도 비슷하게 기록됩니다.