RAID seviyelerinin IOPS üzerindeki etkisi [kapalı]


11

IOPS ile ilgili olarak, web üzerinde belirli sayıda diskin IOPS'sinin tek bir diskin IOPS'sinin disk sayısıyla çarpımını öneren birkaç kaynak gördüm.

Eğer IOPS anlayışım doğruysa (ve emin değilim), gerçekliğin - diğer birçok faktör arasında - RAID seviyesine bağlı olacağını düşünürdüm. RAID 1/10 ile, tüm veriler en az iki diskte çoğaltılır ve bazı IO modelleri için belirli bir diskteki çekişmeyi azaltır. Bununla birlikte, RAID 0/5/6 gibi çizgili RAID düzeylerinde, veriler çoğaltılmak yerine dağıtılır, yani aynı iş mili için ardışık okuma istekleri olabilir, bu da önceki IO tamamlanırken engellemeye yol açabilir. Yazılar daha da tartışılır.

Çeşitli optimizasyonlar ve diğer faktörler nedeniyle gerçekliğin çok daha karmaşık olduğunu takdir etmeliyim. Sorum gerçekten çok basit bir düzeyde, IOPS'un ne anlama geldiğini anlamamın doğru yolda olup olmadığına yöneliyor. IOPS'un RAID seviyelerinden bu şekilde etkilenebileceği iddiam, kavramın temel bir yanlış anlaşıldığını gösterir.


4
Bunu, RAID denetleyici önbelleğinin, işletim sisteminin, uygulamanın davranışının, eşzamanlı veya eşzamansız G / Ç ve disk türünün etkisini hariç tuttuğunuz bir noktaya basitleştiriyorsunuz. Peki ... ne arıyorsun?
ewwhite

Üzgünüm, daha net olmalıydım. Gerçekten, gerçek dünya tahminleri yapmaktan ziyade düşüncemin temel ilkesinin doğru olup olmadığını görmeyi umuyorum. Gerçekte şeylerin her türlü optimizasyon ve diğer karmaşıklıklardan büyük ölçüde etkilendiğini takdir ediyorum. Arka planda gerçek dünyadaki bir durum var, ancak çoğu zaman aşina olmadığınız bir şeye bakarken olduğu gibi, uzaklaşmaya ve biraz arka plan öğrenimi yapmaya karar verdim, bu yüzden biraz hissediyorum temel ilkelerle daha rahat.
dbr

Kimse depolama ve performansı çevreleyen teori ve kavramlar hakkında kaliteli okuma hakkında herhangi bir öneri olup olmadığını sormak için cazip, ama ben ServerFault için uygunsuz bir soru olarak kabul edilebilir düşündüğüm gibi yapmadım. Web'de şu ana kadar bulduğum konu hakkında oldukça az yüksek kaliteli bir yazı var gibi görünüyor - belki de çok azının tam olarak anladığı oldukça karmaşık bir konu.
dbr

RAID performansı, RAID düzeyinden çok denetleyici donanımına ve uygulama sınırlarına bağlıdır. Örneğin RAID0, RAID1, RAID5 ve RAID6 teorik olarak tüm diskleri uzun okumalar için kullanabilir, böylece ideal bir denetleyicide aynı okuma hızına sahip olabilirler.
Zac67

Yanıtlar:


12

HDD için , IOPS genellikle arama gecikmesi + dönme gecikmesi + aktarım gecikmesi toplamı olandiskin erişim süresine hakimdir . Bu değişkenler erişim örüntülerine büyük ölçüde bağlı olduğundan ve belirli RAID düzeni (ör: şerit boyutu) ve denetleyici (yani: ileri okuma ayarı) ile belirgin olmayan etkileşimlere sahip olduğundan, herhangi bir basit cevap YANLIŞ OLACAKTIR.

Ancak, bir basketbol sahası figürüne sahip olmaya çalışalım. İlk yaklaşımda, n-disk dizisi tarafından garanti edilen IOPS, tek bir diskin IOPS değerinin n katı olmalıdır. Bununla birlikte, hem RAID seviyesi hem de veri erişim modeli , ağırlığı arama / dönme / aktarma gecikmesi arasında değiştirerek, bu birinci dereceden yaklaşımı dramatik bir şekilde değiştirir.

Tek disk başına 100 IOPS (7200 RPM diskler için tipik bir değer) ve 4 disk dizileri (genellikle yalnızca 2 yönlü ile sınırlı olan RAID1 hariç) varsayarak bazı örnekler yapalım:

  • tek bir disk 100 IOPS'dir, hem okuma hem de yazma (not: yazma birleştirme nedeniyle, yazma IOPS genellikle okuma IOPS'tan daha yüksektir, ancak basitlik için bunu görmezden gelelim)
  • RAID0 (4-yollu şeritleme) sahiptir kadar rastgele IOPS 4x ve kadar sıralı IOPS 4x. Buradaki anahtar kelime "en fazla" dır: şeritleme ve veri hizalamanın doğası nedeniyle, rastgele erişilen sektörler tek bir diskte bulunursa, çok daha düşük IOPS ile bitireceksiniz.
  • RAID1 (2 yönlü yansıtma) profil için daha karmaşıktır. Farklı diskler farklı veriler üzerinde arama yapabildiğinden, rastgele okuma IOPS'sinin 2 katına kadar, ancak aynı 1x (veya tepeden dolayı biraz daha düşük) rastgele yazma IOPS'ye sahiptir. Her şey iyi hizalanıyorsa (örneğin: büyük ancak% 100 sıralı okumalar değil, ayna modunda bile parçalar / şeritler kavramı / işleme kullanan bir RAID denetleyicisi, okuma öncesi doğru çalışma, vb.) Sıralı okumalar bazen tekli 2 kata kadar olabilir disk değeri, sıralı yazma işlemleri tek diskin 1 katında kalmaya devam ederken (örn: hızlanma yok)
  • RAID10 (4 yönlü yansıtma), 4 yönlü RAID0 şeritleme ile 2 yönlü yansıtma arasında yarı yolda performans açısından akıllıdır. 4 kata kadar rastgele okuma IOPS ve 2 kata kadar rastgele yazma IOPS vardır. Sıralı aktarımlar için RAID1 uyarısı uygulanır: bazen sıralı okuma IOPS'sinin 4 katına kadar, ancak sıralı yazma IOPS'unun sadece 2 katına sahiptir. Bazı RAID10 uygulamasının (yani Linux MDRAID) RAID10 dizileri için farklı performans profiline sahip farklı düzenler sağladığını lütfen unutmayın .
  • RAID5 (çizgili parite) rastgele okuma IOPS'a 4 kata kadar, yazma yazma şerit boyutu, büyük şerit önbellek kullanılabilirliği, şerit rekonstrüksiyon algoritması açısından bir dizi faktöre bağlı olarak rastgele yazma IOPS'a sahiptir. kendisi (read-reconstruct-write vs read-change-write), vb., tek bir diskin 0,5x (veya daha düşük) ve 2x IOPS'si arasında olabilir. Sıralı işyükleri daha öngörülebilir, tek bir diskin 3 kat IOPS'si (hem okuma hem de yazma için)
  • RAID6 (çizgili çift parite), RAID5 kardeşi gibi davranır, ancak daha düşük yazma performanslarına sahiptir. Tek bir diskin 4 kata kadar rastgele okuma IOPS değerine sahiptir, ancak rastgele yazma performansı RAID5'ten bile daha düşüktür, aynı mutlak değerlerle (0,5x - 2x) ancak gerçek kelime ortalaması daha düşüktür. Sıralı okuma ve yazma işlemleri, tek bir diskin IOPS değerinin 2 katında sınırlıdır.

Tekrar edeyim: yukarıdakiler basit ve neredeyse kırılmış yaklaşımlardır. Her neyse, (ciddi şekilde eksik) bir RAID IOPS hesap makinesiyle oynamak istiyorsanız, buraya bir göz atın .

Şimdi, gerçek dünyaya geri dönün. Gerçek dünya iş yüklerinde, RAID10 genellikle daha hızlı ve tercih edilen bir seçimdir ve bozulmuş bir dizi karşısında bile yüksek performansı korur . RAID5 ve RAID6, okuma merkezli veya sıralı nitelikte olmadıkları sürece performansa duyarlı iş yüklerinde kullanılmamalıdır. Ciddi RAID denetleyicilerinin , RAID5 / 6 düşük rasgele yazma performansının üstesinden gelmek için (ağır şerit önbellekleme yoluyla) büyük güç kaybı korumalı geri yazma önbelleğine sahip olduklarını belirtmek gerekir . Dizinin hızını gerçekten önemsemediğiniz sürece, RAID5 / 6'yı asla önbelleksiz RAID denetleyicileriyle kullanmayın .

SSD farklı hayvanlar, düşünce. İçsel olarak çok daha düşük ortalama erişim süresine sahip oldukları için, eşlik tabanlı RAID'ler performanstan çok daha düşük performansa neden olur ve HDD'lere göre çok daha uygun bir seçenektir. Ancak, küçük rastgele yazma merkezli bir iş yükünde, yine de bir RAID10 kurulumu kullanırdım.


Dizinin hızını gerçekten önemsemediğiniz sürece, RAID5 / 6'yı asla önbelleksiz RAID denetleyicileriyle kullanmayın. Ne yaptığınızı gerçekten biliyor ve IO deseninizi sıkı bir şekilde kontrol ediyorsanız, bundan kurtulabilirsiniz. Dizinin şerit boyutuyla eşleşen sıralı IO'dan başka bir şey yapmıyorsanız, önbelleksiz RAID5 / 6 kullanarak uzaklaşabilirsiniz. Ve bir RAID5 / 6 dizisine yeterince rasgele, küçük blok yazma işlemleri yaparsanız önbellek performansı kaydedemez, ancak performansı öldüren "yeterli IO işlemi" değeri gerçekten iyi bir RAID denetleyicisi için çok büyük bir sayı olabilir.
Andrew Henle

@AndrewHenle Tabii, yalnızca şerit hizalanmış sıralı okuma / yazma yayınlarsa, RAD5 / 6 modundaki önbelleksiz bir denetleyici bile size iyi sonuçlar verebilir. Ancak bu çok dar bir kullanım şeklidir (yani: akış ve yedeklemeler). Genel amaçlı iş yükü için, herhangi bir eşlikli RAID ile birleştirilmiş önbelleksiz bir denetleyici gerçekten yavaş olacaktır. Bazı denetleyiciler , eşlikli bir RAID oluşturmanıza olanak sağlamak için güçlü bir korumalı geri yazma önbelleğine bile ihtiyaç duyar .
shodanshok

Neden 19 MB'lık daha büyük bir şerit boyutuna sahip kurumsal posta depolama 21 sürücülü RAID6 dizisinin neden yavaş olduğunu merak eden yöneticiler hakkında daha fazla düşünüyordum ....
Andrew Henle

1

Bu sadece bir tanım meselesi. IOPS'u sistemdeki farklı seviyelerde ölçebilir ve farklı değerler elde edersiniz. Örneğin, iki aynalı diskiniz olduğunu ve olabildiğince hızlı yazdığınızı varsayın. Disklere giden IOPS, tek bir diskin benzer yazma yüküyle işleyebileceği IOPS sayısının iki katı olacaktır. Ancak denetleyiciye giden IOPS, tek bir diskin işleyebileceği IOPS sayısına eşit olacaktır.

Genellikle umursadığımız şey, diziye kaç mantıksal IOPS alabileceğimizdir ve disk düzeyinde ne olduğunu umursamıyoruz. Bu durumda, haklısınız ve IOPS, RAID düzeyine, disk sayısına, ayrı disklerin performansına ve bazı durumlarda işlemlerin belirli özelliklerine bağlıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.