Random & Sequential I/O

Bu terimleri storage tarafında çalışıyorsanız çok sık duyarsınız. Peki random veya sequentical erişim yada I/O nedir? Kısaca bunu izah etmeye çalışalım.

Storage üzerinde depolanan veriye erişme yöntemini ifade ederler.

  • Random, disklerde tutulan veriye (yada bir dosyaya) herhangi bir sıra gözetmeksizin erişimdir. Yani dosyanın ortasındaki verinin yazılı olduğu bir bloğa da erişirsiniz ardından dosyanın diğer bir bloğuna erişmeyi denersiniz. Bir veriye düzensiz erişim olarakta adlandırabiliriz. Bu işlem her seferinde eğer mekanik disk kullanıyorsanız, disk kafası ve plakalar farklı noktalara hareket ettirilmesi demektir.
  • Sequential, ise disklerde tutulan bir dosyanın düzgün bir sıra ile okunmasıdır. Yani başından sonuna kadar bloklara sırayla erişimdir. Disk kafası ve plakalar daha az hareket ettirilir. Çünkü adım adım ve birbirine yakın yazılmış bir veriden bahsediliyor demektir.

Bu iki erişim yöntemini de biraz daha detaylandıralım.

Bir veriye erişmek yada onu disklerden sırayla yani sequential olarak okuma her zaman random (rastgele olarakta adlandırabilir) erişmekten daha hızlıdır, daha çabuk yanıt alırsınız. Aşağıdaki şekilde bu konuyu çok daha net ifade etmektedir.

Ortamınızda mekanik diskler varsa, random access talepleri yoğun bir şekilde geldiğinde aldığınız yanıtların süresi daha da uzayacaktır. Çünkü mekanik disklerde yazılı bir veriyi, disk head (kafa) gelen komut doğrultusunda doğru track ‘i bulup ve disk plakasını da doğru sektörü hizalamak için plakayı döndürüp, okuması gerekir. Bu bir mekanik işlemdir. Doğru track’in bulunması (seek time) ve sonrasında verinin yazılı olduğu doğru sektörün okunması için plakanın döndürülmesi (rotation latency) işlemleri haliyle veriye erişim talep eden kullanıcıya yada sisteme gecikme olarak yansıyacaktır. Bu işin doğası gereğidir.

Peki bir bloğa erişildi ama örneğimizde ne dedik? “Random Access”, yani talep bir bloğa erişimle bitmedi, mesela açmak istediğimiz dosya 5 Mb’lık bir dosya, dolayısıyla aynı dosyanın diğer bloklarınada erişmemiz gerekiyor. Ne olacak? Disk head tekrar bir track araması yaptı, sonra yine plaka hareket ettirildi ve blok tespit edildi, veri okundu. Bu işlem böylece tekrar tekrar uygulandı. Yukarıdaki resimi göz önüne getirdiğinizde kafa kaç kez hareket etmeli ve plaka kaç kez döndürülmeli bir düşünün!

Ancak bu örnekte erişim sequential access olsaydı? Bulunan o track’te hareket eden plakadaki sektörler sırayla okunacak ve talep sahibine daha hızlı yanıt dönülebilecekti.

Aslında sadece veri yazılırken bu şekilde dağınıkta yazılmıyor. Sequentical yazılmış bir veride zaman içerisinde verideki güncellemelerden dolayı disklerde farklı bloklara yazılıyor, dolayısıyla fragmentasyona uğruyor yani dağınık bir hala geliyor. NetApp ‘ta dağılan bu verileri düzenlemek için arka planda “Reallocation” gibi işlemler uygulansa da dediğim gibi işin doğası gereği bunun önüne geçilemiyor. Bırakın storage tarafını evde kullandığımız bilgisayarlarımızda da eğer mekanik disk varsa aynı durum söz konusudur. Bu yüzden defrag işlemleri kullanıcılara öneriliyor.

Not : Burada bir dip not belirtmek istiyorum. Eğer sanal sunucularınız NetApp storage üzerinde host edilen datastore’larda çalışıyorlar ise, Windows sunucularınızda defrag işlemini sakın schedule etmeyin, bu işi storage seviyesinde yapın, performansınıza olumsuz etkisi olabiliyor.

Yoğun random access gerektiren ortamlarda mekanik disklerin bu çalışma mantığından dolayı gecikmeleriniz (latency) 4-5 ms ‘inin altına inmiyor. Çözüm yoğun random write/read durumlarında SSD disk kullanımıdır. Bir SSD disk 15K rpm ‘lik bir SAS diskten yukarıda anlatılan işlemlerden dolayı kesinlikle cok daha iyi sonuç verir. Çünkü SSD diskler mekanik disk değildir.

Aslında bu makale ile SAS / SATA diskleri de iyice öldürmek istemedim, sanki sonlara da doğru bu anlam ortaya çıkar gibi oldu. Amacım sadece arka planda neler oluyor ve random/sequential terimlerini kafanızda biraz canlandırmak.

Performans istediğinizde, iyi konfigüre edilmiş bir ortamda SAS disklerde 4-5 ms gibi endüstride kabul görmüş bir değer ile işinizi görebiliyor. Ama 1 ms ve altında bir latency ile çalıştırmanız gereken bir uygulamanız varsa mekanik disklerin çalışma mantığından dolayı SSD tercih edebilirsiniz.

Biraz karışık gibi görünen bu konuyu örneklerle ve kendi anladığım şekilde ifade etmeye çalıştım. Keyifle okumanız dileğiyle.

Storage Disk Types : Link

tolgaasik

Share

Leave a Reply

Your email address will not be published. Required fields are marked *

Post comment