Linux ile bazı Sun donanımlarında depolama kurulumunu optimize etmeye çalışıyorum. Herhangi bir düşünce büyük mutluluk duyacağız.
Aşağıdaki donanıma sahibiz:
- Güneş Bıçağı X6270
- 2 * LSISAS1068E SAS denetleyicileri
- 1 TB diskli 2 * Sun J4400 JBOD (JBOD başına 24 disk)
- Fedora Çekirdeği 12
- 2.6.33 FC13'ten sürüm çekirdeği (ayrıca FC12'den en son 2.6.31 çekirdeği ile de denendi, aynı sonuçlar)
SAS donanımının veri sayfası:
http://www.sun.com/storage/storage_networking/hba/sas/PCIe.pdf
PCI Express 1.0a, 8x şerit kullanıyor. Şerit başına 250 MB / sn bant genişliği ile, SAS denetleyicisi başına 2000 MB / sn yapabilmemiz gerekir.
Her denetleyici port başına 3 Gb / sn yapabilir ve iki adet 4 portlu PHY'ye sahiptir. Her iki PHY'yi bir denetleyiciden bir JBOD'ye bağlarız. JBOD ve kontrolör arasında PCI Express bant genişliğinden daha fazla olan 2 PHY * 4 SAS portu * 3 Gb / sn = 24 Gb / sn bant genişliği var.
Yazma önbelleği etkinken ve büyük yazma işlemleri yaparken, her disk yaklaşık 80 MB / sn (diskin başlangıcına yakın) sürebilir. 24 disk ile, JBOD başına 1920 MB / sn yapabilmemiz gerekir.
çoklu yol { rr_min_io 100 uid 0 path_grouping_policy multibus geri dönme kılavuzu yol_selektörü "round-robin 0" rr_weight öncelikleri takma ad somealias yol_tekrar kuyruğu yok mod 0644 gid 0 biraz geniş }
Rr_min_io için 50, 100, 1000 değerlerini denedim, ancak çok fazla bir fark yaratmıyor gibi görünüyor.
Değişen rr_min_io ile birlikte tüm aynı PHY üzerinde aynı anda yazma önlemek için dd başlatmak arasında bazı gecikme ekleyerek çalıştı, ama bu herhangi bir fark yaratmadı, bu yüzden I / O düzgün yayılıyor düşünüyorum.
/ Proc / interrupts'a göre, SAS denetleyicileri bir "IR-IO-APIC-fasteoi" kesme şeması kullanır. Herhangi bir nedenden ötürü, makinedeki sadece çekirdek # 0 bu kesintileri ele alıyor. Her SAS denetleyicisinin kesintilerini işlemek için ayrı bir çekirdek atayarak performansı biraz artırabilirim:
echo 2> / proc / irq / 24 / smp_affinity echo 4> / proc / irq / 26 / smp_affinity
Diske yazmak için dd kullanıldığında, çekirdek # 4 tarafından işlenen "İşlev çağrısı kesmeleri" (bunların ne olduğu hakkında bir fikir yok) oluşturur, bu yüzden diğer işlemleri de bu çekirdekten uzak tutarım.
Ben 48 dd's (her disk için bir tane) çalıştırmak, böyle kesintiler ile uğraşmayan çekirdeklere atama:
görevler -c = / dev / sıfır = / dev / mapper / mpathx oflag = doğrudan bs = 128M
oflag = direct her türlü arabellek önbelleğinin dahil olmasını engeller.
Çekirdeklerimin hiçbiri azami gibi görünmüyor. Kesintilerle uğraşan çekirdekler çoğunlukla boştur ve diğer tüm çekirdekler beklendiği gibi G / Ç'de bekler.
Cpu0:% 0.0 us,% 1.0 sy,% 0.0 ni,% 91.2 id,% 7.5 wa,% 0.0 hi,% 0.2 si,% 0.0 st İşlemci1:% 0.0 us,% 0.8 sy,% 0.0 ni,% 93.0 id,% 0.2 wa,% 0.0 hi,% 6.0 si,% 0.0 st İşlemci2:% 0.0 us,% 0.6 sy,% 0.0 ni,% 94.4 id,% 0.1 wa,% 0.0 hi,% 4.8 si,% 0.0 st İşlemci3:% 0.0 us,% 7.5 sy,% 0.0 ni,% 36.3 id,% 56.1 wa,% 0.0 hi,% 0.0 si,% 0.0 st Cpu4:% 0.0 us,% 1.3 sy,% 0.0 ni,% 85.7 id,% 4.9 wa,% 0.0 hi,% 8.1 si,% 0.0 st İşlemci5:% 0.1 us,% 5.5 sy,% 0.0 ni,% 36.2 id,% 58.3 wa,% 0.0 hi,% 0.0 si,% 0.0 st İşlemci6:% 0.0 us,% 5.0 sy,% 0.0 ni,% 36.3 id,% 58.7 wa,% 0.0 hi,% 0.0 si,% 0.0 st Cpu7:% 0.0 us,% 5.1 sy,% 0.0 ni,% 36.3 id,% 58.5 wa,% 0.0 hi,% 0.0 si,% 0.0 st İşlemci8:% 0.1 us,% 8.3 sy,% 0.0 ni,% 27.2 id,% 64.4 wa,% 0.0 hi,% 0.0 si,% 0.0 st İşlemci9:% 0.1 us,% 7.9 sy,% 0.0 ni,% 36.2 id,% 55.8 wa,% 0.0 hi,% 0.0 si,% 0.0 st İşlemci10:% 0.0 us,% 7.8 sy,% 0.0 ni,% 36.2 id,% 56.0 wa,% 0.0 hi,% 0.0 si,% 0.0 st İşlemci11:% 0.0 us,% 7.3 sy,% 0.0 ni,% 36.3 id,% 56.4 wa,% 0.0 hi,% 0.0 si,% 0.0 st Cpu12:% 0.0 us,% 5.6 sy,% 0.0 ni,% 33.1 id,% 61.2 wa,% 0.0 hi,% 0.0 si,% 0.0 st Cpu13:% 0.1 us,% 5.3 sy,% 0.0 ni,% 36.1 id,% 58.5 wa,% 0.0 hi,% 0.0 si,% 0.0 st Cpu14:% 0.0 us,% 4.9 sy,% 0.0 ni,% 36.4 id,% 58.7 wa,% 0.0 hi,% 0.0 si,% 0.0 st İşlemci15:% 0.1 us,% 5.4 sy,% 0.0 ni,% 36.5 id,% 58.1 wa,% 0.0 hi,% 0.0 si,% 0.0 st
Tüm bunlar göz önüne alındığında, "dstat 10" çalıştırılarak bildirilen verim 2200-2300 MB / sn aralığındadır.
Yukarıdaki matematik göz önüne alındığında, 2 * 1920 ~ = 3600+ MB / sn aralığında bir şey beklenir.
Kayıp bant genişliğimin nereye gittiğine dair bir fikri olan var mı?
Teşekkürler!