호스트 시스템:
Ubuntu Server x64 12.04
mdadm raid 1 (/dev/sda /dev/sdb)
no lvm
dd bs=1M count=256 if=/dev/zero of=filename conv=fdatasync
avarage ~ 40 MB/s
NCQ on disks is disabled
WriteCache is disables
게스트 시스템:
Ubuntu server i386 12.04
with lvm2 /10Gb /200Gb /200Gb disks all on lv-root (LV)
--- Physical volume ---
PV Name /dev/vda5
VG Name root-vg
PV Size 9.76 GiB / not usable 2.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 2498
Free PE 0
Allocated PE 2498
--- Physical volume ---
PV Name /dev/vdb
VG Name root-vg
PV Size 195.31 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 49999
Free PE 0
Allocated PE 49999
--- Physical volume ---
PV Name /dev/vdc
VG Name root-vg
PV Size 195.31 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 49999
Free PE 0
Allocated PE 49999
dd bs=1M count=256 if=/dev/zero of=filename conv=fdatasync
avarage ~ 30 MB/s
all disks in guest are RAWformat /VirtioBUS / No cache / IOmode=native
얼마 후 쓰기 속도는 1MB/s로 떨어지지만 호스트 시스템은 로드되지 않았으며 dd 테스트에서는 동일한 30-40MB/s, CPU 사용량 10%를 보여줍니다. 게스트 재부팅은 잠시 동안 도움이 됩니다. 오류/결함/mdadm 재구축 또는 재동기화가 없습니다.
어디에 문제가 있는지, 어디를 파헤쳐야 할지 전혀 모릅니다.
게스트에게 도움이 되는 것 같습니다: sync && echo 3 > /proc/sys/vm/drop_caches
비슷한 문제메모리가 64GB인 시스템에서 Linux 버퍼는 dd를 사용하여 dev null로 복사하는 동안 전체 실행되고 io는 수동 drop_caches까지 중지됩니다.
답변1
내 생각에 30-40MB/s의 초기 성능은 Linux 커널의 캐싱(및 하드웨어 수준에서 진행될 수 있는 다른 캐싱) 때문이라고 생각합니다. 캐싱이 "소모"되면 실제 디스크 액세스가 시작되고 성능이 저하됩니다.
게다가 위해서는dd더 나은 성능을 설정하려면BS=상당히 큰 크기에 대한 주장입니다. 개인적으로 나는 사용 가능한 RAM의 약 1/3-1/2로 설정하는 것을 좋아합니다. 1M 설정은 최적이 아니며 성능 수치가 낮은 주요 이유입니다. 그러나 심지어 최적의BS=설정하면 위에서 설명한 대로 어느 시점에서 성능이 저하되는 것을 볼 수 있습니다.