Mengapa open-iscsi dua kali lebih lambat menulis daripada Samba melalui 10G Ethernet?

9

Pada server file lokal saya, saya memiliki raid-6 pada 7x HDD drive.

dd if=/dev/zero of=tempfile bs=1M count=2048 conv=fdatasync

Tes kecepatan lokal memberi saya 349 MB / s kecepatan tulis.

Menulis jarak jauh ke Samba dari SSD (> kecepatan baca 2Gb / dtk) memberi saya 259 MB / dt. Tapi remote menulis ke drive iSCSI (pada Win10 iSCSI inisiator) memberi saya hanya 151 Mb / s menulis.

raid6 config - 128K ukuran chunk, stripe_cache_size = 8191. Bitmap niat tulis ada di SSD (Samsung 860 PRO, 4096K bitmap chunk).

Array dipasang dengan opsi: rw,noatime,nobarrier,commit=999,stripe=128,data=writeback

setup open-iscsi: target didasarkan pada file 4TB.

Adakah petunjuk mengapa iSCSI lebih lambat dari Samba saat menulis? Adakah petunjuk tentang cara meningkatkan kecepatan menulis iSCSI?

Saya menganggap itu ada hubungannya dengan keinginan open-iscsi untuk menyiram menulis ke disk setelah setiap operasi, yang meningkatkan amplifikasi tulis pada raid6 karena penulisan ulang paritas yang berlebihan. Tapi saya tidak yakin bagaimana cara memperbaikinya. Mempercepatnya lebih penting daripada keamanan data yang ditulis saat ini jika terjadi pemadaman listrik.

Sebagai catatan tambahan, target ietd iSCSI memiliki kemampuan untuk mengaktifkan mode tulis kembali (menggunakan IOMode=wb) dan kecepatan menulis yang berkelanjutan jauh lebih cepat. Sayangnya tampaknya saat ini tidak terawat.

BarsMonster
sumber
2
Seperti apa jaringannya? 10BAIK? Apa versi OS server, versi kernel? Apa target dan versi iscsi? ietd, scst atau lio? Open-iscsi hanya menyediakan inisiator, bukan target ... Apa yang Anda gunakan untuk mengukur kecepatan tulis? Apa filesystem yang digunakan pada target?
wazoox
Di Windows 10, QoS dihapus dari NIC?
yagmoth555
2
Memposting konfigurasi target iSCSI Anda dan setiap tunabel jaringan yang disesuaikan juga akan lebih bijaksana dalam hal ini. Anda juga dapat mempertimbangkan pengujian dengan inisiator iscsi terbuka pada klien linux dengan kernel modern untuk memberikan perbandingan yang jelas antara inisiator menggunakan target yang sama, karena pengujian yang ada mungkin terlalu banyak dipersempit oleh inisiator Windows. Lebih banyak data == lebih baik.
Spooler
1
Tetapi sejauh menyangkut pertanyaan aktual : iSCSI dan Samba sangat berbeda, dan Anda menggunakan lapisan caching VFS saat menggunakan Samba yang tidak ada dalam perangkat blok kosong. Saya memahami bahwa Anda terkejut dengan perbedaan dalam kinerja, tetapi apakah Anda lebih peduli dengan perbandingan ini, atau membuat iSCSI memenuhi jaringan Anda? Jika iSCSI menjadi perhatian utama Anda dan kinerja Samba adalah detail kecil untuk konteks, Anda dapat mengedit pertanyaan untuk membuatnya lebih jelas (dan mungkin mendapatkan jawaban yang lebih baik).
Spooler
Anda menggunakan Windows 10 untuk pengujian, tetapi saya tidak melihat detail dari mesin yang digunakan di mana pun. (dan mengapa menggunakan OS klien Windows untuk pengujian seperti itu?)
yagmoth555

Jawaban:

6

Pertama-tama, RAID-6 adalah masalah karena perhitungan paritas ganda. Kedua, Anda dapat menghubungkan target iSCSI dua kali dalam MS iSCSI Initiator, mengaktifkan RR atau Least Queue Depth (sayangnya, Win10 tidak mendukung multipathing, jadi Anda dapat mengujinya dengan Windows Server).

Bahkan, akses level blok harus lebih cepat daripada akses level file. Apa jenis alat pembandingan yang Anda gunakan dari situs Windows? Saya akan merekomendasikan menggunakan diskspd atau FIO. Selain itu, Anda dapat menggunakan sesuatu seperti Starwind sebagai target iSCSI yang jauh lebih cepat.

https://www.starwindsoftware.com/starwind-virtual-san#Hyper-V

Stuka
sumber
2
Raid 6 ada di perangkat keras - bukan perangkat lunak. Ini bukan lagi masalah kinerja sejak sekitar 20 tahun.
Nils
RAID-6 masalahnya? Perhitungan paritas terjadi terlepas dari protokol.
Daniel
2
RAID6 lebih lambat bukan karena perhitungan paritas, tetapi karena apa yang disebut "lubang tulis" sebagai akibat dari sifat RAID paritas baca-modifikasi-tulis.
BaronSamedi1958
3
"Raid 6 ada di perangkat keras - bukan perangkat lunak. Ini bukan lagi masalah kinerja sejak sekitar 20 tahun. - Nils 21 Maret pukul 10:05" -> Ini tidak benar :( Baca ini -> theithollow.com/
2012/03/21
1

iSCSI harus digunakan pada level blok, deskripsi pengaturan Anda terdengar seperti Anda menggunakan sistem file, menempatkan file di atasnya dan kemudian menjalankan file ini sebagai lapisan blok iSCSI.

Ini jauh dari ideal, dan definisi bukan pengaturan untuk membandingkan kecepatan. Coba gunakan lvm di atas raid6 untuk membagi ruang dan tetap di lapisan blok untuk iSCSI, atau gunakan raid6 langsung sebagai perangkat iSCSI.

Dalam pengaturan Anda saat ini, data ditransfer melalui jaringan, mengenai file dalam sistem file, yang (kemungkinan besar) tidak dioptimalkan untuk jenis beban kerja ini, dan juga dibagikan dengan proses lain. Dimungkinkan untuk melakukan pengaturan seperti itu dengan iSCSI, tetapi harus dianggap sebagai solusi fallback yang tidak dioptimalkan.

hargut
sumber
1

Harap diperhatikan ddadalah tolok ukur yang sangat sederhana dan SANGAT rentan terhadap distorsi. Misalnya, Anda ddmenulis angka nol - jika sesuatu memiliki kasus khusus untuk data yang penuh angka nol (misalnya karena dapat melakukan kompresi) Anda akan melihat kinerja yang fantastis tetapi beralih ke penulisan "data nyata" yang bukan nol dan tiba-tiba kinerja itu dapat menghilang. ..

Untuk menjawab pertanyaan Anda (seperti dalam semua pembandingan), Anda harus benar-benar mengisolasi bagian-bagian tersebut untuk mengidentifikasi bagian yang memperkenalkan masalah tersebut. Sebagai contoh, apakah menulis ke sistem file Windows secara langsung (dan tidak lebih dari iSCSI) juga sangat cepat? Jika Anda mengambil konfigurasi perangkat keras yang sama dan menjalankan Linux, bukan Windows, apakah itu sama cepat atau lambat? Apa yang terjadi jika Anda beralih menggunakan alat benchmark seperti fio ?

Sayangnya ada terlalu banyak kemungkinan untuk dapat menjawab pertanyaan seperti ini dengan baik ...

Segera
sumber