Sunucu Sanallaştırma Platformlarında Bellek Yapılandırması

By | 14 December 2016

Bilgisayarların ilk var oluş tarihinden itibaren değişmeyen en temel donanım gereksinimi Bellekler ‘dir. Bu belleklerin kullanıldığı bilgisayarlar, masanızın üzerinde durmakta, dizinizin üzerinde oturmakta, bazen cebinizde seyahat etmekte, bazen ise elinizde tuttuğunuz ve parmaklarınızı üzerinde kaydırdığınız aygıtınız olmakta. Belirtmek istediğim kullanım alanı çok geniş bilgiyi sayan-saklayan her aygıtın en temel bileşenidir.

Özgür ansiklopedi Bellek için aşağıdaki bilgiyi bizlere aktarmakta.

Bellek bilgisayarı oluşturan 3 ana bileşenden biridir. (merkezi işlem birimi – bellek – giriş/çıkış aygıtları). İşlemcinin çalıştırdığı programlar ve programa ait bilgiler bellek üzerinde saklanır. Bellek geçici bir depolama alanıdır. Bellek üzerindeki bilgiler güç kesildiği anda kaybolurlar. Bu nedenle bilgisayarlarda programları daha uzun süreli ve kalıcı olarak saklamak için farklı birimler (sabit disk – CD – DVD) mevcuttur.”

Bu yumuşak girişten sonra biraz derinlere inelim. Fiziksel platformlarda olmazsa-olmaz ana bileşeni olan Bellekler, sanallaştırma platformlarında çalışan Sanal bilgisayarlar içinde olmazsa-olmaz ana bileşenlerinden bir tanesidir.

Bellek ihtiyacının belirlenmesi için,

  • İşletim sisteminin çalışabilmesi için gerekli olan en düşük bellek,
  • Üzerinde çalışacak olan uygulamaların ihtiyaç duyduğu en düşük bellek
  • Hizmet edecek olduğu platform için ihtiyaç duyulan en düşük bellek (kim bağlanacak, ne kadar süre bağlanacak, eş zamanlı kaç kişi bağlanacak )

Gereksinimlerini toplar ve en yüksek kullanım seviyesini ön görür ve sonrasında ortalamasını alır ve ihtiyaç duymuş olduğumuz toplam belleği belirlerdik.

Hesaplaması çok mu karışık? Bence değil, makalenin ilerleyen bölümlerinde hesaplama yapmak gerçekten karışacağı için hesaplama formülünü bilerek karışık vermek ve sizleri makalenin ilerleyen bölümlerine hazırlamak istedim. Makalenin sonunda doğru bellek atamasını ve yapılandırmasını yapacak olan her IT-Pro ‘yu matematik dalında Nobel ödülüne aday göstereceğiz (:

Bugün, mevcut mimariler çok karışık, rekabet içinde ve sürekli yeni özellikler eklenmekte. Sunucularımız ise hiç olmadığı kadar iş kritik ve bir an bile durmaya tahammülleri bulunmamakta ve her an sürekliliğini devam ettirmeye mecburlar. Ve onlar hizmet ederlerken bizler onları eş zamanlı iyileştirmeye görevliyiz.

Bu makalemiz içinde bu iş kritik sanal sunucularımızı bir an bile durdurmadan nasıl bellek yönetimini yaparız Windows Server 2016 Hyper-V ile birlikte gelen Runtime Memory Resize yani sanal makineye canlı çalışır durumdayken nasıl bellek artırımını yapabiliriz veya düşürebiliriz, bu operasyonu hangi sanal makineler için yapabiliriz sorularını ve çok daha fazlasını cevaplamaya çalışacağız.

Bu makale içinde;

Hyper-V Bellek Kullanımı ve Dinamik Bellek Yapılandırması

Hyper-V ile ilk tanışmış olduğumuz Windows Server 2008 ve Hyper-V 1.0 sürümü, şimdilerde kullanmış olduğumuz Windows Server 2016 Hyper-V 5.0 sürümü kadar zengin özelliklere sahip değildi. İlk Hyper-V 1.0 yetenekleri çok sınırlı olduğu için üzerinde çalışan sanal makinelere çok özel yapılandırmalar gerçekleştirmiyorduk. Sanal makinelerin ihtiyaç duymuş olduğu sanal belleği hesaplarken yukarıda belirtmiş olduğumuz basit formülü kullanıyor ve her bir sanal makinenin ihtiyaç duymuş olduğu bellek atamasını gerçekleştiriyorduk. Temel kuralımız, bir sanal makineye sanal bellek ataması yaparken ihtiyaçlarını iyi analiz etmek ve en fazla atanacak sanal bellek boyutunun Fiziksel Host olan Hyper-V ‘nin sahip olduğu fiziksel belleği geçmemesi gerekmekteydi. Hyper-V nin sahip olduğu fiziksel belleğin üzerinde bir sanal bellek atamasını zaten gerçekleştiremiyorduk.

Şimdilerde bunu yapmamız mümkün olsa bile önerilmeyen bir sanal makine sanal bellek ataması olacaktır.

Bugüne kadar yapmış olduğumuz formül, Windows Server 2008 Service Pach 1 Hyper-V 2.0 ile biraz değişti. Hyper-V 2.0 in yetenekleri gelişti ve Dynamic Memory özelliği bu versiyon ile birlikte desteklenmeye başladı.

Hyper-V 2.0 Dynamic Memory

Hyper-V 2.0 Dynamic Memory

Hyper-V 2.0 ile birlikte bir sanal makinenin başlangıç belleğini en az ihtiyaç duyulan bellek olarak tanımlardık. Bazı durumlarda bazı sanal makineler ilk başlangıç işlemi sırasında çok fazla bellek ihtiyacı duyar ve bu bellek sanal makine üzerinde yoksa sanal makine başlatılamazdı. Bu problem nedeniyle dinamik bellek kullanacak birçok sanal makineye ilk başlangıç belleği olarak sabit durumda ihtiyaç duymuş olduğu bellekten fazla bellek ataması yapardık.

Karışık oldu, bir senaryo ile toparlayalım.

Sanal makinemiz sabit durumda çalışırken 512 MB belleğe ihtiyaç duymakta. Bazı özel durumlarda (yedek alma işlemi düşünülebilir) işlem yükü artıyor ve bu sunucu üzerinde 1,500 GB belleğe ihtiyaç duyuyor. Hyper-V 2,0 üzerinde çalışan bu sanal makineye başlangıç belleği olarak 512 ataması yaptık ve bu atama aynı zamanda minimum bellek olarak sisteme tanıtıldı. En fazla kullanabileceği bellek olarak ise 2048 MB bellek atamasını yaptık. Bu sanal makine ilk açılışta yüksek belleğe ihtiyaç duyacak ve 512 MB bellek ile açılamayacak, hata verecektir. Bu sebepten ötürü bu sanal makineye en az bellek olarak 1024 MB ataması yapmamız gerekmekte. Bu atamış olduğumuz bellek Hyper-V 2.0 da başlangıç belleği ve en az bellek olarak sisteme tanıtılmaktadır. Sanal makinemizin sabit durumda kullanması gerekli olan bellek 512 MB olduğuna göre fazladan, ihtiyaç duymadığı 512 MB bellek bu sanal makineye atanmış oluyordu.

Hyper-V 3.0 Dynamic Memory

Hyper-V 3.0 Dynamic Memory

Hyper-V 3.0 ile birlikte gelen yeni bir özellik bu ihtiyaç için çözüm üretti. Hyper-V 2.0’ da Başlangıç bellek, aynı zamanda minimum bellek olurken Hyper-V 3.0 başlangıç bellek ile minimum bellek bir-birinden ayrıldı.

Bizler yukarıda senaryo haline getirmiş olduğumuz Hyper-V 2 için olan problemin Hyper-V 3,0 sürümende nasıl çözüldüğünü inceleyelim.

Startup Ram, Başlangıç Belleği olarak sanal makineye atamış olduğumuz bellektir. Bilinir ki, birçok sistem ilk açılışta ihtiyaç duymuş olduğu bellek, sabit durumda ihtiyaç duymuş olduğu bellekten daha fazla belleğe ihtiyaç duyar. Bu bölüme atamış olduğumuz bellek sanal makinenin ilk açılışta ihtiyaç duymuş olduğu bellektir.

Dynamic Memory özelliğini aktif duruma getirmezsek bu Startup RAM aynı zamanda sanal makineye atanan bellek olacaktır.

Enable Dynamic Memory ‘i aktif duruma getirdiğimiz zaman Hyper-V 3,0 ile birlikte Minimum RAM ve Maximum RAM bölümleri aktif duruma gelmektedir.

Minimum RAM, sanal makinenin açılma işlemi tamamlandıktan sonra ihtiyaç duymuş olduğu sabit durum bellek ihtiyacı oluyor. Sanal makinemiz, ilk açılışta tanımlanan 1024 MB Bellek açılma işlemi sırasında kullanacak ve açılma işlemi tamamlandıktan sonra sanal makinemiz sabit durumda ihtiyaç duymuş olduğu 512 MB Bellek yetecekse Hyper-V Host dan almış olduğu fazladan 512 MB belleği geri verecektir.

Maximum RAM ise sanal makinenin ihtiyaç durumunda kullanacak olduğu en fazla Bellek gereksinimini atıyoruz. Yani yedek durumu, zamanlanmış bir görevin çalışması durumunda sanal makineye atanacak olan en yüksek bellek olarak bilmeliyiz.

Dikkat! Hyper-V 3.0 sürümünden beri bir sanal makineye 1 TB boyutunda bellek ataması yapılabilmektedir. Dikkat ederseniz dinamik bellek yapılandırmasını etkinleştirdiğiniz zaman Maximum ram boyutu 1048576 MB yani 1 TB olarak işaretlenmekte. Hiçbir sanal makineniz için eğer ihtiyaç yoksa en fazla bellek kullanım boyutunu bu boyutlarda bırakmayalım. Hyper-V Host veya bu şekilde yapılandırılmış bir sanal sunucuya girecek olan bir virüs ve benzeri bir yazılım sistemin durmasına neden olabilecektir. Gerçek ihtiyaçlarımız hangi boyutta ise bu değer ile değiştirmeniz daha stabil bir platforma sahip olmanız anlamına gelecektir.

Memory Buffer özelliği ise Fiziksel Host ‘umuz üzerinde bulunan toplam belleğin sanal makinemiz için ne kadarının hazırda tutulacağını belirtiyoruz. Dinamik Bellek olarak yapılandırmış olduğumuz sanal makinelere ihtiyaç durumunda atanması için fiziksel hostumuz üzerinde bekleyen bellektir. Varsayılan değer %20 ‘dir. Sanal makinenin ihtiyaç durumuna göre bu oranı değiştirebilmekteyiz.

Memory Weight özelliği ise İş Kritik bir sanal makinemizin, bir başka daha az iş kritik olan sanal makinemize göre farklı olduğunu Hyper-V Hostumuza belirtiyoruz. Bu nasıl çalışıyor, aynı yapılandırmaya sahip iki tane sanal sunucumuz var. Yukarıda belirttiğimiz bütün değerler aynı. Her iki sanal sunucum aynı zaman diliminde Hyper-V Host ‘dan Memory Buffer olarak ayrılan belleği istediği zaman Hyper-V Host ‘un hangi sanal makineye daha önce bellek atamasını yapacağını belirtiyoruz.  


Dinamik Bellek Kullanan Sanal Makineler için Smart Paging File Yapılandırması

Bir sanal makinenin ilk açılma işlemi sırasında sabit durum çalışmasına göre daha fazla kaynak kullandığını belirttik.  Dinamik bellek yapılandırmasında yaşayacak olduğumuz dar boğazların önüne geçebilmek için Windows Server 2012 ile birlikte Smart Paging yapılandırma özelliği geldi. Smart Paging teknolojisi özellikle dinamik bellek yapılandırdığımız ve ilk açılma işlemi sırasında çok fazla bellek ihtiyacı olan sanal makineler için dikkatli yapılandırmamız gerekmektedir.

Hyper-V Startup Ram

Hyper-V Startup Ram

Smart Paging teknolojisin çalışma mantığı, bir sanal makine ilk açılış işlemi sırasında barınmış olduğu Hyper-V Host üzerinde yeterli fiziksel bellek yoksa sanal makinenin açılabilmesi için Hyper-V sabit depolama alanı üzerinde geçici dosyalar oluşturur ve sabit diski bir bellek gibi kullanır.

Smart Paging Files

Smart Paging Files

Smart Paging özelliği dinamik bellek kullanılan her sanal makinede ayrı-ayrı, sanal makine bazlı yapılmalıdır. Bu özellik yanlış yapılandırıldığı zaman sanal makinenin performansına etki edecektir. Biliyorsunuz ki bellekler, ilk günden beri sabit depolama alanlarına göre daha hızlı bir veri yazma birimi olarak üretilmişlerdir. Bir sanal makine için en düşük bellek değerini, sanal makine açılış belleğinden daha düşük yaptığımız zaman Hyper-V Smart Paging özelliğini kullanmak zorunludur. Yani dinamik bellek yapılandırılan sanal bir makine, fazladan belleğe ihtiyaç duyduğu zaman Hyper-V bu sanal makine içine smart paging verilerini oluşturmakta. İşlem ilk önce sanal makinenin geçici belleğine değil Hyper-V Host üzerinde tanımlanan sanal makine için ayrılmış olan sabit depolama alanına yazılmakta. Bir sanal makine üzerinde dinamik bellek yapılandırırken bu sebepten ötürü Smart Paging File dizininin daha hızlı bir depolama alanı üzerinde çalıştığından emin olmalıyız.

Bellek ve Sabit Depolama birimleri üreten Kingston firması Memory and SSD Optimization makalesinde bu önemi vurgulamaktadır. Diğer üreticilerinde benzer bilgilendirmeleri bulunmaktadır.

Memory Buffer ve Memory Weight yapılandırması Smart Paging yapılandırması ile daha bir önem kazanmıştır. Yapacak olduğumuz yanlış bir yapılandırma sonrası Hyper-V Host üzerinde hazır durumda bellek kalmaya bilir. Birçok sanal makine eş zamanlı olarak dinamik bellek isteyebilir. Smart Paging Bu noktada önem kazanmaktadır. Hyper-V Host üzerinde kullanılabilir herhangi bir bellek kalmadığı zaman ve sanal makine dinamik belleğe ihtiyaç duyduğu zaman Smart Paging devreye girmekte ve Smart Paging lokasyonunu bir fiziksel bellek gibi kullanmaktadır.

İlk açılma işleminde ihtiyaç duyulan bellek gereksinimi ortadan kalktığı zaman Smart Paging verileri otomatik olarak silinmektedir.

Bu özellik daha çok Sanal Masa Üstü Platformları için, Provisioning teknolojisi ile çalışan sanal bilgisayarlar için geliştirilmiştir.


Smart Paging File ve Page File Farkı Nedir?

Virtual Memory olarak bildiğimiz Page file ile Smart Paging File karıştırmayalım. Sorulan soruların en başında gelen ve birbirine karıştırılan iki farklı konudur.

Virtual Memory Smart Paging File

Virtual Memory Smart Paging File

Her Windows işletim sistemi üzerinde yapılandırılması opsiyonlu önerilmiş olsa bile kişisel görüşüm her Windows işletim sistemi üzerinde yapılmış olmasını beklemekteyim. Doğru yapılandırma sonrasında ilgili Windows işletim sisteminde performans kazandıracaktır. Bizim konumuz ile birebir ilgili olmadığı için How to determine the appropriate page file size for 64-bit versions of Windows sayfasını incelemenizi önermekteyim.

Smart Paging File ile Page File birbirine karıştırmayalım dedik. Altın kuralımız Sanal makinelerimize fiziksel bir makineymiş gibi davrandığımız zaman bu karışıklığı yaşamayacağız.

Yapmamız gerekli olan çalışma

  1. Hyper-V Host üzerinde Page File yapılandırması yapılmalı.
  2. Hyper-V Host üzerinde çalışan her bir sanal sunucunun işletim sistemi üzerinde page file yapılandırmasını yapılmalı.
  3. Sanal sunucumuz üzerinde Smart Paging File uygulamasını En az bellek gereksinimi ile ilk açılışta ihtiyaç duyulan bellek yapılandırılması farklı yapılandırılmış sanal sunucularda yapmamız gerekmektedir.
  4. Son madde Hyper-V dışı bir madde olsun, her bir sunucuyu sanal-fiziksel ayırt etmeksizin bütün Windows sunucularımız üzerinde Page File yapılandırması yapılmalı.

Page File ve Smart Paging yapılandırırken yapılandırma formülünü aynı düşünebiliriz. Her iki yapılandırma için ayıracak olduğumuz file boyutu bellek boyutu X 1,5 GB.

Her iki dizin sabit depolama alanından ayrı bir yerde ve daha hızlı bir depolama birimi üzerinde çalışması gerekmektedir.

Page File Kapatılabilir ama kapatmayın.

Smart Paging File kapatılmaz ama yapılandırmanız gerekmektedir. Varsayılan dizin üzerinde oluşur. Her iki özelliği yapılandırmayı ihmal etmeyelim.

Smart Paging Files on System Disk

Smart Paging Files on System Disk

Smart Paging File dizini mutlak suretle hızlı bir depolama alanı üzerinde olması gerekmektedir. SSD ve çok diskle yapılandırılmış bir disk kümesi üzerinde yapılandırılmalı. Bu alan ne kadar yavaş olursa sanal sunucumuz dinamik bellek kullandığı zaman o oranda yavaşlama gösterecektir. Smart Paging File dizini system diskinin barınmış olduğu bir depolama alanı üzerinde olmaması gerekmektedir.

 

NUMA ve Dinamik Bellek İlişkisi

Windows Server 2016 Fiziksel Sunucusu 24 TB Fiziksel Bellek ve 512 Adet mantıksal işlemci desteklemektedir. Windows Server 2016 ile birlikte Hyper-V 5,0 üzerinde çalışan bir sanal makine 16 TB Sanal Bellek ve 240 Adet Sanal İşlemci ile çalışabilmektedir.

Daha dün, Windows Server 2012 R2 işletim sisteminde bu değerler yarı/yarıya dan daha azdı. Virtual Processor x.3,75, Physical Memory x.6 ve Virtual Memory ise x.16 kat büyüme gösterdi ve gelecek nesil işletim sistemlerinde daha büyük kapasitelere sahip olabileceğini biliyoruz.

Fiziksel Sunucular üzerinde olan Numa ilişkisi Windows Server 2012 ile birlikte bizler tanıştık ve artık fiziksel Numa ile birlikte Sanal Numa ‘yı yapılandırabilir olduk.

IBM Server Numa Architecture

IBM Server Numa Architecture

Yukarıda IBM x3850 X5 Sunucusu için verilmiş bir mimari bulunmakta. Mimari dikkatli bir şekilde bakarsanız Intel Xeon CPU 1 işlemcisi ana kart üzerinde Memory Card 1 ve Memory Card 2 yuvalarını kullanmakta. Anakart üzerinde bulunan diğer işlemciler ise kendileri ayrılmış Memory Card ‘ları kullanmaktalar.

Anakart üzerine bakarsanız Intel Xeon CPU1 1 Local QPI Channel üzerinden (Kırmızı bağlantılar) memroy card 1 ve 2 yuvalarını kullanmakta. Intel Xeon CPU1 diğer memory card yuvalarını ise Remote QPI Channel üzerinden kullanmaktadır.

Memory Card, işlemci ve QPI Bağlantı yolları ile girişi yapmış bulunuyoruz. Gelişme ve sonuca birlikte gidelim. IBM x3850 X5 sunucusu üzerinden ilerleyelim. Bu sunucumuz herhangi bir genişletme birimi kullanılmadığı zaman;

  • 32 Adet DIM
  • 4 adet fiziksel işlemci
  • Her bir işlemci için 2 adet Memory Card Yuvası

Olduğunu görebiliyorsunuz. IBM X3850 sunucusu toplam 2 TB fiziksel belleği (genişletme yuvası kullanılmadan) desteklemektedir.

Gereksinim, bu sunucu üzerinde tek bir tane fiziksel işlemci ve 2 TB Fiziksel Belleğim olacak. Bu gereksinime göre soru şu;

  • 32 adet 64 GB Fiziksel bellek mi takarsam (sunucu üzerinde bulunan bütün DIM Slotları dolduracağım ve ihtiyaç duyulan 2 TB Belleğe erişeceğim) daha performanslı olur?
  • 8 tane 256 Gb Bellek mi (Ana kart üzerinde her bir işlemci için ayrılmış 2 adet memory card yuvası var ve toplam 8 adet DIM yuvası 2 TB belleğe 8 tane 256 GB bellek ile erişebilmekteyim) takarsam daha performanslı olur?
Nehalem Architecture

Nehalem Architecture

Sorunun cevabı için Nehalem mimarisinden destek alıyoruz. Cevabı diyagram içinde bulunan Intel QPI bağlantıları vermekte. Makale başında Local QPI ve Remote QPI ile gitiş yapmıştık.

Eğer biz tek bir tane işlemci ve 64 GB boyutunda toplam 32 Adet Fiziksel Bellek kullanırsak işlemcimiz Memory Card 1 ve Memory Card 2 yuvaları içinde bulunan Belllekleri Local QPI Channel üzerinden kullanacaktır. Diğer Memory Card yuvalarında bulunan belleklere diyagramda görülen Intel QPI bağlantı yollarını yani Remote QPI Channel kullanacaktır. İsminden anlaşılacağı üzere Local QPI Channel daha hızlıdır Remote QPI Channel yollarından ve bu sebepten ötürü Memory Card 1 ve Memory Card 2 haricindeki diğer Memory Card ‘ larına takılı belleklerden üst seviyede verim alamayacağız.

Yani tek bir tane işlemcimiz olup ihtiyacımız 2 TB bellek ise en üst seviye performansı yakalayabilmemiz için 8 tane 256 GB Bellek kullanmalıyız. Bu dizayn ile İşlemcimizin Memory Card 1 ve Memory Card 2 ‘ye erişimi Local Access ile yapmasını sağlıyoruz ve Remote Access kullanmayarak performans elde etmiş oluyoruz.

Sunucu ve teklifleri alırken dikkat edecek olduğumuz önemli konudur.

NUMA Nedir?

Non-Uniform Memory Access yani tek düzen olmayan, dağınık bellek erişimi olduğunu söyleyebiliriz.

Hyper-V Numa Spanning

Hyper-V Numa Spanning

Windows Server 2012 Hyper-V 3.0 ‘a kadar Numa Spanning özelliği yoktu. Büyüyen donanım kaynakları ve büyük kaynaklara ihtiyaç duyan kurumlar artık sanal platformlar içinde Numa mimarisine ihtiyaç duyuyorlardı. Hyper-V 3.0 ile birlikte Numa Spanning özelliği geldi ve bu özellik varsayılan olarak aktif durumda. Kapatmak isterseniz eğer Hyper-V Host üzerinde Hyper-V Setting bölümünden Numa Spanning kutusunu temizlemeniz yeterlidir.

Bu bölümde yapılan değişiklik Hyper-V Host üzerinde çalışan bütün sanal makinelere etki etmektedir. Yapılan değişikliğin sanal makine seviyesinde uygulanabilmesi için sanal makineyi kapatmalı ve sonrasında Hyper-V Host üzerinde Hyper-V services i yeniden başlatmanız gerekmektedir.

Hyper-V; bir sanal makine başladığı zaman sanal makinenin başlamasından itibaren sanal makine için ayrılan bütün belleği tek bir fiziksel Numa Node üzerinden vermek ister. Eğer tek bir Numa Node üzerinde sanal makine için yeterli bellek bulunmuyorsa bu sefer diğer Numa Node üzerinden bellek ayırır. Bu işleme NUMA Spanning denilmektedir.

Virtual Machine Numa Configuration

Virtual Machine Numa Configuration

Sanal makine seviyesinde Numa Configuration bölümünden Hyper-V Host tarafından atanan ayarları değiştirebilirsiniz. Bu bölümdeki ayarlar Hyper-V Host ‘un sahip olduğu donanımdan otomatik çekilmektedir. Ayarları değiştirdiğimiz zaman yardım almak istersek Use Hardware Topology butonunu kullanabilirsiniz.

Ekran görüntüsünü almış olduğum Hyper-V Host üzerinde Intel (R) Core (TM) i5-4440 CPU bulunmakta ve bu işlemci 4 çekirdeğe sahip durumda. 29428 MB ise Hyper-V Host üzerinde bulunan hazır durumdaki bellek miktarıdır.

Virtual Machine Numa Topology

Virtual Machine Numa Topology

Bir sanal makine üzerinde bu ayarları değiştirebiliriz ve özelleştirebiliriz ama dinamik bellek ve Virtual Numa eş zamanlı kullanılamamaktadır.

Dinamik belleğin aktif duruma getirdiğimiz sanal makine üzerine bu yapılandırmanın hiçbir önemi yoktur ve NUMA topolojisi sanal makineye sunulmaz.

Nasıl olduğunu yorumlayalım. Hardware Topolojisi bize sunucu üzerinde 1 tane fiziksel işlemci olduğunu ve bu işlemcinin 4 adet çekirdeğinin olduğunu ve bu Host üzerinde 29428 MB Fiziksel Bellek olduğunu belirtti. Hyper-V tarafından bu host için hesaplanan değerler, otomatik oluşturulan topoloji bilgileri.

Ama biz topolojiye müdahale ettik ve Numa Topology si için en fazla 16384 MB Fiziksel Bellek kullanılmasını istedik.

Bu müdahalenin artıları eksileri nelerdir?

Eğer bu host üzerinde bulunan 32 GB Fiziksel Bellek 4 farklı Memory Card Slot’ una dağıtıldıysa ve her bir memory card slotu 8 GB Fiziksel Belleğe sahipse ve bu işlemci en fazla 16 GB Fiziksel Belleği Local QPI üzerinden kullanmasını istiyorsak ve bu sanal sunucu üzerinde dinamik bellek kullanmayacaksa EVET DOĞRU.

Ama bu sunucu üzerinde dinamik bellek yapılandırıldıysa ne olacak?

Not: Makaleye devam etmeden önce “dinamik bellek ve Virtual Numa eş zamanlı kullanılamaz” kuralını unutmayalım.

Hyper-V Numa Architecture

Hyper-V Numa Architecture

Makalemizin başında IBM x3850 X5 Sunucusu için verilmiş olan Fiziksel NUMA Diyagramını Virtual NUMA olarak düzenledim.

Diyagrama göre örnek verelim. Diyagram içinde bulunan sanal sunucu 8 Virtual Core ve 32 GB Virtual Ram ataması yaptım. Memory Card 1 ve Mamory Card 2 üzerinde 32 GB Bellek olduğu sürece sanal makinemiz bu memory card slotlarını ve bu memory card slotlarına bağlı bulunan fiziksel bellekleri ve bu sanal sunucu için Intel Xeon CPU1 i kullanacaktır.

Bu sanal sunucu üzerinde dinamik belleği aktif duruma getirdim ve sanal makinemiz 32 GB üzerinde bir bellek istedi. Eğer Memory Card 1 ve Memory Card 2 üzerinde yeterli fiziksel bellek varsa Hyper-V bu slotlar üzerinden sanal makinemizin istediği dinamik belleği verecektir. EĞER YOK ise Remote QPI Kanalları üzerinden Memory Card 3 veya Memory Card 4 üzerinden fiziksel belleklerin atamasını yapacaktır.

Makalemiz içinde bahsettik, SQL, Exchange ve benzeri sanal sunucular üzerinde dinamik bellek kullanımını aktif duruma getirilmemesi gerektiğini önerdik. İş Kritik ve yüksek performans isteyen sanal sunucularda bu özellik kullanıldığı zaman bu ve benzeri durumlarda performans düşmesine neden olabilmektedir.

Hyper-V, bir sanal sunucu açıldığı zaman sanal sunucuya atanmış olan sanal belleği sanal sunucunun bağlı bulunduğu işlemci üzerinden vermek üzere dizayn edilmiştir. Numa Spanning in ver sayılan değerde açık olmasındaki neden budur.

Konuyu pekiştirmek için başka örnekler verelim.

  • Memory Card 1 ve Memory Card 2 ‘nin toplam fiziksel bellek boyutu 128 GB.
  • Bu Slotlara bağlı durumda bulunan Sanal makine sayısı 4 ve işlemci performansı
  • Her bir sanal sunucu üzerinde 32 GB Sabit Durum Sanal bellek var.
  • 4 sanal makinenin Sabit durum bellek kullanımı 128 GB yani fiziksel bellek ile 1:1 boyutta.
  • Yeniden başlayan sanal sunucumuz üzerinde 32 GB Sabit durum belleği var ama ilk açılış sırasında dinamik bellek olarak 48 GB Bellek ataması yapılmış.

Yukarıda ki yapılandırmada Hyper-V Nasıl davranacak?

4 sanal makinemiz sabit durum çalışma anı bellek kullanımı 128 GB. Memory Card 1 ve Memory Card 2 üzerinde 128 GB Bellek bulunmakta ve yeterli fiziksel bellek olduğu için Local QPI Channel kullanacaklardır ve en üst seviyede performans elde edilecektir.

4 Sanal makinemizden Dinamik Bellek yapılandırılmamış sanal makinemiz yeniden başladığı zaman (diğer sanal makineler sabit durumda çalışıyor) sanal makinemiz kullandığı 32 GB Belleği geri verecek ve Memory Card 1 ve Memory Card 2 üzerinde 32 GB Bellek hazır duruma gelecek. Sanal makine 32 GB Belleğe ihtiyaç duyduğu zaman bu Memory Card Slotlarında olan 32 GB belleği geri alacak ve çalışacak.

4 Sanal makinemizden Dinamik Bellek yapılandırılmış ve ilk açılış işlemi sırasında başlangıç belleği 48 GB olarak yapılandırılmış. Bu sanal makinemiz yeniden başladığı zaman (diğer sanal makineler sabit durumda çalışıyor 128 GB Belleğin 96 GB kullanılıyor budurumda) 32 GB Memory Card1 ve Memory Card 2 ‘ye geri veriyor ama açılış işleminde 48 GB Bellek istiyor. Memory Card 1 ve Card 2 üzerinde hazır durumda 32 GB Bellek olduğu için Hyper-V iki şekilde davranacak.

  1. Sanal makineyi daha uygun durumda olan aynı host üzerinde bir başka fiziksel işlemci üzerinde ve Memory Slotlarından çalıştı. Hyper-V nin ilk hedefi Local QPI Channel üzerinden çalıştırmak olduğunu söylemiştik. Yukarıdaki diyagrama göre örnek verirsek Memory Card 3 ve Memory Card 4 ün bağlı bulunduğu ikinci işlemci üzerinden çalıştıracak.
  1. Birinci durum oluşamazsa birinci işlemci üzerinden açılacak ve birinci işlemci üzerinde hazır durumda bulunan bellekleri Local QPI Channel üzerinden kullanacak ve yetersiz gelen bellekleri ise Remote QPI Channel üzerinden kullanacaktı

Hyper-V bir sanal makineye bir bellek ataması yaptığı zaman sanal makine üzerinde yeniden başlatma ve canlı aktarım gibi taşıma işlemi olmadığı zaman Host üzerinde adreslemiş olduğu bellek ve işlemci yolunu değiştirmez.

Önerilen Kritik sunucular üzerinde dinamik belleği atamayalım ve Hardware topolojisi üzerinde çok özel bir değişiklik yapmayalım. Hyper-V en uygun olan değeri atayacaktır. Yapacak olduğumuz yanlış bir topoloji sonrasında dinamik bellek aktif duruma getirilmiş sanal makinenin yeniden başlatma işlemi sonrasında yeterli bellek olmadığı için açılmamasına sebep olabilirsiniz.


Sunucu Sanallaştırma Platformlarında Bellek Özelliklerinin Karşılaştırılması

Makalemiz içinde Hyper-V nin sahip olduğu bellek yapılandırmaları için gelişimlerinden bahsettik. Yeniliklerin geldiğini ve iyileştirmelerin her sürüm ile birlikte değiştiğini ve geliştiğini, her sürümde ayaklarının yere daha sağlam bastığını aktardık.

Hatırlayanlar bilir, aslında aktarmış olduğumuz Dinamik Bellek teknolojisi bugün olduğu kadar zengin özelliklere sahip olmasa bile Hyper-V 2.0 deneme sürümünde vardı. Fakat satış sürümünde bu özelliği göremedik. Microsoft Windows Server 2008 R2 Service Pack 1 yani aynı sürümün ücretsiz iyileştirme paketi ile bu özelliği Hyper-V 2.0 sürümüne getirdi. Deneme sürümünde olup satış sürümünde olmama nedeni, Dinamik Bellek mimarisinde bulunan bir hata ve belki bir güvenlik açığıydı. Service Pach olarak bildiğimiz Windows Server 2008 R2 SP1 iyileştirme paketi Hyper-V için yeni özelliğin gelmiş olduğu bir gelişim paketi oldu aslında.

SP1 yayınlanmadan önce Vmware tarafında ise işler çok hızlı ilerliyor ve Hyper-V henüz Dinamik Bellek teknolojisini yerine getiremezken Vmware Memory Overcommit Teknolojisi altında Transparent Page Sharing, Ballooning, Hypervisor Swapping ve Compression özellikleri olmak üzere dört farklı çözümü müşterilerine sunmaya başlamıştı ve bu özelliği rakip karşılaştırmalarında sürekli ön planda tutuyordu. Dinamik Belleğin kullanılması neredeyse kaçınılmaz olan Sanal Masa üstü platformlarında Vmware sürekli bir adım önde masaya oturuyordu.

Comparing Memory Overcommit

Comparing Memory Overcommit

Kaynak: https://labs.vmware.com/vmtj/memory-overcommitment-in-the-esx-server

SP1 ile bizler Hyper-V 2.0 sürümünde Dinamik Bellek ile tanıştık Hyper-V 3.0 sürümünde daha iyi duruma geldi ve diğer sürümlerinde gelişimini, iyileştirilmesini devam ettirdi. Yukarıdaki tablo Vmware firmasının resmi internet sitesi üzerinden alınmıştır ve teknolojilerin karşılaştırmasını yapmaktadır.

Teknoloji ve kullanım amacı makalemiz içinde anlattığımız üzere hemen hemen aynı olmakta ama Vmware ESX, Microsoft Hyper-V, Xen Server kendi terimlerini kullanmaktadır.

Hyper-V Dynamic Memory Comparing

Hyper-V Dynamic Memory Comparing

Kaynak: https://blogs.technet.microsoft.com/danstolts/2013/03/virtual-memory-management-dynamic-memory-much-different-than-memory-over-commit-become-a-virtualization-expert-part-3-of-20/

Vmware firmasının resmi internet sitesi üzerinden almış olduğumuz tablonun bir benzerini Microsoft’ un resmi internet sitesi üzerinde görebilmekteyiz.

Her iki firma ürünlerinin artılarını, artılarını (: yazmakta.

Memory Overcommit teknolojisinin yaptıklarını detaylı olarak anlatmayacağım. Hyper-V üzerinde bulunan Dinamik Bellek teknolojisi ile hemen-hemen aynı mantıkla çalışmakta. Bahsedecek olduğum konu Hyper-V üzerinde bulunmayan Vmware nin sahip olduğu ama Hyper-V nin yapamadığı Transparent Page Sharing özelliğini inceleyeceğiz.

Vmware nasıl yapıyor, Microsoft neden yapmıyor?

VMware Transparent Page Sharing

VMware Transparent Page Sharing

Yukarıda paylaşmış olduğum diyagram içinde TPS nin aktif olmuş olduğu ESX Sunucusu ve aktif olmayan ESX sunucusu görülmektedir. TPS nin çalışma mantığı özet olarak A sanal sunucusuna atamış olduğumuz belirli bir bellek var ve bu A sanal sunucusu bu belleği kullanmıyor. Eş zamanlı olarak aynı ESX Host üzerinde bulunan B sanal sunucusuna fazladan bellek ihtiyacı ortaya çıkıyor. Bu durumda A sanal sunucusu bonkör davranıyor ve o an için kullanmadığı ve kendisine atanmış olunan fazla belleği B sanal sunucusuna paylaşıyor.

Güzel değil mi? Eğer teknoloji nasıl çalışıyor diye derinlemesine inceleme yapmazsak evet güzel olduğunu söyleyebiliriz.

Bu özellik ilk çıkmış olduğu zamanlarda sanallaştırma uzmanı tarafından çok iyi bir özellik olarak benimsendi ve VMware müşterileri bu özelliği kullandı. VMware satışını gerçekleştiren kişiler bu özzelliği büyük bir rekabet avantajı olarak kullandı ve bu kişilerde sunumlarında, satış öncesi toplantılarda bu avantajı sürekli ön plana sundu. Ellerinde sanallaştırma dünyası için kullanılabilir büyük bir silah vardı. Fakat, birçok güvenlik uzmanı tarafından büyük bir güvenlik açığı oluşturacağını ve kullanılmaması gerektiği söylenildi.

Transparent Page Sharing Security Risk

Transparent Page Sharing Security Risk

Kaynak: https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2080735

Neyse ki tarih Mayıs 2015 olduğu zaman VMware bir güvenlik yaması çıkarttı ve bu güncelleştirme ile TPS özelliğinin varsayılan değerlerde kapatılacağını duyurdu.

Tarafsız bir sorum, Microsoft Dinamik bellek teknolojisinde bir güvenlik açığı buluyor ve deneme sürümünde olan bu özelliği satış sürümünde güvenlik problemleri nedeni ile piyasaya sürmüyor ve rakibine büyük bir koz veriyor. Dinamik Bellek üzerinde bulunan güvenlik açığı kapatıldıktan sonra Temmuz 2010 senesinde çıkartmış olduğu güvenlik yaması ile müşterilerine bu teknolojiyi ücretsiz olarak sunuyor. VMware ise TPS özelliğinde tam tersi bir politika yapıyor, TPS özelliğini güvenlik açığı ile müşterilerine sunuyor, güvenlik uzmanlarının uyarıları ve müşterilerden gelen problem çağrıları yüzüne seneler içinde rekabet avantajı olarak kullanılan bu özelliği varsayılan değerlerde kapatacak bir yama, iyileştirme paketi çıkartıyor ve bu özelliğin kullanımını müşterilerine opsiyonlu olarak kullanmak üzere devrediyor.

Microsoft, senelerden beri “biz daha güvenliyiz” derken bu ve benzeri durumlardan mı bahsetmektedir, bu politikalarımı işaret etmektedir, bilemiyorum ve yorumu sizlere bırakıyorum…

Not: Paylaşmış olduğum kaynak Vmware nin resmi internet sitesi üzerinde yer almaktadır ve Vmware göre “bu güvenlik açığı düşükmüş”!

VMware Ballooning

VMware Ballooning

Bir başka teknolojiden bahsetmek istiyorum. Memory Overcommit Teknolojisi altında bulunan Ballooning özelliği. Vmware kaynakları üzerinde derinlemesine bir incelemeyi gerçekleştirmedim ama Microsoft un yapmış olduğu uyarının bir benzerini Vmware de yapmaktadır. Microsoft Resmi Blogları içinde bu özelliği kullanmak isteyen müşterilerine ilk önerisi “yavaş disk kullanmayın aksi durumda kullanmış olduğunuz sanal makineniz üzerinde performans problemi yaşarsınız” demektedir. Makale içinde Dinamik Bellek Kullanan Sanal Makineler için Smart Paging File Yapılandırması bölümünü incelerseniz eğer Ballonning uygulaması ile aynı mantıkta çalıştığını görebileceksiniz. Host üzerinde yeterli Bellek kalmadığı zaman, Sanallaştırma Host ‘umuz Bellek gereksinimi oluşan sanal sunucuya sabit depolama alanını bellek gibi kullandırtmaktadır.

Her iki firmanın bu özelliğini sevememekteyim ve kullanılmaması gerektiğini savunmaktayım. Zaten her sunucu üzerinde çalışmaması, her sunucu üzerinde (SQL Server, Exchange Server) önerilmemesi ve belirli bir gereksinimin olması benim bu görüşümü savunmaktadır.

Sanallaştırma platformundaki savaşlar başka cephelerde devam edecek…


Hyper-V Bellek Durumlarının Analiz Edilmesi

Hyper-V 2.0 ile birlikte Hyper-V Manager yönetim ara yüzü yeni gelen yetenekler ile birlikte değişim gösterdi. Konsol yenilikleri arasında Memory bölümü bulunmakta ve bu bölümde sanal makinemizin yapılandırma adımına gitmeden hızlı bir şekilde bellek durumunu görmemize imkân verdi. Yönetim ara yüzünde bulunan bölüm Hyper-V 5.0 dada bulunmaktadır.

Virtual Machine Memory Status

Virtual Machine Memory Status

Hyper-V arayüzüne bu bilgiler integration services sayesinde sanal makinemizden Hyper-V Sunucumuza aktarılmaktadır. En doğru bilgileri alabilmemiz için en güncel integration services yazılımının sanal makinemize yüklenmiş olması gerekmektedir. Bu bilgiler Windows Server 2003 Servis Paketi 2 ve üzeri olan bütün Microsoft işletim sistemleri tarafından Hyper-V ‘ye bildirilmektedir.

Minimum Memory, Maximum Memory ve Memory Demand bölümleri sadece dinamik bellek kullanımı aktif duruma getirilmiş sanal makineler için aktif duruma gelmektedir. Geri kalan diğer bölümler bütün sanal makinelerde bulunmaktadır. Bu bölümde yazan startup memory sizleri aldatmasın. Dinamik bellek özelliğini aktif duruma getirmediğimiz sanal makineler içinde Startup Memory terimi kullanılmaktadır. Dinamik belleğin aktif olmadığı sanal sunucunun bellek boyutu Startup Memory ‘dir.

Memory Assigned bölümünde Hyper-V Tarafından sanal makineye ne kadar bellek atadığımızın bilgisi görülmektedir ve sabittir. Memory Demand bölümü içindeyse sanal makinenin o an için ne kadar belleğe ihtiyaç duyduğunun bilgisi görülmektedir ve değişkendir.

Memory Status bölümü ise Demand bölümündeki değişim oranlarına göre değişmektedir ve üç bölümden oluşur.

  • OK Problem yok. Sanal makineye atanan bellek Hyper-V Host üzerinde ayrılmış durumda ve sanal makine ayrılan dinamik belleğe gereksinim duymamaktadır.
  • Low Sanal makineye atanan bellek yetersiz durumda ama Hyper-V Host üzerinde yeterli bellek bulunmakta ve sanal makine ihtiyaç duyduğu anda ayrılan dinamik bellek Hyper-V Host tarafından sanal makineye atanabilir durumda.
  • Warning Sanal makineye atanan bellek yetersiz durumda ve Hyper-V Host üzerinde yeterli bellek bulunmuyor. Sanal makine ihtiyaç duyduğu anda ayrılan dinamik bellek Hyper-V Host tarafından Smart Page File olarak verilecektir.
Not Enough Memory

Not Enough Memory

Bazı durumlarda LOW olarak oluşan bir durum Warning olarak değişebilir ve olay günlüklerine Error olarak düşebilir. Bu değerler sanal makine için ayrılan rezerve belleğin %80 ‘ine bakılarak karar verilmektedir ve Host üzerinde bulunan toplam fiziksel bellek ile ilgili değildir.

Smart Page Performance Issue

Smart Page Performance Issue

Hyper-V Hostumuz üzerinde görmüş olduğunuz durum bildirimlerini Hyper-V Worker olay günlüklerin içinde sanal makine seviyesinde inceleyebilirsiniz.

Eğer sahip olduğunuz Host sayısı tek ise ve sanal makinelerinizin bir Replica Partneri veya bir Cluster Kümesi içinde çalışmıyorsa bu olay günlükleri ile çözüme gidebilir ve olay günlüklerini takip ederek sanal makinenin ihtiyaç duymuş olduğu bellek atamasını gerçekleştirebilirsiniz.

Eğer sanal makinenizin bir replica partneri veya cluster kümesi içinde canlı aktarım (live migration) gibi bir özellik ile farklı Hyper-V Hostlar üzerinde çalıştırılması sağlandıysa bu olay günlüklerini o an için problem yaşamış olduğu Hyper-V Host üzerinde incelemeniz gerekmektedir. Zaten birden fazla Hyper-V Host sunucunuz ve tek bir düğüm üzerinden çalıştırıyorsanız kullanmış olduğunuz bir izleme yazılımının olduğunu düşünüyorum. Eğer Hyper-V ortamını izleyen bir yazılımınız yoksa ajanlı bir çözüm olarak Microsoft’un System Center Operation Manager yazılımını, ajansız çalışmasını isterseniz Virtual Metric yazılımını incelemenizi önermekteyim. System Center Management Pack for Windows Server 2012 R2 Hyper-V makalesinde SCOM’ un incelemiş olduğu Hyper-V bileşenlerini inceleyebilirsiniz.

Hyper-V Bellek Performansının Analiz Edilmesi

Aşağıdaki Tabloya hızlıca bakabilirsiniz veya hiç bakmadan devam edebilirsiniz, çünkü aradığınız bilgiler burada bulunmamaktadır. Sadece Toplam değerlere bakmanız yeterlidir.

Image PID Hard Faults/sec Commit (KB) Working Set (KB) Shareable (KB) Private (KB)
vmconnect.exe 2524 0 176,828 75,244 39,804 35,440
svchost.exe (termsvcs) 1636 0 71,904 86,856 34,420 52,436
explorer.exe 4104 0 50,452 89,748 57,380 32,368
mmc.exe 4036 0 48,924 29,124 11,668 17,456
vmwp.exe 4656 0 39,372 17,916 11,396 6,520
vmwp.exe 2984 0 38,740 17,500 11,300 6,200
svchost.exe (netsvcs) 892 0 34,176 47,836 19,212 28,624
vmwp.exe 2172 0 28,288 39,500 15,904 23,596
svchost.exe (LocalServiceNetworkRestricted) 844 0 25,696 28,488 6,220 22,268
PresentationFontCache.exe 2960 0 24,964 12,544 9,328 3,216
LogonUI.exe 544 0 24,516 27,240 19,280 7,960
dwm.exe 4748 0 23,728 48,544 32,504 16,040
mmc.exe 5296 0 22,928 38,332 26,608 11,724
vmms.exe 1444 0 21,884 36,704 17,168 19,536
dwm.exe 952 0 17,948 36,548 24,552 11,996
vmwp.exe 2544 0 16,900 27,384 13,436 13,948
LogonUI.exe 5372 0 12,800 20,916 16,032 4,884
perfmon.exe 3384 0 12,232 22,220 11,656 10,564
svchost.exe (LocalSystemNetworkRestricted) 1360 0 11,164 16,412 10,044 6,368
svchost.exe (NetworkService) 424 0 10,104 18,840 10,308 8,532
dwm.exe 4640 0 10,024 13,824 9,860 3,964
Taskmgr.exe 2468 0 9,648 21,868 14,732 7,136
svchost.exe (LocalServiceNoNetwork) 1092 0 9,572 12,844 7,788 5,056
lsass.exe 612 0 9,320 15,616 8,004 7,612
spoolsv.exe 1260 0 8,396 15,360 9,512 5,848
svchost.exe (LocalService) 932 0 8,060 13,424 6,808 6,616
svchost.exe (DcomLaunch) 680 0 5,276 11,668 7,088 4,580
taskhostex.exe 3276 0 5,000 10,588 6,648 3,940
WmiPrvSE.exe 3140 0 4,652 10,520 7,128 3,392
svchost.exe (RPCSS) 728 0 4,388 8,336 4,544 3,792
RAVBg64.exe 4280 0 3,800 8,676 5,536 3,140
services.exe 596 0 3,388 6,424 3,616 2,808
svchost.exe (utcsvc) 1308 0 3,388 9,496 7,096 2,400
RAVCpl64.exe 3792 0 3,352 9,024 6,484 2,540
msdtc.exe 1152 0 2,156 5,996 4,432 1,564
rdpclip.exe 1924 0 1,976 7,412 5,988 1,424
csrss.exe 3588 0 1,928 3,916 2,840 1,076
WmiPrvSE.exe 3120 0 1,904 6,596 5,256 1,340
csrss.exe 2336 0 1,884 27,292 26,252 1,040
csrss.exe 460 0 1,864 3,788 2,672 1,116
csrss.exe 2300 0 1,812 8,900 7,844 1,056
igfxCUIService.exe 988 0 1,624 6,132 4,844 1,288
RtkAudioService64.exe 1012 0 1,308 4,712 3,696 1,016
winlogon.exe 5096 0 1,256 5,232 4,396 836
WmiApSrv.exe 5480 0 1,240 5,328 4,348 980
jusched.exe 3880 0 1,204 5,108 4,256 852
winlogon.exe 3752 0 1,176 4,928 4,156 772
svchost.exe (NetworkServiceNetworkRestricted) 1756 0 1,156 4,328 3,456 872
winlogon.exe 3472 0 1,120 4,820 4,104 716
taskeng.exe 5328 0 1,112 4,644 3,828 816
armsvc.exe 1284 0 1,028 3,740 2,996 744
svchost.exe (LocalServiceAndNoImpersonation) 3108 0 952 3,832 3,092 740
wininit.exe 512 0 852 3,632 3,012 620
smss.exe 308 0 312 1,040 796 244
System 4 0 108 252 224 28
Toplam 829,784 1,027,192 605,552 421,640

Yukarıdaki tablo, aşağıda Resource Monitor ekran görüntüsü içinde bulunan işlemlerin bilgisini göstermektedir. İsterseniz tabloya şimdi tekrardan bakın AMA aradığınızı göremeyeceksiniz.

Tabloya dikkatli bakarsanız sunucu üzerinde Bellek kullanımı %78 kullanılan in use bellek 12 GB ama bütün tablo boyutu içinde yer alan bilgiler 2 GB ‘ı geçmemektedir. Tablo içinde görülmeyen 10 GB gibi bir bellek nerededir?

Bu ekran görüntüsü ve tablo içindeki veriler bit Hyper-V Host üzerinden alınmıştır ve gördüğünüz gibi Hyper-V Host üzerinde Resource Monitör incelendiği zaman sanal makinelerin kullanmış olduğu kaynaklar görülmemektedir. Sanal makinelerin kullanmış oldukları kaynakları görebilmek, inceleyebilmek için bir önceki bölümde bahsetmiş olduğumuz SCOM aracını veya Virtual Metric yazılımını veya benzeri bir yazılım kullanmalısınız.

Bu araçlar ücretlidir ve daha çok bir den fazla Hyper-V Host olan mimariler için önerilmektedir. Sahip olduğunuz ortamda içinde yönetebileceğiniz, analiz edebileceğiniz sayıda Hyper-V Hostlar varsa bu makalede anlatılan değerleri inceleyebilirsiniz. Bahsetmiş olduğum bu yazılımlarda bu değerleri kendi ara yüzlerine entegre etmekte ve daha rahat analiz edebilmemiz için bizlere sunmaktadır.

Windows Resource Monitor

Windows Resource Monitor

Bu bölümde, Hyper-V Hostumuz üzerinde bulunan sanal makinelerimizin kullanmış oldukları bellekleri analiz edebilmek için Windows Performance Monitor aracını kullanacağız. Bu araç sadece Hyper-V host için kullanılmamaktadır. Bu araç bütün Windows işletim sistemleri üzerinde bulunmaktadır ve ücretsiz yönetim konsoludur. Kullanmış olduğumuz Windows Rol ve Uygulamaların, Fiziksel kaynak üzerinde kullanmış olduğu kaynağı analiz etmek, anlık izlemek ve verileri toplamak üzere kullanılmaktadır. Çalıştırmış olduğumuz işletim sistemi üzerinde yüklü bulunan rol ve özelliğe göre sayaç (counter) ekleyebilir ve özelleştirebiliriz.

Hyper-V Performance Counter

Hyper-V Performance Counter

Bu makale içinde sadece Bellek kullanımları analiz edilmektedir ve yukarıdaki ekran görüntüsünde göreceğiniz üzere Hyper-V Hypervisor, Logical Processor gibi birçok Hyper-V Kaynağını Sanal sunucusu seviyesinde analiz edebiliriz. Sanal Makinelerimizin Hyper-V host üzerindeki kaynakların ne kadarını harcadığını Counter ekleyerek görebilmekteyiz.

Windows Server Performance Monitor

Windows Server Performance Monitor

Performance Monitore eklemiş olduğum Counter ları inceleyelim.

Hyper-V Dynamic Memory Balancer Hyper-V Host üzerinde bulunan kaynakları izlemek için kullanılır ve iki adet değeri bulunmaktadır. SCOM’un özelliği olan PRO özelliği (Performance and Resource Optimization) özelliği bu değerlere göre çalışmaktadır. Bu servisin isminin Balancer olma nedeni belki bu özellikten kaynaklı olup birden fazla Host üzerinde çalışacak olan sanal makinenin daha uygun bir host üzerinde çalışıp-çalışamaması bu bölümdeki değerlere göre belirlenmektedir. Bu bölüm altında

  • Available Memory bölümünde Hyper-V Host üzerinde hazır bulunan fiziksel belleğin boyutunu görebilmekteyiz.
  • Average Pressure değerleri için bir önceki bölümde ip ucu vermiştik. Hyper-V Yönetim ara yüzünde Memory bölümünde görülen Low ve Warning uyarıları bu bölümde oluşan değerlere göre oluşmaktadır. Avarage Pressure değeri 100’ ün altında olduğu sürece sanal makinelere hizmet etmek için yeterli bellek bulunmaktadır. Bu bölümde olması gereken değer 80’ dir ve Memory Durumlarının Analiz edilmesi bölümünde söylediğimiz %80 değeri buradan gelmektedir. Şimdi soracaksınız, paylaşmış olduğum ekran görüntüsü için bulunan değer 226. Bu durumda ne oldu. Bellek ihtiyacı karşılanamayan sanal makinelerim Pause Critical hatası aldı ve durdu ve Page File yapılandırmış olduğum sanal makinelerim üzerinde performans düşmesi yaşandı.

Hyper-V Dynamic Memory Integration Services bölümünde bahsedilen değerler Memory Durumlarının Analiz bölümü içinde bahsetmiş olduğumuz değerlerdir.

Hyper-V Dynamic Memory VM bölümünde Hyper-V Host içinde çalışan sanal makinelerin kaynaklarını Host üzerinden izleyebilmekteyiz. Bu bölümü her bir sanal makine için ayrı-ayrı izleyebilmekteyiz.

  • Average Pressure Host bölümü içinde aktarmış olduğum bilgilerin sanal makine seviyesinde olanıdır.
  • Current Pressure Sanal makine için hazır durumda bulunan bellek boyutu.
  • Guest Visible Physical Memory Sanal makine için Fiziksel Host ‘dan atanan bellek boyutu.
  • Maximum Pressure Sanal makine için atanmış olan sanal belleği en büyük sıkıştırılabilir boyutu.
  • Minimum Pressure Sanal makine için atanmış olan sanal belleği en düşük sıkıştırılabilir boyutu.
  • Physical Memory Sanal makine için atanmış olan sanal belleğin boyutu.
  • Smart Paging Working Set Sanal makine Host üzerinde tanımlanan sabit depolama alanını bellek olarak kullandığı zaman kullanmış olduğu sabit depolama alanı boyutu.
Average Pressure Critical Monitor

Average Pressure Critical Monitor

Windows Performance Monitor üzerinde bulunan değerleri değiştirememekteyiz fakat SCOM, Azure OMS yazılımları üzerinde bu değerleri kendi mimarimize göre özelleştirebilmemiz mümkündür.

Bu bölüm içinde bahsetmiş olduğum değerleri, ihtiyaç duymuş olduğunuz diğer değerleri ekleyerek veya her bir performans monitörü için ayrı yönetim ara yüzleri oluşturarak izleyebilir, değerleri kayıt altına alabilir veya biraz daha uğraşarak mail bildirimleri ile kendi SCOM hizmetinizi oluşturabilirsiniz.

Windows Server 2016 Runtime Memory Resize

Hyper-V Runtime Memory Resize özelliği Windows Server 2016 Hyper-V Hostları için Dinamik Bellek Teknolojisinin gelişmiş versiyonudur ve Windows Server 2016 ve Windows 10 Sanal Makineleri için desteklenmektedir. Dinamik Bellek özelliği, bu teknolojiyi tanıyan bütün sanal makineler için desteklenirken Runtime Memory Resize özelliği veya Hot add/remove ismi ile de kullanılan bu özellik sanal makine çalışır durumdayken, dinamik bellek teknolojisi aktif edilmemiş olsa bile Hyper-V Host üzerinde bulunan hazır bellek kaynağının sanal makineye çalışır durumdayken verilmesi ve alınması anlamına gelmektedir. Bu teknoloji Nesil 1 ve Nesil 2 olmak üzere bütün Hyper-V Sanal makineleri için desteklenmekte olup sanal makine sürümümün Version 8 olması gerekmektedir.

Runtime Memory Resize Özelliğinin nasıl çalıştığını aşağıdaki videodan izleyebilirsiniz.

.

Hangi Bellek Tipi ve Özelliği Hangi Sanal Sunucu için Desteklenmektedir

Sanallaştırma Platformu içinde her bir platformun farklı özellikleri farklı avantajları bulunmakta. Fakat bu özellikler genellikle en güncel işletim sistemleri için uyumlu olmaktadır. Kullanmış olduğumuz sanal makine işletim sistemi güncel sanallaştırma platformunun bizlere sağlamış olduğu avantajları kullanabiliyor mu? Bu makalemiz içinde bunları incelemekteyiz.

Sanal sunucumuza fiziksel bir sunucuymuş gibi davrandığımız sürece sanal platformlar içinde çalışan her bir sanal sunucumuz daha sağlıklı çalışacaktır.

Buraya tabloları yerleştirebilirim fakat kuracak olduğunuz mimariler için gereksinimler farklı olacağı için çok doğru bir çözüm olmayacaktır. Zaten sürekli olarak değişmektedir.

Örnek, Windows Server 2008 R2 sanal sunucunuza Service Pach 1 yüklemesi yaptıktan sonra ve barınmış olduğu Hyper-V Host 2.0 ve üstü olduğu zaman ve integretion services yüklemesini/güncelleştirmesini yaptıktan sonra bu sanal sunucu için Dinamik Belleği kullanabilirsiniz diyebilirim.

Fakat!

Bu sunucu üzerinde SQL, Exchange Server gibi uygulama katmanında çalışan bir hizmet bulunuyorsa işletim sistemi katmanı desteklemiş olsa bile uygulama katmanı desteklemediği için bu özelliği kullanamazsınız.

Sanallaştırma platformları içinde bulunan her bir özelliği bir sanal sunucunuza uygulamadan önce bakmanız gerekli olan birçok katman vardır. En temel bakmamız gerekli olan başlık sanal makine içinde çalışan işletim sistemi nedir, işletim sisteminin üzerinde çalışan uygulamalar nelerdir, Hyper-V için belirtiyorum sanal sunucunun sahip olduğu Sanal Makine Sürümü nedir, sanal makinenin çalışmış olduğu Host ‘un versiyonu nedir ve sanal makineye yüklü olan integration services nedir gibi birçok soru bulunmakta. Bu katmanlardan bir tanesi desteklemezse bu özelliği kullanamayacağız. Yukarıda örneğini verdim, sanal makinenin işletim sistemi destekliyor, Fiziksel Sanallaştırma sunucusunun sürümü destekliyor, servis paketleri ve bunun gibi bütün katmanlar desteklemekteyken sadece uygulama seviyesinde bulunan Exchange veya SQL desteklemediği için bu özelliği kullanamamaktayız. Bir sanal makineyi bütün bileşenleri ile birlikte tek bir bütün olarak görmek zorundayız.

Birkaç tablo değil ama birkaç link bırakıyorum.

Hyper-V Dynamic Memory Configuration Guide makalesi içinde dinamik bellek kullanımını destekleyen Windows işletim sistemleri ve bu windows işletim sistemlerinin gereksinimleri ve yapılacak olan işlemler belirtilmektedir. Bu makale içinde uygulama kaymanı bulunmamaktadır. Eğer sanal sunucunuzda bu özelliği kullanacaksanız bu makale artı kullandığınız uygulamanın teknik makalelerini inceleyip destekleyip-desteklemediğine bakmanız gerekmektedir.

Hot add and Remove for Network Adapters and Memory

Hot add and Remove for Network Adapters and Memory

Windows Server 2016 ile birlikte gelen Hot add and remove for network adapters and memory özelliği içinde bulunan sanal makine çalışırken herhangi bir kesinti yapmadan network kartı ekleme ve çıkartma işlemi sadece Nesil2 sanal sunucuları için desteklenmektedir. Aynı şekilde sanal makine üzerinde herhangi bir kesinti yapmadan çalışır durumdayken bellek artırımı ve düşürme işlemi sadece Windows Server 2016 ve Windows 10 sanal sunucuları için desteklemektedir. Windows Server 2016 Hyper-V üzerinde çalışan sanal sunucumuz Windows Server 2012 R2 ise bu özelliği kullanamıyoruz ki uygulama seviyesine hiç çıkmadan çalıştıramayacağımın bilgisini alıyorum.

Supported Windows Guests makalesi içinde Hyper-V 5.0 üzerinde desteklenen sanal makinelerin işletim sistemlerini görebilirsiniz. Makalenin alt kırılımlarına ve bağlantılarına baktığınız zaman Desteklenen sanal sunucu işletim sistemleri ile birlikte yapılması gerekli olan diğer işlemleri, sanal makine işletim sisteminin yükseltilmesini görebileceksiniz.

Supported Windows Guests Features

Supported Windows Guests Features

Kaynak : https://technet.microsoft.com/en-us/windows-server-docs/compute/hyper-v/supported-ubuntu-virtual-machines-on-hyper-v

Yukarıdaki Tablo Hyper-V 3.0, 4.0 ve 5.0 üzerinde çalışan Ubuntu sanal işletim sistemi için verilmiştir. Hyper-V 1.0 ve 2.0 üzerinde Ubuntu işletim sistemi zaten desteklenmemektedir.

İnceleyecek olduğumuz özellik Dynamic Memory Ballooning özelliği. Eğer sanal makinemiz Ubuntu 12.04 sürümüne sahipse bu özelliği zaten kullanamıyoruz. Hyper-V Host haricinde Ubuntu Sanal sunucumuzun sürümünü Ubuntu 14.04, Ubuntu 16.04 veya Ubuntu 16.10 versiyonuna yükseltmemiz gerekiyor.

Supported Linux Virtual Machines

Supported Linux Virtual Machines

Yukarıda belirtilen Fiziksel Sanallaştırma Host ‘umuz ve sanal makine işletim sistemlerimiz destekledikten sonra Sanallaştırma Platformunun bu özelliğinin sağlıklı ve problemsiz bir şekilde kullanabilmek için bizlere aktarılan notları da iyi bir şekilde incelememiz gerekmektedir. Diğer Linux ve Free BSD işletim sistemleri için aşağıda bulunan bağlantılardan detaylı bilgilere sahip olabilirsiniz.

Dynamic Memory in the Guest Operating System

Dynamic Memory in the Guest Operating System

Aktarılan notlar arasında dikkat ederseniz sanal işletim sistemlerinin integration services bileşenleri bulunmaktadır.

Yanlış yapılandırma sonrasında kullanmış olduğunuz özelliğin neden çalışmadığını anlayabilmemiz için gerekli bileşenleri iyi bilmemiz gerekmektedir. Bahsetmiş olduğum bileşenlerden bir tanesini yapmadığımız zaman uyguladığımız özellik alışmayacak ve Sanallaştırma platformumuz bizlere bu özelliği neden kullanamadığımızın bilgisini aktaran olay günlüklerini oluşturacaktır.

Hyper-V tarafında durum bu şekilde olduğu gibi benzer durum VMware Sanallaştırma platformu içinde geçerlidir. VMware tarafında benzer özellikleri kullanmak istediğimiz zaman VMware Tools ve Memory Balloon Driver ‘ları bulunmakta ve VMware platformu için başka alt kırılmalarda bulunmaktadır.

 

Leave a Reply

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