Disk kıyaslama

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Windows VM'leri ✔️ Esnek ölçek kümeleri ✔️ Tekdüzen ölçek kümeleri

Karşılaştırma, uygulamanızda farklı iş yüklerinin benzetimini gerçekleştirme ve her iş yükü için uygulama performansını ölçme işlemidir. Yüksek performanslı tasarım makalesinde açıklanan adımları kullanarak uygulama performansı gereksinimlerini topladınız. Uygulamayı barındıran VM'lerde karşılaştırma araçlarını çalıştırarak, uygulamanızın premium SSD'lerle başarabileceği performans düzeylerini belirleyebilirsiniz. Bu makalede, Azure premium SSD'leri ile sağlanan bir Standard_D8ds_v4 VM'sini karşılaştırma örnekleri sağlıyoruz.

Sırasıyla Windows ve Linux için yaygın karşılaştırma araçlarını DiskSpd ve FIO'da kullandık. Bu araçlar, iş yükü gibi bir üretimin simülasyonunu yaparak birden çok iş parçacığı oluşturur ve sistem performansını ölçer. Araçları kullanarak, normalde bir uygulama için değiştiremeyeceğiniz blok boyutu ve kuyruk derinliği gibi parametreleri de yapılandırabilirsiniz. Bu, farklı uygulama iş yükleri için premium SSD'lerle sağlanan yüksek ölçekli bir VM'de maksimum performansı yönlendirmek için daha fazla esneklik sağlar. Her karşılaştırma aracı hakkında daha fazla bilgi edinmek için DiskSpd ve FIO'ya gidin.

Aşağıdaki örnekleri izlemek için bir Standard_D8ds_v4 oluşturun ve VM'ye dört premium SSD ekleyin. Dört diskten üçünün ana bilgisayar önbelleğini "Yok" olarak yapılandırın ve bunları NoCacheWrites adlı bir birime bölün. Konak önbelleğini kalan diskte "ReadOnly" olarak yapılandırın ve bu diskle CacheReads adlı bir birim oluşturun. Bu kurulumu kullanarak bir Standard_D8ds_v4 VM'den en yüksek Okuma ve Yazma performansını görebilirsiniz. Premium SSD'lerle Standard_D8ds_v4 oluşturma hakkında ayrıntılı adımlar için bkz. Yüksek performans için tasarlama.

Önbelleği ısıtın

ReadOnly konağı önbelleğe alma özelliğine sahip disk, disk sınırından daha yüksek IOPS verebilir. Ana bilgisayar önbelleğinden bu en yüksek okuma performansını elde etmek için önce bu diskin önbelleğini ısıtmanız gerekir. Bu, karşılaştırma aracının CacheReads biriminde yönlendireceği Okuma GPO'larının diske doğrudan değil, önbelleğe isabet etmesini sağlar. Önbellek isabetleri, tek önbellek özellikli diskten daha fazla IOPS elde eder.

Önemli

VM her yeniden başlatıldığında karşılaştırmaları çalıştırmadan önce önbelleği ısıtmanız gerekir.

DISKSPD

VM'de DISKSP aracını indirin . DISKSPD, kendi yapay iş yüklerinizi oluşturmak için özelleştirebileceğiniz bir araçtır. Karşılaştırma testlerini çalıştırmak için yukarıda açıklanan kurulumun aynısını kullanacağız. Farklı iş yüklerini test etmek için belirtimleri değiştirebilirsiniz.

Bu örnekte, aşağıdaki temel parametreler kümesini kullanırız:

  • -c200G: Testte kullanılan örnek dosyayı oluşturur (veya yeniden oluşturur). Bayt, KiB, MiB, GiB veya blok olarak ayarlanabilir. Bu durumda, bellek önbelleğini en aza indirmek için 200 GiB hedef dosyadan oluşan büyük bir dosya kullanılır.
  • -w100: Yazma isteği olan işlemlerin yüzdesini belirtir (-w0, %100 okuma ile eşdeğerdir).
  • -b4K: Blok boyutunu bayt, KiB, MiB veya GiB cinsinden gösterir. Bu durumda, rastgele bir G/Ç testinin benzetimini yapmak için 4K blok boyutu kullanılır.
  • -F4: Toplam dört iş parçacığını ayarlar.
  • -r: Rastgele G/Ç testini gösterir (-s parametresini geçersiz kılar).
  • -o128: İş parçacığı başına hedef başına bekleyen G/Ç isteklerinin sayısını gösterir. Bu, kuyruk derinliği olarak da bilinir. Bu durumda CPU'ya baskı yapmak için 128 kullanılır.
  • -W7200: Ölçümler başlamadan önce ısınma süresinin süresini belirtir.
  • -d30: Isınma dahil olmak üzere testin süresini belirtir.
  • -Sh: Yazılım ve donanım yazma önbelleğini devre dışı bırakın (-Suw ile eşdeğer).

Parametrelerin tam listesi için bkz. GitHub deposu.

En fazla yazma IOPS'si

Yazma işlemlerini yönlendirmek için 128 yüksek kuyruk derinliği, 8 KB'lık küçük bir blok boyutu ve dört çalışan iş parçacığı kullanırız. Yazma çalışanları, önbelleği "Yok" olarak ayarlanmış üç disk içeren "NoCacheWrites" biriminde trafik yönlendiriyor.

30 saniye ısınma ve 30 saniye ölçüm için aşağıdaki komutu çalıştırın:

diskspd -c200G -w100 -b8K -F4 -r -o128 -W30 -d30 -Sh testfile.dat

Sonuçlar, Standard_D8ds_v4 VM'nin en fazla 12.800 yazma IOPS sınırını teslim ettiğini gösterir.

toplam bayt 3208642560 için, toplam G/Ç sayısı 391680, toplam 101,97 MiB/sn ve saniyede toplam 13052,65 G/Ç.

En fazla okuma IOPS'leri

Okuma işlemlerini yönlendirmek için 128 yüksek kuyruk derinliği, dört KB'lık küçük bir blok boyutu ve dört çalışan iş parçacığı kullanırız. Okuma çalışanları, önbelleği "ReadOnly" olarak ayarlanmış bir diske sahip olan "CacheReads" biriminde trafik yönlendiriyor.

İki saatlik ısınma ve 30 saniyelik ölçüm için aşağıdaki komutu çalıştırın:

diskspd -c200G -b4K -F4 -r -o128 -W7200 -d30 -Sh testfile.dat

Sonuçlar, Standard_D8ds_v4 VM'nin en yüksek okuma IOPS sınırı olan 77.000'i teslim ettiğini gösterir.

Toplam 9652785152 bayt için toplam G/Ç 2356637, toplam MiB/sn değeri 306,72 ve saniyede toplam 78521,23 G/Ç vardı.

Aktarım hızı üst sınırı

Okuma ve yazma aktarım hızı üst sınırını elde etmek için 64 KB'lık daha büyük bir blok boyutuna geçebilirsiniz.

FIO

FIO, Linux VM'lerinde depolamayı karşılaştırmak için popüler bir araçtır. Farklı GÇ boyutları, sıralı veya rastgele okumalar ve yazmalar seçme esnekliğine sahiptir. Belirtilen G/Ç işlemlerini gerçekleştirmek için çalışan iş parçacıklarını veya işlemleri oluşturur. Her çalışan iş parçacığının iş dosyalarını kullanarak gerçekleştirmesi gereken G/Ç işlemlerinin türünü belirtebilirsiniz. Aşağıdaki örneklerde gösterildiği gibi senaryo başına bir iş dosyası oluşturduk. Premium Depolama üzerinde çalışan farklı iş yüklerini karşılaştırmak için bu iş dosyalarındaki belirtimleri değiştirebilirsiniz. Örneklerde Ubuntu çalıştıran bir Standard_D8ds_v4 kullanıyoruz. Kıyaslama bölümünün başında açıklanan kurulumun aynısını kullanın ve karşılaştırma testlerini çalıştırmadan önce önbelleği ısıtın.

Başlamadan önce FIO'yı indirin ve sanal makinenize yükleyin.

Ubuntu için aşağıdaki komutu çalıştırın,

apt-get install fio

Yazma işlemlerini yönlendirmek için dört çalışan iş parçacığı ve disklerde Okuma işlemlerini yönlendirmek için dört çalışan iş parçacığı kullanırız. Yazma çalışanları, önbelleği "Yok" olarak ayarlanmış üç disk içeren "nocache" biriminde trafik yönlendiriyor. Okuma çalışanları, önbelleği "ReadOnly" olarak ayarlanmış bir diske sahip olan "readcache" biriminde trafik yönlendiriyor.

En fazla yazma IOPS'si

En fazla Yazma IOPS'sini almak için aşağıdaki belirtimlere sahip iş dosyasını oluşturun. "fiowrite.ini" olarak adlandır.

[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4

[writer1]
rw=randwrite
directory=/mnt/nocache

Önceki bölümlerde açıklanan tasarım yönergeleriyle uyumlu olan aşağıdaki önemli noktalara dikkat edin. Bu belirtimler en yüksek IOPS'yi sağlamak için gereklidir,

  • 256 yüksek kuyruk derinliği.
  • 4 KB'lık küçük bir blok boyutu.
  • Rastgele yazma işlemi gerçekleştiren birden çok iş parçacığı.

FIO testini 30 saniye boyunca başlatmak için aşağıdaki komutu çalıştırın,

sudo fio --runtime 30 fiowrite.ini

Test çalışırken VM ve Premium disklerin teslim ettiğiniz yazma IOPS sayısını görebilirsiniz. Aşağıdaki örnekte gösterildiği gibi, Standard_D8ds_v4 VM en yüksek yazma IOPS sınırı olan 12.800 IOPS'yi teslim eder.
Yazma IOPS VM'sinin ve premium SSD'lerin teslim edilen sayısı, yazmaların 13,1k IOPS olduğunu gösterir.

En fazla okuma IOPS'leri

En yüksek Okuma IOPS'sini almak için aşağıdaki belirtimlere sahip iş dosyasını oluşturun. "fioread.ini" olarak adlandır.

[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4

[reader1]
rw=randread
directory=/mnt/readcache

Önceki bölümlerde açıklanan tasarım yönergeleriyle uyumlu olan aşağıdaki önemli noktalara dikkat edin. Bu belirtimler en yüksek IOPS'yi sağlamak için gereklidir,

  • 256 yüksek kuyruk derinliği.
  • 4 KB'lık küçük bir blok boyutu.
  • Rastgele yazma işlemi gerçekleştiren birden çok iş parçacığı.

FIO testini 30 saniye boyunca başlatmak için aşağıdaki komutu çalıştırın,

sudo fio --runtime 30 fioread.ini

Test çalışırken VM ve Premium disklerin teslim ettiğiniz okuma IOPS sayısını görebilirsiniz. Aşağıdaki örnekte gösterildiği gibi, Standard_D8ds_v4 VM 77.000'den fazla Okuma IOPS'sini teslim ediyor. Bu, diskin ve önbellek performansının bir bileşimidir.
Okumaların 78,6k olduğunu gösteren yazma IOPS VM'lerinin ve premium SSD'lerin sayısının ekran görüntüsü.

En fazla okuma ve yazma IOPS'leri

En fazla birleştirilmiş Okuma ve Yazma IOPS elde etmek için aşağıdaki belirtimlere sahip iş dosyasını oluşturun. "fioreadwrite.ini" olarak adlandır.

[global]
size=30g
direct=1
iodepth=128
ioengine=libaio
bs=4k
numjobs=4

[reader1]
rw=randread
directory=/mnt/readcache

[writer1]
rw=randwrite
directory=/mnt/nocache
rate_iops=3200

Önceki bölümlerde açıklanan tasarım yönergeleriyle uyumlu olan aşağıdaki önemli noktalara dikkat edin. Bu belirtimler en yüksek IOPS'yi sağlamak için gereklidir,

  • Yüksek kuyruk derinliği 128.
  • 4 KB'lık küçük bir blok boyutu.
  • Rastgele okuma ve yazma işlemleri gerçekleştiren birden çok iş parçacığı.

FIO testini 30 saniye boyunca başlatmak için aşağıdaki komutu çalıştırın,

sudo fio --runtime 30 fioreadwrite.ini

Test çalışırken, VM ve Premium disklerin teslim edilen birleştirilmiş okuma ve yazma IOPS sayısını görebilirsiniz. Aşağıdaki örnekte gösterildiği gibi, Standard_D8ds_v4 VM 90.000'den fazla birleşik Okuma ve Yazma IOPS teslim ediyor. Bu, diskin ve önbellek performansının bir bileşimidir.
Birleştirilmiş okuma ve yazma IOPS,okumaların 78,3k ve yazmaların 12,6k IOPS olduğunu gösterir.

Birleştirilmiş aktarım hızı üst sınırı

Birleşik Okuma ve Yazma Aktarım Hızı üst sınırını elde etmek için, okuma ve yazma işlemleri gerçekleştiren birden çok iş parçacığıyla daha büyük bir blok boyutu ve büyük bir kuyruk derinliği kullanın. 64 KB blok boyutu ve 128 kuyruk derinliği kullanabilirsiniz.

Sonraki adımlar

Yüksek performans için tasarlama makalemize geçin.

Bu makalede, prototip için mevcut uygulamanıza benzer bir denetim listesi oluşturursunuz. Karşılaştırma araçlarını kullanarak iş yüklerinin benzetimini yapabilir ve prototip uygulamadaki performansı ölçebilirsiniz. Bunu yaparak, hangi disk teklifinin uygulama performans gereksinimlerinizle eşleşebileceğini veya aşabileceğini belirleyebilirsiniz. Ardından üretim uygulamanız için aynı yönergeleri uygulayabilirsiniz.