Menguji array RAID perangkat lunak untuk perangkat NVMe menggunakan metodologi SNIA



Beberapa bulan yang lalu, ketika mengerjakan proyek berikutnya, orang-orang dari laboratorium penelitian kami mempelajari disk NVMe dan solusi perangkat lunak untuk menemukan opsi terbaik untuk merakit array perangkat lunak.

Hasil tes kemudian secara mengejutkan mengecewakan - potensi kecepatan besar dari disk NVMe sama sekali tidak berkorelasi dengan kinerja yang ditunjukkan dari produk perangkat lunak yang ada.

Pengembang kami tidak menyukainya. Dan mereka memutuskan untuk menulis produk mereka ... Sebuah produk yang kemudian dipasarkan dengan penuh kegembiraan dengan nama RAIDIX ERA.

Saat ini, lebih dari selusin perusahaan memproduksi server yang disesuaikan untuk menggunakan drive NVMe. Pasar untuk produk yang mendukung dan mengembangkan teknologi ini memiliki potensi yang sangat besar. Dalam laporan analitik G2M, angka yang cukup meyakinkan disajikan meyakinkan bahwa protokol transfer data ini akan mendominasi dalam waktu dekat.


Bagan dari Laporan G2M

Saat ini, salah satu pemimpin dalam produksi komponen NVMe adalah Intel. Pada peralatan mereka kami melakukan tes untuk menilai kemampuan produk perangkat lunak yang ada untuk mengelola perangkat keras yang "inovatif".

Bersama dengan mitra kami, Promobit (produsen server dan sistem penyimpanan data di bawah merek dagang BITBLAZE), kami menyelenggarakan pengujian drive NVMe Intel dan perangkat lunak umum untuk mengelola perangkat tersebut. Pengujian dilakukan sesuai dengan metode SNIA.

Pada artikel ini kami akan berbagi angka yang diperoleh selama pengujian sistem perangkat keras Intel NVMe, array perangkat lunak dari MDRAID, Zvol di atas ZFS RAIDZ2 dan, pada kenyataannya, pengembangan baru kami.

Konfigurasi perangkat keras


Untuk dasar platform pengujian, kami mengambil sistem server Intel Server System R2224WFTZS. Ini memiliki 2 soket untuk menginstal prosesor Intel Xeon Scalable dan 12 saluran memori (total 24 DIMM) DDR 4 dengan frekuensi hingga 2666 MHz.

Informasi lebih lanjut tentang platform server dapat ditemukan di situs web pabrikan .

Semua NVMe-drive terhubung melalui 3 backplanes F2U8X25S3PHS .

Secara total, kami mendapatkan 12 NVMe-drive INTEL SSDPD2MD800G4 dengan firmware CVEK6256004E1P0BGN dalam sistem.

Platform server dilengkapi dengan dua prosesor Intel® Xeon® Gold 6130 CPU @ 2.10GHz dengan Hyper-Threading diaktifkan, memungkinkan dua utas diluncurkan dari masing-masing inti. Jadi, pada output kami menerima 64 utas komputasi.

Persiapan ujian


Semua tes dalam artikel ini dilakukan sesuai dengan spesifikasi metodologi SNIA SSS PTSe v 1.1. Termasuk, persiapan awal penyimpanan dilakukan untuk mendapatkan hasil yang stabil dan jujur.

SNIA memungkinkan pengguna untuk mengatur parameter untuk jumlah utas dan kedalaman antrian, jadi kami menetapkan 64/32, memiliki 64 utas komputasi pada 32 inti.

Setiap tes dilakukan dalam 16 putaran untuk membawa sistem ke level indikator yang stabil dan mengeluarkan nilai acak.

Sebelum memulai tes, kami membuat persiapan awal sistem:

  1. Menginstal versi kernel 4.11 pada CentOS 7.4.
  2. Matikan C-STATES dan P-STATES.
  3. Jalankan utilitas tuned-adm dan atur profil kinerja latensi.

Pengujian setiap produk dan barang dilakukan dengan tahapan sebagai berikut:

Persiapan perangkat sesuai dengan spesifikasi SNIA (tergantung dan tidak tergantung pada jenis beban).

  1. Tes IOps dalam blok 4k, 8k, 16k, 32k, 64k, 128k, 1m dengan variasi kombinasi baca / tulis 0/100, 5/95, 35/65, 50/50, 65/35, 95/5, 100/0 .
  2. Tes latensi dengan blok 4k, 8k, 16k dengan variasi kombinasi baca / tulis 0/100, 65/35 dan 100/0. Jumlah utas dan kedalaman antrian adalah 1-1. Hasil dicatat sebagai penundaan rata-rata dan maksimum.
  3. Tes uji coba dengan blok 128k dan 1M, di 64 baris dari 8 tim.

Kami mulai dengan menguji kinerja, latensi, dan keluaran platform perangkat keras. Ini memungkinkan kami untuk mengevaluasi potensi peralatan yang diusulkan dan membandingkan dengan kemampuan solusi perangkat lunak yang diterapkan.

Uji 1. Pengujian Perangkat Keras


Untuk memulainya, kami memutuskan untuk melihat apa yang dapat dilakukan oleh satu drive NVMe Intel DCM D3700.
Dalam spesifikasi, pabrikan menyatakan parameter kinerja berikut:
Baca Acak (Rentang 100%) 450.000 IOPS
Penulisan Acak (Rentang 100%) 88000 IOPS

Uji 1.1 Satu drive NVMe. Tes IOPS


Hasil Kinerja (IOps) dalam bentuk tabel. Baca / Tulis Campuran%.
Ukuran blokR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k84017.891393.8117271.6133059.4175086.8281131.2390969.2
8rb42602.645735.858980.267321.4101357.2171316.8216551.4
16k21618.822834.829703.633821.252552.689731.2108347
32rb10929.411322147871681126577.647185.250670.8
64rb5494.45671.67342.68285.813130.22388427249.2
128rb2748.42805.23617.84295.26506.611997.613631
1 m351.6354.8451.2684.8830.21574.41702.8

Hasil Kinerja (IOps) dalam bentuk grafis. Baca / Tulis Campuran%.



Pada tahap ini, kami mendapat hasil yang tidak cukup mencapai yang pabrik. Kemungkinan besar, NUMA (skema implementasi memori komputer yang digunakan dalam sistem multiprosesor, ketika waktu akses ke memori ditentukan oleh lokasinya relatif terhadap prosesor) memainkan perannya, tetapi untuk saat ini kami tidak akan memperhatikannya.

Uji 1.2 Satu drive NVMe. Tes Keterlambatan


Rata-rata waktu respons (ms) dalam bentuk tabel. Baca / Tulis Campuran%.
Ukuran blokR0% / W100%R65% / W35%R100% / W0%
4k0,027190,0721340,099402
8rb0,0298640,0930920,121582
16k0,0467260,1370160,16405

Rata-rata waktu respons (ms) dalam bentuk grafis. Baca / Tulis Campuran%.



Waktu respons maksimum (ms) dalam bentuk tabel. Baca / Tulis Campuran%.
Ukuran blokR0% / W100%R65% / W35%R100% / W0%
4k6.98564.71471.5098
8rb7.00044.31181.4086
16k7.00684.64451.1064

Waktu respons maksimum (md) dalam bentuk grafis. Baca / Tulis Campuran%.



Uji 1.3 Throughput


Langkah terakhir adalah mengevaluasi throughput. Berikut adalah indikator-indikator berikut:
Rekaman berurutan 1MB - 634 MBps.
Baca sekuensial 1MB - 1707 MBps.
Rekaman berurutan 128Kb - 620 MBps.
Baca berurutan 128Kb - 1704 MBps.

Setelah berurusan dengan satu drive, kami melanjutkan untuk mengevaluasi seluruh platform, yang terdiri dari 12 drive.

Uji 1.4 Sistem dalam 12 drive. Tes IOPS


Di sini, keputusan yang kuat dibuat untuk menghemat waktu dan menunjukkan hasil hanya untuk bekerja dengan blok 4k, yang sejauh ini merupakan skenario paling umum dan indikatif untuk mengevaluasi kinerja.

Hasil Kinerja (IOps) dalam bentuk tabel. Baca / Tulis Campuran%.
Ukuran blokR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k1363078.6156234519441052047612217647634413114202364

Hasil Kinerja (IOps) dalam bentuk grafis. Baca / Tulis Campuran%.



Tes 1.5 Sistem dalam 12 drive. Tes bandwidth


Rekaman berurutan 1MB - 8612 MBps.
Baca sekuensial 1MB - 20481 MBps.
Rekaman berurutan 128Kb - 7500 MBps.
Baca berurutan 128Kb - 20400 MBps.

Kami akan melihat indikator kinerja perangkat keras yang diperoleh lagi di akhir artikel, membandingkannya dengan jumlah perangkat lunak yang diuji di atasnya.

Tes 2: Menguji MDRAID


Ketika kita berbicara tentang susunan perangkat lunak, MDRAID datang ke pikiran pertama. Ingatlah bahwa ini adalah perangkat lunak dasar RAID untuk Linux, yang didistribusikan secara gratis.

Mari kita lihat bagaimana MDRAID menangani sistem 12-disk yang diusulkan dengan level array RAID 0. Kita semua mengerti bahwa membangun RAID 0 pada drive 12 membutuhkan keberanian khusus, tetapi sekarang kita membutuhkan level array ini untuk menunjukkan kemampuan maksimal dari solusi ini.

Tes 2.1 MDRAID. RAID 0. Tes IOPS


Hasil Kinerja (IOps) dalam bentuk tabel. Baca / Tulis Campuran%.
Ukuran blokR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k10103961049306.61312401.41459698.61932776.82692752.82963943.6
8rb513627.8527230.4678140771887.81146340.61894547.82526853.2
16k261087.4263638.8343679.2392655.2613912.81034843.21288299.6
32rb131198.6130947.4170846.6216039.4309028.2527920.6644774.6
64rb65083.465099.285257.2131005.6154839.8268425322739
128rb32550.232718.243378.666999.878935.8136869.8161015.4
1 m38023718.43233.43467.235466150.88193.2

Hasil Kinerja (IOps) dalam bentuk grafis. Baca / Tulis Campuran%.



Tes 2.2 MDRAID. RAID 0. Tes keterlambatan


Rata-rata waktu respons (ms) dalam bentuk tabel. Baca / Tulis Campuran%.
Ukuran blokR0% / W100%R65% / W35%R100% / W0%
4k0,030150,0675410.102942
8rb0,032810,0821320,126008
16k0,0500580,1142780,170798

Rata-rata waktu respons (ms) dalam bentuk grafis. Baca / Tulis Campuran%.



Waktu respons maksimum (ms) dalam bentuk tabel. Baca / Tulis Campuran%.
Ukuran blokR0% / W100%R65% / W35%R100% / W0%
4k6.70423.72570,8568
8rb6.59182.26010,9004
16k6.34662.77412.5678

Waktu respons maksimum (md) dalam bentuk grafis. Baca / Tulis Campuran%.



Tes 2.3 MDRAID. RAID 0. Tes bandwidth


Penulisan berurutan 1MB - 7820 MBPS.
Baca sekuensial 1MB - 20418 MBPS.
Penulisan berurutan 128Kb - 7622 MBPS.
Baca berurutan 128Kb - 20.380 MBPS.

Tes 2.4 MDRAID. RAID 6. Tes IOPS


Sekarang mari kita lihat apa yang dimiliki sistem ini pada level RAID 6.

Opsi Pembuatan Array
mdadm --create --verbose --chunk 16K / dev / md0 --level = 6 --raid-devices = 12 / dev / nvme0n1 / dev / nvme1n1 / dev / nvme2n1 / dev / nvme3n1 / dev / nvme4n1 / dev / nvme5n1 / dev / nvme8n1 / dev / nvme9n1 / dev / nvme10n1 / dev / nvme11n1 / dev / nvme6n1 / dev / nvme7n1

Volume total array adalah 7450,87 GiB.

Kami memulai pengujian setelah inisialisasi awal dari array RAID.

Hasil Kinerja (IOps) dalam bentuk tabel. Baca / Tulis Campuran%.
Ukuran blokR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k39907.64284961609.878167.6108594.6641950.41902561.6
8rb19474.420701.630316.439737.857051.6394072.21875791.4
16k10371.410979.21602220992.829955.6225157.41267495.6
32rb8505.68824.81289616657.823823173261.8596857.8
64rb5679.459318576.211137.215906.4109469.6320874.6
128rb3976.84170.25974.27716.61099668124.4160453.2
1 m768.8811.21177.815152149.64880.45499

Hasil Kinerja (IOps) dalam bentuk grafis. Baca / Tulis Campuran%.



Tes 2.5 MDRAID. RAID 6. Tes Delay


Rata-rata waktu respons (ms) dalam bentuk tabel. Baca / Tulis Campuran%.
Ukuran blokR0% / W100%R65% / W35%R100% / W0%
4k0,1937020,1455650,10558
8rb0.2665820,1866180,127142
16k0.4262940,2816670,169504

Rata-rata waktu respons (ms) dalam bentuk grafis. Baca / Tulis Campuran%.



Waktu respons maksimum (ms) dalam bentuk tabel. Baca / Tulis Campuran%.
Ukuran blokR0% / W100%R65% / W35%R100% / W0%
4k6.13064.54164.2322
8rb6.24744.51973.5898
16k5.40745.58614.1404

Waktu respons maksimum (md) dalam bentuk grafis. Baca / Tulis Campuran%.



Perlu dicatat bahwa di sini MDRAID menunjukkan tingkat keterlambatan yang sangat baik.

Tes 2.6 MDRAID. RAID 6. Tes Bandwidth


Penulisan berurutan 1MB - 890 MBPS.
Baca sekuensial 1MB - 18800 MBPS.
Penulisan berurutan 128Kb - 870 MBPS.
Pembacaan berurutan 128Kb - 10400 MBPS.

Tes 3. Zvol lebih dari ZFS RAIDZ2


ZFS memiliki fungsi pembuatan RAID bawaan dan manajer volume bawaan yang membuat perangkat blok virtual, yang digunakan oleh banyak produsen penyimpanan. Kami juga akan memanfaatkan fitur-fitur ini dengan membuat kumpulan dengan perlindungan RAIDZ2 (analog dengan RAID 6) dan volume blok virtual di atasnya.

Versi 0.79 (ZFS) dikompilasi. Opsi pembuatan array dan volume:
ashift = 12 / kompresi - off / dedup - off / recordsize = 1M / atime = off / cachefile = tidak ada / Jenis RAID = RAIDZ2

ZFS menunjukkan hasil yang sangat baik dengan kumpulan yang baru dibuat. Namun, dengan dubbing berulang, kinerja berkurang secara signifikan.

Pendekatan SNIA baik karena memungkinkan Anda untuk melihat hasil nyata dari pengujian sistem file yang serupa (yang didasarkan pada ZFS) setelah ditimpa berulang pada mereka.

Tes 3.1 ZVOL (ZFS). RAIDZ2. Tes IOps


Hasil Kinerja (IOps) dalam bentuk tabel. Baca / Tulis Campuran%.
Ukuran blokR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k15719.615147.214190.215592.417965.644832.276314.8
8rb15536.214929.415140.81655117898.844553.476187.4
16k16696.615937.215982.61735018546.244895.475549.4
32rb11859.6109159698.210235.41126526741.838167.2
64rb74446440.26313.26578.27465.614145.819099
128rb4425.43785.64059.83859.44246.47143.410052.6
1 m772730.2779.6784824.4995.81514.2

Hasil Kinerja (IOps) dalam bentuk grafis. Baca / Tulis Campuran%.



Angka kinerja benar-benar tidak mengesankan. Pada saat yang sama, zvol murni (sebelum menulis ulang) memberikan hasil yang jauh lebih baik (5-6 kali lebih tinggi). Di sini, tes menunjukkan bahwa setelah dubbing pertama, kinerja turun.

Uji 3.2 ZVOL (ZFS). RAIDZ2. Tes Keterlambatan


Rata-rata waktu respons (ms) dalam bentuk tabel. Baca / Tulis Campuran%.
Ukuran blokR0% / W100%R65% / W35%R100% / W0%
4k0,3328240,2552250,218354
8rb0,32990.2590130,225514
16k0,1397380,1804670,233332

Rata-rata waktu respons (ms) dalam bentuk grafis. Baca / Tulis Campuran%.



Waktu respons maksimum (ms) dalam bentuk tabel. Baca / Tulis Campuran%.
Ukuran blokR0% / W100%R65% / W35%R100% / W0%
4k90,5569.971884.4018
8rb91.621486.6109104.7368
16k108.219286.2194105.658

Waktu respons maksimum (md) dalam bentuk grafis. Baca / Tulis Campuran%.



Uji 3.3 ZVOL (ZFS). RAIDZ2. Tes bandwidth


Penulisan berurutan 1MB - 1150 MBPS.
Baca sekuensial 1MB - 5500 MBPS.
Penulisan berurutan 128Kb - 1100 MBPS.
Baca berurutan 128Kb - 5300 MBPS.

Tes 4: RAIDIX ERA


Sekarang mari kita lihat tes produk baru kami - RAIDIX ERA.
Kami menciptakan RAID6. Ukuran garis: 16kb. Setelah inisialisasi selesai, jalankan tes.

Hasil Kinerja (IOps) dalam bentuk tabel. Baca / Tulis Campuran%.
Ukuran blokR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k354887363830486865.6619349.4921403.62202384.84073187.8
8rb180914.8185371249927.2320438.8520188.41413096.42510729
16k92115.896327.2130661.2169247.4275446.6763307.41278465
32rb59994.261765.283512.8116562.2167028.8420216.4640418.8
64rb27660.428229.838687.656603.876976214958.8299137.8
128rb14475.81473020674.230358.840259109258.2160141.8
1 m2892.83031.84032.86331.67514.81587119078

Hasil Kinerja (IOps) dalam bentuk grafis. Baca / Tulis Campuran%.



Uji 4.2 RAIDIX ERA. RAID 6. Tes Delay


Rata-rata waktu respons (ms) dalam bentuk tabel. Baca / Tulis Campuran%.
Ukuran blokR0% / W100%R65% / W35%R100% / W0%
4k0,163340,1363970,10958
8rb0,2070560,1633250,132586
16k0,3137740,2257670.182928

Rata-rata waktu respons (ms) dalam bentuk grafis. Baca / Tulis Campuran%.



Waktu respons maksimum (ms) dalam bentuk tabel. Baca / Tulis Campuran%.
Ukuran blokR0% / W100%R65% / W35%R100% / W0%
4k5.3713.42443.5438
8rb5.2433.74153.5414
16k7.6284.28914.0562

Waktu respons maksimum (md) dalam bentuk grafis. Baca / Tulis Campuran%.



Penundaan mirip dengan apa yang dihasilkan MDRAID. Tetapi untuk kesimpulan yang lebih akurat, perkiraan penundaan di bawah beban yang lebih serius harus dilakukan.

Tes 4.3 RAIDIX ERA. RAID 6. Tes Bandwidth


Penulisan berurutan 1MB - 8160 MBPS.
Baca sekuensial 1MB - 19700 MBPS.
Penulisan berurutan 128Kb - 6200 MBPS.
Pembacaan berurutan 128Kb - 19700 MBPS.

Kesimpulan


Sebagai hasil dari pengujian, perlu membandingkan angka yang diperoleh dari solusi perangkat lunak dengan apa yang disediakan oleh platform perangkat keras kepada kita.

Untuk menganalisis kinerja beban acak, kami akan membandingkan kecepatan RAID 6 (RAIDZ2) saat bekerja dengan blok dalam 4k.
MD RAID 6RAIDZ2RAIDIX ERA RAID 6Perangkat keras
4k R100% / W0%19025617631440731874.494.142
4k R65% / W35%108594179659214031823432
4k R0% / W100%3990715719354887958054



Untuk menganalisis kinerja beban serial, kita akan melihat RAID 6 (RAIDZ2) dengan blok 128k. Di antara utas, kami menggunakan shift 10GB untuk menghilangkan hit cache dan menunjukkan kinerja nyata.
MD RAID 6RAIDZ2RAIDIX ERA RAID 6Perangkat keras
128k seq baca1040053001970020.400
128k seq tulis870110062007500



Apa hasilnya?


Rangkaian RAID perangkat lunak yang populer dan terjangkau untuk bekerja dengan perangkat NVMe tidak dapat menunjukkan kinerja yang melekat pada potensi perangkat keras.

Di sini ada kebutuhan yang sangat jelas untuk perangkat lunak kontrol yang dapat mengacaukan situasi dan menunjukkan bahwa simbiosis pengendalian program dengan drive NVMe bisa sangat produktif dan fleksibel.

Memahami permintaan ini, perusahaan kami menciptakan produk RAIDIX ERA, pengembangan yang berfokus pada penyelesaian masalah berikut:

  • Performa baca dan tulis yang tinggi (beberapa juta IOps) pada array dengan Parity dalam mode campuran.
  • Kinerja streaming dari 30GBps termasuk selama failover dan pemulihan.
  • Dukungan untuk level RAID 5, 6, 7.3.
  • Inisialisasi latar belakang dan rekonstruksi.
  • Pengaturan fleksibel untuk berbagai jenis beban (sisi pengguna).

Hari ini, kita dapat mengatakan bahwa tugas-tugas ini telah selesai dan produk siap digunakan.

Pada saat yang sama, memahami kepentingan banyak pihak yang berkepentingan dalam teknologi tersebut, kami siap untuk rilis tidak hanya berbayar, tetapi juga lisensi gratis , yang dapat sepenuhnya digunakan untuk menyelesaikan masalah pada drive NVMe dan SSD.

Baca lebih lanjut tentang RAIDIX ERA di situs web kami .

UPD Mengurangi pengujian ZFS dengan recordsize dan volblocksize 8k


Tabel Pilihan ZFS
NAMEPROPERTINILAISUMBER
tangkimerekam ukuran8 rblokal
tangkikompresioffstandar
tangkidedupoffstandar
tangkichecksumofflokal
tangkivolblocksize--
tank / raidmerekam ukuran--
tank / raidkompresiofflokal
tank / raiddedupoffstandar
tank / raidchecksumofflokal
tank / raidvolblocksize8rbstandar

Rekaman menjadi lebih buruk, pembacaannya lebih baik.
Tetapi semua sama, semua hasilnya secara signifikan lebih buruk daripada solusi lain
Ukuran blokR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k13703.814399.820903.8256693161066955.2140849.8
8rb1512616227.222393.627720.234274.867008139480.8
16k11111.211412.416980.820812.824680.248803.683710.4

Source: https://habr.com/ru/post/id420837/


All Articles