ESX Memory Kavramları ve Anlamları
ESX sanallaştırma platformunda en önemli parametrelerden biri de memory yönetimidir. İster cluster ortamı ister non cluster ortamı olsun her iki durumda da bellek yönetimi temelde değişmez. Sanal makinalarımıza ayırmamız gereken miktar, boşta kalan bellek miktarı ne kadarının kullanıldığı ve ne kadarının boşta kaldığı gibi bellek hesaplamaları sanallaştırma platformunun performans yönetiminin temelini oluşturur. İşte bu yönetimi daha verimli yapabilmek için ESX sanallaştırma platformunun memory kavramlarına ve onun anlamlarına hâkim olmak işimizi epey kolaylaştıracaktır. Ben de günlük yaşamımda edindiğim bilgiler ışığında derlediğim memory kavramları ve anlamlarını bir nevi sözlük mantığıyla paylaşmak istedim. Aslında buradaki kavramların çoğu başlı başına bir makale gerektiriyor ancak bu makaledeki amaç detaylı anlatım olmadığı için fazla detaya giremiyorum.
Genel Kavram ve Anlamları
Allocated Memory: Ayrılmış ya da atanmış memory demektir. Oluşturulan sanal makinalarımıza atadığımız bellek için kullanılır bu tanım. Ama bu tanım da kendi içerisinde “Idle” ve “Active” olmak üzere aşağıya detaylarını aktardığım 2 farklı tanıma ayrılır:
Idle Memory: Sanal makinaya atanmış olan memory’nin o an kullanılmayan yani boşta duran kısmıdır.
Active Memory: Sanal makinaya atanmış olan memory’nin o anda kullanılmakta olan kısmıdır.
Cache: En sık kullanılan uygulama ve servislere daha hızlı erişmek için memory’de tutulduğu alan.
Memory Overcommit: Sanal makinalara atanan toplam memory miktarının ESX host üzerindeki fiziksel memory miktarından daha yüksek olması durumudur. Bir örnek vermek gerekirse: 10 GB RAM miktarı bulunan bir ESX host üzerinde 3 GB memory’li 4 tane sanal makine olması ‘memory overcommit’ olduğu anlamına geliyor.
Memory Undercommit: Memory overcommitin tam tersi durumudur. Burada da sanal makinaların toplam bellek miktarının fiziksel host üzerindeki toplam bellek miktarının altında olması durumudur.
Transparent Page Sharing: ESX hostun fiziksel memory’sinde aşırı yük oluşması durumunda aynı host üzerinde bulunan sanal makinalarda çalışan uygulama ve servislerin aynı ya da birbirine çok yakın noktalar için ayrı ayrı memory page oluşturmaktansa tek bir tane oluşturur ve hepsine kullandırtır. Yani tekilleştirme (deduplication) işlemi yapılmakta ve bu işlem 60 dk. da bir yenilenmektedir. Mem.ShareScanTime adı verilen bu süre değiştirilebilir olduğundan istersek bu süreyi değiştirebiliriz.
Ancak bu özellik barındırdığı güvenlik açıklarından dolayı ESX 6.0’dan itibaren defaultta kapalı olarak gelmekte ve önceki versiyonları için ise patch yayınlandı. Konu hakkında detalı bilgiyi şu linkten edinebilirsiniz.
Memory Ballooning: Sanal makinalardan birine RAM ihtiyacı olduğunda ESX o an başka bir VM üzerinde bulunan idle memoryden bir kısım alıp ihtiyacı olan sanal makinaya atar ve ihtiyacı bittiğinde geri alır. İşte bu kavrama memory ballooning denir. Ancak bunun için sanal makinalara vm tools yüklü olmuş ve düzgün çalışıyor olması gerekmekte.
Compression: ESX üzerindeki boş memory miktarı azaldıkça sanal makinaların kullandığı memory page’leri sıkıştırarak boş alan kazanmaya çalışması işlemidir. Bunu memory’nin swap alanından harcamaması için yapar. Memory’nin swap’e düşmesi halinde performans sorunları yaşanacaktır.
Swapping: Memory’nin yetersiz kalması durumunda fiziksel disk üzerindeki belirli bir alanı RAM olarak kullanma işlemidir.
Summary Tabı Altındakiler
Memory: Bu değer sanal makinaya verdiğimiz memory miktarını gösterir.
Memory Overhead: ESX hostun bir sanal makina için o an harcadığı fiziksel memory miktarını gösterir. Sanal makinanın CPU, RAM, HDD, NIC gibi sanal donanımlarının ESX hostun fiziksel memory’sinde kapladığı alan da diyebiliriz. Bu miktara sanal makinaya atanan memory miktarı dahil değildir. Ne kadar çok bileşen varsa memory overhead miktarı da o kadar artar.
Consumed Host Memory: ESX host fiziksel memory’sinde sanal makine için harcanan memory miktarını göstermekte. Bu değere aynı zamanda memory overhead oranı da dahildir.
Active Guest Memory: Sanal makinanın işletim sistemi ve onun servis ve uygulamalarının o an kullandığı memory miktarını göstermekte. Consumed host memory’inin o an OS tarafından aktif olarak kullanılan kısmıdır. Bu değer işletim sisteminin kullanımına bağlı olduğu için sürekli değişkenlik göstermekte. VM power off durumunda bu kullanım sıfırdır.
Resource Allocation Tabı Altındakiler
Host Memory: Sanal makinanın toplam memory miktarı.
Consumed: Sanal makinanın toplam memory miktarından o anda ESX tarafından aktarılan memory miktarını gösterir. Buraya memory overhead miktarı dahil değildir.
Guest Memory: Sanal makinanın toplam memory miktarı.
Active: Sanal makinanın o an eriştiği ve kullandığı memory miktarıdır.
Resource Settings Altındakiler
Bu tanımlar sanallaştırma ortamının kaynak dağıtımıyla ilgilidir. Düşük kaynak ya da gün içerisinde kaynaklarda yaşanan darboğazlarda sanallaştırma sistemi eldeki kaynakları en iyi şekilde dağıtılmasını sağlayıp yapının devamlılığını sağlar. Aşağıdaki kavramlar kaynak dağıtımlarını gözlemleyebilmemizi sağlamakta.
Reservation: Bu sanal makinaya ayrılan en düşük memory miktarını belirtir. Başka bir sanal makinanın memory ihtiyacı için bu VM’den memory alınması durumunda bu VM’in memory değeri bu oranın altına düşmeyecek şekilde alınır.
Limit: Sanal makinaya ihtiyacı olması durumunda aktarılacak bellek miktarının üst sınırı. Bu VM’min memory ihtiyacı olması durumunda başka VM’den alınıp bu makinaya aktarılacak memory’nin sınırını belirtir.
Configured: Sanal makinaya verdiğimiz memory oranını belirtir.
Shares: Kaynak dağıtımında önceliklendirme görevini görmekte. Sanal sunucular kendi kaynaklarının 2 katı kadar kaynak alabilme limitleri bulunmakta ve defaultta tüm VM’ler bu oranla gelmekte. Defaultta bu değer tüm VM’ler için aynı olduğundan dolayı kaynak dağıtımında öncelik bulunmamakta. Önemli gördüğümüz VM’lerimizi bu değeri değiştirerek öncelik tanımlayabiliriz.
Overhead reservation: Yukarıda açıklaması bulunan summary tabındaki ‘Memory Overhead’ kullanımı için rezerve edilen miktarı belirtir.
çok güzel bir yazı teşekkürler.