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'yi karşılaştırma örnekleri sağlıyoruz.
Windows ve Linux için sırasıyla DiskSpd ve FIO yaygın karşılaştırma araçlarını kullandık. Bu araçlar, iş yükü gibi bir üretimi simüle eden 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'ler ile 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'yu ziyaret edin.
Aşağıdaki örnekleri izlemek için bir Standard_D8ds_v4 oluşturun ve VM'ye dört premium SSD ekleyin. Dört diskten üç tanesini ana bilgisayar önbelleğiyle "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ıtma
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 kullanacağı Okuma GPO'larının diske doğrudan değil, aslında ö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 parametre 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 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ğerdir).
Parametrelerin tam listesi için GitHub deposuna bakın.
En fazla yazma IOPS'si
Yazma işlemlerini çalıştırmak için 128 yüksek kuyruk derinliği, 8 KB küçük 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'sinin en fazla 12.800 yazma IOPS sınırını teslim ettiğini gösterir.
En fazla okuma IOPS'leri
Okuma işlemlerini çalıştırmak için 128 yüksek kuyruk derinliği, dört KB küçük 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'sinin en fazla 77.000 okuma IOPS sınırını teslim ettiğini gösterir.
Aktarım hızı üst sınırı
En yüksek okuma ve yazma aktarım hızı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ını, sıralı veya rastgele okuma ve yazma işlemlerini seçme esnekliğine sahiptir. Belirtilen G/Ç işlemlerini gerçekleştirmek için çalışan iş parçacıkları veya işlemler 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. Karşılaştırma 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'yu 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ş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 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.
En fazla okuma IOPS'leri
En fazla 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ş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 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, disk ve önbellek performansının bir bileşimidir.
En fazla okuma ve yazma IOPS
En fazla birleştirilmiş Okuma ve Yazma IOPS'sini almak 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,
- 128 yüksek kuyruk derinliği.
- 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'sini teslim ediyor. Bu, disk ve önbellek performansının bir bileşimidir.
Maksimum birleşik aktarım hızı
Birleştirilmiş 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 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, prototip uygulamadaki iş yüklerinin simülasyonunu yapabilir ve 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.