Veritabanı Sunucunuzun Yaptığı IOPS ve Throughput’u Data Collector Kullanarak Bulmak

21 Kas by NURULLAH ÇAKIR

Veritabanı Sunucunuzun Yaptığı IOPS ve Throughput’u Data Collector Kullanarak Bulmak

Özellikle veritabanı sunucunuz için yeni storage alacağınız zaman alacağınız storage’ın sizin ihtiyaçlarınızı karşılayıp karşılamayacağını bilmeniz gerekir. Yada ihtiyacınızdan fazla bir storage almak istemezsiniz. Bu yüzden veritabanı sunucunuzun yaptığı IOPS’u ve throughput’u hesaplamanız gerekir.

 

IOPS(Input/Output Operations Per Second): Saniye yapılan okuma ve yazma sayısı

Throughput: Saniyede kaç mb okuma veya yazma yapılabildiğini gösterir. IOPS ve BlockSize(Allocation Unit Size) parametreleri kullanarak hesaplanır.

 

Throughput=IOPSxBlockSize/1024

 

BlockSize ile ilgili “Diskimizi maksimum performansta kullanabiliyor muyuz?” isimli makalemi okumanızı tavsiye ederim.

 

Üreticiler genelde stograge’ın throughput’unu hesaplarken BlockSize’ı 4K olacak şekilde hesaplarlar. Ama SQL Server için tavsiye edilen througput 64K’dır. Çünkü SQL Server okuma ve yazma işlemlerini genelde 64K olacak şekilde yapar.

 

Peki veritabanı sunucumuzun yaptığı IOPS’u nasıl hesaplayacağız?

 

Veritabanı Sunucunuzun Yaptığı IOPS’u hesaplamak için bir çok yöntem var. Ama bunlardan en doğrusu bu testi mevcut storage’ınızın üreticilerinden yapmasını istemek. Üreticiler mevcut storage’ınıza bir server bağlayarak 1 ay boyunca bu server’a bağlı uygulamaların yaptığı IOPS’u hesaplayarak size ihtiyacınız olan IOPS değerine sahip bir storage önerebilirler.

 

Çoğu kurum ve firma storage alırken bu işlemi yapmıyor. Biz bu makalede sadece sunucumuza bakarak ne kadar IOPS yaptığımızı ve storage tarafında ne kadar IOPS’a ihtiyacımız olacağını hesaplayacağız. Yöneticiniz ya da kurumunuzdaki storage uzmanınız size veritabanı sunucusu için ne kadar IOPS kapasitesine sahip bir storage gerekir diye sorduğunda bu makaledeki adımları takip ederek cevap verebilirsiniz.

 

IOPS deyince akla Frontend IOPS ve Backend IOPS gelmelidir.

 

Frontend IOPS sizin sunucu tarafında gördüğünüz IOPS’tur. Backend IOPS ise storage tarafında hissedilen IOPS’tur.

 

Öncelikle sunucudaki veritabanına bağlı tüm disklerin Frontend IOPS’unu hesaplamamız gerekir. Bu hesaplamayı yapmak için perfmon counter’larını kullanacağız.

 

Araç çubuğuna perfmon yazarak enter’a bastığımızda karşımıza aşağıdaki gibi bir ekran gelmesi gerekir.

 

 

Bu ekranda Performance Monitor’e tıklıyoruz. Karşımıza gelen ekranda yukarda artı işaretine tıklıyoruz.

 

 

Karşımıza gelen ekranda aşağıdaki counter’ları seçiyoruz ve bu counter’lar seçili iken veritabanımız hangi diskte yada hangi disklerde tutuluyorsa Instance of selected object’in altından o diskleri seçerek Add diyoruz.

 

Disk Reads/Sec

Frontend Read IOPS

Disk Writes/Sec

Frontend Write IOPS

Disk Transfer/Sec

Frontend Read ve Write IOPS’un toplamı

 

 

Bu seçenekleri ayarladıktan sonra karşımıza aşağıdaki gibi bir ekran gelecek. Bu ekrandan anlık olarak takip edebilirsiniz. Örneğin aşağıdaki resimde Disk Writes/Sec’ın maksimum değeri 1087 olmuş.

 

 

 

Tabi bu şekilde sadece anlık olarak izleyebilirsiniz. Genel bir kanı oluşabilmesi için bu değerleri sürekli inceleyen collector’lar oluşturmanız gerekir. Anlık olarak izlememizi sağlayan biraz önce yaptığımız bu işlemin arka planda sürekli çalışmasını sağlayan iş olarak düşünün.

 

Peki Data Collector’ları nasıl oluşturuyoruz. IOPS’u izleyen bir data collector oluşturalım. Aşağıdaki gibi Data Collector Sets’in altında User Defined’a sağ tıklıyoruz. New ve ardından Data collector Set seçimlerini yapıyoruz.

 

 

Karşımıza gelen ekranda data collector set’imize bir isim veriyoruz ve Create manually seçeneğini seçiyoruz.

 

Ben IOPS ismini verdim. Next diyerek ilerliyoruz.

 

 

Gelen ekranda aşağıdaki gibi Create data logs kısmından Performance counter’ı seçip next diyoruz.

 

 

Gelen ekrandan Add diyoruz ve makalenin başında seçtiğimiz counter’ları Add diyerek ekleyerek Next diyoruz.

 

 

Aşağıdaki ekrana gelene kadar next diyerek hiçbir değişiklik yapmadan ilerliyoruz. Aşağıdaki ekranda da Start this data collector set now’ı seçerek Finish diyoruz.

 

 

Bu collector arka planda 15 saniye bir istenilen değerleri sistemden çekerek logluyor. Normalde doğru sonuçlar almak için bu loglama işlemini en az 1 ay yapmanız gerekir. 1 ay geçtiğini düşünerek aşağıdaki gibi data collector’ı stop diyerek durduruyorum.

 

 

Durdurma işleminden sonra sağ tıklayarak Latest Report diyorum.

 

 

 

 

Açılan rapordaki değerlerin maksimum ve average değerlerini inceliyorum. Şahsen ben storage alacağım zaman maksimum değerleri baz alırım. Çünkü sistemin gerçekten ihtiyacı olan maksimum IOPS’u elde etmek isterim. Tabi bu kurumunuzun bütçesi ile alakalı bir durum. Daha az performans daha az maliyet demektir. Maksimum değerleri alırsanız Read ve Write’ların toplam değeri Disk Transfer/Sec ile uyuşmayacaktır.  Disk Reads/Sec ve Disk Writes/Sec counter’larının average değerlerinin toplamı Disk Transfer/Sec counter’ının average değerine eşit olacaktır.

Bu rapordaki maksimum değerleri alıyoruz. Benim örneğimde bu değerler şu şekilde.

Disk Reads/Sec

11.877(onbir nokta sekiz yüz yetmiş yedi)

Disk Writes/Sec

156.124

Disk Transfer/Sec

169.440

 

Bu aldığımız değerler Frontend IOPS değerleri

 

Backend(Storage tarafında hissedilen Gerçek IOPS)’u ise aşağıdaki gibi hesaplıyoruz. RAID yapısının RAID 5 olduğunu düşünelim. Penaltı Değeri, RAID yapısına göre storage tarafında yapılan IOPS’u azaltabilen bir değerdir. Çünkü RAID 0 haricindeki tüm RAID yapılarında veri birden fazla diske yazılır. RAID yapıları ile ilgili “RAID Yapısı” isimli makalemi okumak isteyebilirsiniz.

 

Gerçek IOPS=(Toplam IOPS x Read Yüzdesi)+(Toplam IOPS x Write Yüzdesi x Penaltı Değeri)

 

Formüle gerçek değerlerimizi yerleştirelim.

 

Toplam IOPS=169

Read Yüzdesi=100*11/169=%6,5=0.065

Write Yüzdesi=%93,5=0.935

Penaltı Değeri=4

 

Gerçek IOPS=(169×0.065)+(169×0.935×4)=10.985+632.06=643.045

 

Gerçek IOPS’u hesaplayan bir excel’im var. Makaleye yorum yapanların mail adresine bu excel’i gönderebilirim.

 

Aşağıda RAID yapılarının penaltı değerlerini gösteren tabloyu bulabilirsiniz.

 

Raid Yapısı

Penaltı Değeri

Raid 0

0

Raid 1/10

2

Raid 5

4

Raid 6

6

Raid DP

2

 

Önemli: Veritabanı sunucunuzun yaptığı toplam IOPS ve throughput’u hesaplamanız için veritaban’larının kullandığı tüm disklerin IOPS ve throughput değerlerini hesaplayıp toplamanız gerekir.

 

Bu makaleyle ilgili olarak aşağıdaki makaleleri okumanızı tavsiye ederim.

 

SQL Server Sunucuların Network Konfigurasyonu ve Always ON Senkronizasyonunu Farklı Bir Ethernet Kartından Yaptırmak“,

SQL Server Sunucuların Kullandığı SAN Altyapısı ve Uygulama Sunucusundan Gelen Bir Query’nin Hikayesi“,

RAID Yapısı

Loading

One Comments “Veritabanı Sunucunuzun Yaptığı IOPS ve Throughput’u Data Collector Kullanarak Bulmak

  1. Elinize sağlık. Çok faydalı bir içerik olmuş. Wİndows harici IOPS değeri hesaplayan tool öneriniz var mıdır? Bir de ilgili exceli paylaşırsanız sevinirim. Teşekkürler.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir