Performa iSCSI yang buruk dengan disk SSD dan jaringan 10 Gbe

10

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 sdddikonfigurasi 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?

Kevin Parker
sumber
2
Tidak ada informasi yang cukup dekat dan bola kristal kami terlalu mahal untuk diboroskan pada pelanggan yang tidak membayar. Jika Anda ingin bantuan, maka berikan informasi bermakna yang dapat digunakan untuk membantu Anda menyelesaikan masalah.
TomTom
Saya telah mengedit pertanyaan saya, jika Anda punya waktu, Anda dapat membantu saya dengan saran Anda.
Kevin Parker
Karena NIC dan CPU cenderung menjadi penghambat dalam pengaturan perangkat lunak iSCSI apa pun, Anda mungkin ingin menyebutkan apa itu.
rakslice

Jawaban:

20

Jawaban singkat: Ini adalah hasil latensi jaringan dan beban kerja serial (seperti yang Anda tentukan dengan menggunakan direct=1, sync=1dan iodepth=1).

Jawaban panjang: menggunakan direct=1, sync=1dan iodepth=1Anda 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. Sederhana pingantara 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 meningkatkan iodepthke 32 permintaan. Kemudian laporkan hasilnya di sini.

shodanshok
sumber