Target iSCSI
Ubuntu 14.04 (Trusty Tahr) dengan 16 GB RAM dan 16 core CPU sebagai target iSCSI yang didukung LVM menggunakan tiga disk Samsung SSD, masing-masing mampu melakukan 65k IOPS menggunakan pengontrol LSI 6 Gbit / s dengan on board cache.
Benchmark pada disk SSD di target:
fio --filename=/dev/sdd --direct=1 --sync=1 --rw=write --bs=4k --numjobs=10 --iodepth=1 --runtime=60 --time_based --group_reporting --name=ssd-max
iops=65514
Di mana sdd
dikonfigurasi dalam perangkat keras RAID 0 menggunakan tiga Samsung 850 EVO SSD.
Pemrakarsa
Saya mengekspor LUN 500G pada klien Ubuntu 14.04 dengan 32 GB RAM dan 8 core CPU.
Patokan pada LUN yang diekspor
fio --filename=/dev/sdg --direct=1 --sync=1 --rw=write --bs=4k --numjobs=10 --iodepth=1 --runtime=60 --time_based --group_reporting --name=client-max
iops=2400
Ada penurunan kinerja yang signifikan ketika melakukan DAS dan melalui jaringan, saya mengharapkan setidaknya 10k IOPS.
Komunikasi antara target dan inisiator kurang dari 1 ms dan iperf menunjukkan throughput jaringan 9,2 Gbit / s.
Saya mengerti bahwa akan ada dampak kinerja untuk menulis 4k karena setiap data harus melalui tumpukan jaringan baik inisiator dan target sebelum ditulis ke disk, tetapi ini adalah penurunan yang tidak dapat diterima dari 65k ke 2k.
Di mana masalahnya? Saya memiliki NIC Ethernet 10 Gbit / s antara target dan inisiator. Ada ide?
sumber
Jawaban:
Jawaban singkat: Ini adalah hasil latensi jaringan dan beban kerja serial (seperti yang Anda tentukan dengan menggunakan
direct=1
,sync=1
daniodepth=1
).Jawaban panjang: menggunakan
direct=1
,sync=1
daniodepth=1
Anda membuat beban kerja serial, karena penulisan baru tidak dapat antri sebelum penulisan sebelumnya dilakukan dan dikonfirmasi. Dengan kata lain, tingkat pengiriman penulisan sangat tergantung pada latensi jaringan. Sederhanaping
antara dua mesin bisa sangat lebih dari 0,2 ms, lebih ketika menggunakan protokol tingkat yang lebih tinggi sebagai TCP (dan iSCSI di atasnya). Menganggap latensi total jaringan sekitar 0,33 ms, Anda memiliki nilai IOPS maksimum sekitar 3000. Ini tanpa memperhitungkan sumber latensi lain (es: disk itu sendiri), sehingga sesuai dengan apa yang Anda rekam.Coba ini: jalankan benchmark pertama tanpa
--direct=1 --sync=1
, dan yang lain dengan opsi ini di tempat tetapi meningkatkaniodepth
ke 32 permintaan. Kemudian laporkan hasilnya di sini.sumber