통과 장치 매퍼의 예상되는 오버헤드는 얼마입니까?

통과 장치 매퍼의 예상되는 오버헤드는 얼마입니까?

통과 장치 매퍼, 즉 아무 작업도 수행하지 않는 장치 매퍼에 대한 기본 처리량 오버헤드를 설정하려고 합니다. 벤치마킹 절차를 대략적으로 따릅니다.Cloudflare에서, 대충 측정해 봤습니다처리량 30% 감소Ubuntu 20.04 LTS 및 22.04 LTS를 사용하여 Azure VM, GCP VM 및 원시 금속 시스템에서 실행되는 램디스크에 대한 직접 I/O 대신 램디스크에서 통과 장치 매퍼를 사용하려면 fio를 사용하세요.

이것이 예상되는가?

램디스크를 통해 장치 전체에서 약 1000+MB/s를 얻고 600+MB/s 패스스루를 얻습니다.

내 결과를 복제하려는 사람들을 위해 내 설정은 다음과 같습니다.

  1. Ubuntu 20.04 또는 22.04 VM을 생성하거나 해당 머신에 액세스하세요. 커널 모듈을 로드할 수 있도록 보안 부팅을 끄십시오.
  2. 4GB 램디스크를 생성합니다:sudo modprobe brd rd_nr=1 rd_size=4194304
  3. Fio를 설치하십시오.sudo apt install -y fio
  4. 램디스크에서 fio를 실행합니다:sudo fio --filename=/dev/ram0 --readwrite=readwrite --bs=4k --direct=1 --loops=20 --name=plain
  5. 출력 하단에 읽기/쓰기 처리량을 기록합니다 aggrb=?MB/s. 이것이 기준선입니다.

이제 통과 장치 매퍼의 경우 "지연된" 장치 매퍼를 사용하십시오. 이는 다음으로 인해 발생합니다.윤야오:

  1. 통과 장치 매퍼를 설정합니다.echo '0 8388608 delay /dev/ram0 0 0' | sudo dmsetup create plain
  2. fio를 실행하세요:sudo fio --filename=/dev/mapper/plain --readwrite=readwrite --bs=4k --direct=1 --loops=20 --name=plain
  3. 처리량도 비슷하게 기록됩니다.

또는 대기 시간이 0인 "대기 시간" 장치 매퍼의 성능 저하가 의심되는 경우 통과 장치 구현을 사용할 수 있습니다.여기. 이 두 파일을 다운로드하세요여기, 커널 모듈을 컴파일하고 로드합니다.

  1. 달리기make
  2. 모듈 로드:sudo insmod passthrough.ko
  3. 장치 매퍼를 로드합니다.echo "0 `sudo blockdev --getsz /dev/ram0` passthrough /dev/ram0" | sudo dmsetup create passthrough
  4. fio를 실행하세요:sudo fio --filename=/dev/mapper/passthrough --readwrite=readwrite --bs=4k --direct=1 --loops=20 --name=passthrough
  5. 처리량도 비슷하게 기록됩니다.

관련 정보