Yarım milyon+ IOPS :D :P

Evet, komik bir başlık oldu farkındayım ama milyon kelimesini bir yerden yakalamak gerektiğinden ancak bu şekilde bir başlık atabildim, neyse önemli olan IOPS değeri değil zaten, ona etki edenler 😉

VMware’in dökümanlarına baktığımızda 2012 tarihli milyon IOPS’luk pdf’ler, yazılar var , tabi bunun zamanı geçmiş gibi artık üzerinde pek konuşulmuyor gibi derken birde Nutanix’in 2017 tarihli Michale Webster’ın bir yazısını yakaladım o da zaten bir milyon IOPS’u yapacak bir VM’e ihtiyaç var mı diye belirtmiş makalesinde.

Yaptığım testleri NVMe destekli all flash bir storage üzerinde gerçekleştirdim. Hala gelenekseliz, halen FC altyapısı üzerinde yol almaya devam ediyoruz, herhangi bir HCI veya NVMeoF üzerinde yapılmış bir test değil yaptıklarım. Bu yazıdada sadece dikkat edilmesi gereken birkaç konunun altının çizmek istedim.

Tüm testler VMware vSphere 6.7 Update 1 üzerinde yapılmış olup test için IO Meter yazılımı kullanılmıştır.

Performans’a Etki Eden Bileşen ve Ayarlar ;

  1. Gerçek Multipathing ve  Multipathing ayarları
  2. Yeni jenerasyon FC HBA’ler
  3. Node üzerinde FC HBA Sayısı
  4. SCSI Controller Sayısı
  5. PVSCSI ve LSI SAS Controller Arasında
  6. IO Meter Outstanding I/O Adedi
  7. Disk.SchedNumReqOutstanding Parametresi
  8. FC HBA göre Queue Depth Ayarı

Tersten başlayalım …

8.FC HBA göre Queue Depth Ayarı

Genelde darboğaz node tarafında olduğunda burada queue depth’leri esxtop ile iyi izlemeniz lazım, bir yerde sıkıştıysanız ve daha iyisini alabileceğinizi düşündüğünüz yerlerde mutlaka bu değer’i kontrol edin.

Bu arada queue depth ayarı farklı FC HBA’lara göre farklılık gösterecektir, mesela Qlogic kart’lar HBA başına bir değer atayabilirken, Emulex kartlarda ise LUN/Target başına bu değeri atıyor bu durumda ilgili değişiklikleri nasıl yapmanız gerektiğine dikkat etmelisiniz.

Örnek:

esxcli system module parameters set -p ql2xmaxqdepth=256 -m qlnativefc

Not: Bu parametre reboot GEREKTİRİR.

7.Disk.SchedNumReqOutstanding

Aynı anda birden fazla VM ile yük test’i yaptığınızda VMware her bir VM’in yapacağı IO’u limitleyerek ortamı koruma altına almak isteyecektir, buna takılmamak için ilgili Disk.SchedNumReqOutstanding değerini ihtiyacınıza göre düzenlemelisiniz.

Örnek:

esxcli storage core device set -d naa.xxxyyyyzzztttuuuuartikneise -O 64

Not: Bu parametre reboot GEREKTİRMEZ.

6.IO Meter Outstanding I/O

Genel olarak gördüğüm kadarı ile testlerde bu değeri 16’ya kitliyorlar, yaptığım testlerde agresif bir değer alabilmek için 32,64 hatta 128 gibi değerler set edip ilerledim gördüm ki bu bana hem latency artışı olarak hemde istediğim IOPS artışı ve tutarlılığında uzakta bir test yapmama sebebiyet verdi.

Yaptığım testlerde en efektif olarak 30 Outstanding I/O ile yaptım.

5.PVSCSI ve LSI SAS Controller Arasında

Testlere başlamadan önce halen aralarında bir fark var mı diye merak etmiştim, evet burada halen bir fark varmış, tek bir VM 270-280K IOPS civarlarında bir değere çıktığında ;

PVSCSI %50 CPU ve Avg 1.3 ms , Max 29 ms response time ile cevap verirken,
LSI SAS %60 CPU ve Avg 1.8 ms , Max 78 ms response time ile cevap veriyor.

Maksimum performans için önerilen halen PVSCSI, ek olarak queue depth ayarı yapılmasına izin veren tek controller tipi.

4.SCSI Controller Sayısı

Tüm test’lerde iyi değerler elde edebilmek için ilgili sanal makineye birden fazla PVSCSI veya LSI SAS Controller ve bunlara ikişer, beşer diskler eklenmiş durumda.

Maksimum dört adet SCSI Controller ekleyebiliyorsunuz. Her bir controller limitli IOPS veriyor,  yani bir controller’a 10 disk taktığınızda arzu ettiğiniz değeri alamıyorsunuz, keza bir controller için optimum değeri bulduğunuzda controller sayısını doğru orantılı arttırdığınızda yine hedeflediğiniz değer’e gelemiyorsunuz.

Mesela ben bir controller ve ona bağlı iki disk ile 170K IOPS alabildim, buna ek bir controller ve iki disk daha eklediğimde 280K civarlarına çıktım.

Not: Burada aklımda kalan bir soru işareti var, oda bir node üzerinde HBA sayısı ve Storage üzerinde kullanılan HBA sayısı.

3.Node Üzerinde FC HBA Sayısı

Tüm testlerde karşılaşılan şey parallellik, yaptığım testlerde “Emulex LightPulse LPe32000 PCIe Fibre Channel Adapter” kullandım, bu Gen6 yeni jenerasyon bir kart , 1.6 Milyon IOPS yapabildiğini söylüyor ama tek bir kart ile bu değeri almak mümkün olmadı, istediğim değerlere ancak sistem’e iki adet “Emulex LightPulse LPe32000 PCIe Fibre Channel Adapter” taktığımda ulaşabildim, elimideki test için kullandığım sunucu 1U ve max iki adet slot’u olduğundan ancak iki adet HBA takabildim fakat burada belli oldu ki daha fazla HBA ile değerleri değiştirmek mümkün.

2.Yeni jenerasyon FC HBA’ler

Test’leri yaparken eski jenerasyon HBA ve yeni jenerasyon HBA’leri aynı anda test etme şansım oldu, gördüğüm kadarıyla yeni jenerasyon iki kat daha fazla IOPS yapabiliyor ve CPU tüketimi daha aşağılarda.

Mesela burada 8Gbit’lik kart ile 16Gbit’lik yeni nesil kart’ın yapabildiği IOPS değerleri mevcut. 8 gbit’lik kartın spec’lerindede up to 200K IOPS diyor fakat 70 ile 80K arasında bir değer vermekte.

İki adet çift port’u yeni jenerasyon “Emulex LightPulse LPe32000 PCIe Fibre Channel Adapter” kullanıldığında IOPS değerleri değişiyor.

1. Gerçek Multipathing ve  Multipathing ayarları

Test olarak kullandığım flash storage tüm controller’ları IO alabildiğinden en önemli hamle roundrobin set edilmiş bir multipathing ayarında 1000 olarak set edilmiş path değişikliği ayarını 1 olarak güncellemek olacaktır, bu şekilde iki daha fazla IOPS ve daha düşük latency alabilirsiniz.

Örnek :

esxcli storage nmp psp roundrobin deviceconfig set -d naa.naa.xxxyyyyzzztttuuuuartikneise -I 1 -t iops

Sonuç:

Yüksek sayıda IOPS alabilmek için yapılması gereken en önemli nokta paralellik ve doğru konfigürasyon. Bir adet LUN, bir adet controller, bir FC HBA ile istenilen noktaya ulaşmak mümkün değil. Doğru test belki 2 ila 4 arası FC HBA, 10 ila 20 arası datastore, bir o kadar vdisk , doğru parametreler ile test etmek gerekiyor.

Aşağıdaki test bir adet 24 Core AMD EPYC , 128 GB RAM ve iki adet Emulex LPe32000’li DL 325 Gen 10 üzerinde , iki sanal makine her biri 16 vcpu 16 GB ramli , toplam 24 datastore/LUN üzeride  , 16 Gbit FC bağlantısı ile yapılmıştır.

Gönül aynı testi NVMeoF ile yapmayı isterdi ama şimdilik bu yaptığımızda iş görücek cinsten ;

VM başı 300K IOPS

Toplam 609K IOPS

VM başı 1.1 ms latency

🙂

VM

Advertisements

Posted on 29/01/2019, in Storage, VMware and tagged , , , , , , , , , , . Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: