Transkript
1 Hyper-V Ortamında SQL Server 2008 Çalıştırma En İyi Yöntemler ve Performans Değerlendirmeleri SQL Server Teknik Makalesi Yazarlar: Lindsey Allen, Mike Ruthruff, Prem Mehra Teknik Gözden Geçirme: Cindy Gross, Burzin Petal, Denny Lee, Michael Thomassy, Sanjay Mishra, Savitha Padmanabhan, Tony Voellm, Bob Ward Yayımlanma Tarihi: Ekim 2008 Uygulama alanı: SQL Server 2008 Özet: Windows Server 2008'deki Hyper-V, TCO'yu düşürerek ve Hizmet Kalitesini koruyarak veya geliştirerek, yeterince kullanılamayan sunucuları birleştirmek için kurumsal BT'nin kullanabileceği güçlü bir sanallaştırma teknolojisidir. SQL Server uygulamasının temel prensiplerini temsil eden bir dizi test senaryosuyla bu belge Windows Hyper-V ortamında SQL Server'ı çalıştırmak için en iyi yöntem tavsiyelerini size sunar.
2 Telif Hakkı Bu belgenin içerdiği bilgiler, Microsoft Corporation'ın bu sorunlar konusunda yayımlanma tarihindeki görüşünü belirtir. Microsoft değişen pazar koşullarına yanıt vermek zorunda olduğu için, bu belge Microsoft tarafından verilen bir taahhüt olarak değerlendirilmemelidir ve Microsoft, yayımlanma tarihinden sonra sunulan bilgilerin tutarlılığını garanti etmez. Bu teknik inceleme yalnızca bilgilendirme amaçlıdır. MICROSOFT, BU BELGEDEKİ BİLGİLERLE İLGİLİ OLARAK AÇIK, ZIMNİ VEYA KANUNİ HİÇBİR GARANTİ VERMEZ. Tüm geçerli telif hakkı yasalarına uymak kullanıcının sorumluluğundadır. Telif hakları kapsamındaki haklar saklı kalmak kaydıyla, Microsoft Corporation ın yazılı açık izni olmadan bu belgenin hiçbir bölümü herhangi bir biçimde, herhangi bir yöntemle (elektronik, mekanik, fotokopi, kayıt veya başka şekilde) veya herhangi bir amaçla çoğaltılamaz, yeniden kullanılabileceği bir sisteme yerleştirilemez veya böyle bir sistemde saklanamaz veya iletilemez. Microsoft bu belgedeki konuyu kapsayan patentlere, patent uygulamalarına, ticari markalara, telif haklarına veya başka fikri mülkiyet haklarına sahip olabilir. Microsoft'un herhangi bir yazılı lisans sözleşmesinde açıkça belirtilmedikçe, bu belgeye sahip olmak size bu patentler, ticari markalar, telif hakları veya diğer fikri mülkiyet hakları için herhangi bir lisans vermez. Aksi belirtilmedikçe, burada adı geçen şirket, kuruluş, ürünler, etki alanı adları, e-posta adresleri, logolar, kişiler, yerler ve olaylar gerçek dışıdır; gerçek şirket, kuruluş, ürün, etki alanı adı, e- posta adresi, logo, kişi, yer ve olaylarla ilişkilendirilmemeli ve bu şekilde yorumlanmamalıdır Microsoft Corporation. Tüm hakları saklıdır. Microsoft, Hyper-V, SQL Server, Windows ve Windows Server Microsoft şirketler grubunun ticari markalarıdır. Diğer tüm ticari markalar kendi sahiplerine aittir.
3 İçindekiler Giriş...4 Hyper V Yapılandırma Kurulumu ve Yapılandırması...4 Hyper V Ön Yükleme İçin Yapılacaklar Listesi ve Dikkate Alınacak Hususlar...4 Depolama Yapılandırma Tavsiyeleri...5 Test Metodolojisi ve İş Yükleri...5 Test İş Yükleri...6 Hyper V Yapılandırmalarında SQL Server'ı İzleme...7 Test Sonuçları, Gözlemler ve Tavsiyeler...10 Hyper V'de SQL Server'ı Çalıştırmanın Performans Ek Yükü...10 Doğrudan Geçiş Diskleri G/Ç Ek Yükü SQLIO...11 Sanal Makine Performans Ek Yükü: OLTP İş Yükü...13 Raporlama Sorgusu Performans Karşılaştırması...16 Veritabanı İşlemleri...17 Hyper V Kullanarak SQL Server Birleştirme Senaryoları...21 Birleştirme Ortamında Depolama Yapılandırmalarını Karşılaştırma...22 Sanal Örnek Ölçeklenebilirliği...24 Aşırı Yürütülen CPU Kaynaklarıyla Sanal Örnek Performansı...26 Birleştirme Seçeneklerini Karşılaştırma...27 Sonuç...28 Gözlemler:...28 Tavsiyeler:...29 Daha Fazla Bilgi...29 Ek 1: Hyper V Mimarisi...30 Ek 2 Donanım gereksinimleri...33 Bellek...33 İşlemciler...33 Ağ...34 Depolama...34 Ek 3 Donanım Yapılandırması...35
4 Giriş Windows Server 2008 işletim sisteminde bulunan, hiper yönetim teknolojisine dayalı Hyper-V sanallaştırma özelliği, donanım ve işletim sistemi arasında bulunan, birden çok işletim sisteminin değiştirilmeden aynı anda tek bir ana bilgisayarda çalışmasını sağlayan ince bir yazılım tabakasıdır. Hyper-V, toplam sahip olma maliyetini (TCO) düşürerek ve hizmet kalitesini (QoS) koruyarak veya geliştirerek, yeterince kullanılamayan sunucuları birleştirmek için kurumsal BT'nin kullanabileceği güçlü bir sanallaştırma teknolojisidir. Hyper-V, aksi durumda donanım yetersizliği tarafından kısıtlanacak potansiyel gelişme ve test ortamı türleri sağlar. Genelde mevcut iş yükünü birleştirmek ve büyüme alanı sağlamak için donanımı doğru ayarlamak yeterince zordur. Karışıma sanallaştırmayı da eklemek, olası kapasite planlama zorluklarını daha da artırır. Bu belgenin amacı, bir Hyper-V ortamında Microsoft SQL Server çalıştırmanın iki önemli alanına odaklanarak bunlara çözüm bulmanıza yardımcı olmaktır: Hyper-V ortamında SQL Server çalıştırmaktan kaynaklanan sistem kaynağı ek yükü Hyper-V çalışan SQL Server 2008'i ne kadar iyi ölçeklendirilebileceği Bu teknik inceleme, Hyper-V'de çalışan SQL Server'ı kapsayan çeşitli olası senaryoları temsil eden bizim bir dizi test yapılandırmalarını açıklamaktadır. Bu belgede sonuçlarımız ve gözlemlerimiz tartışılmış ve tavsiyelerimiz sunulmuştur. Test sonuçlarımız, Hyper-V'de SQL Server 2008'in istikrarlı bir performans ve ölçeklenebilirlik sağladığını gösteriyor. Windows Server 2008 Hyper-V'nin SQL Server 2008 için uygun iş yükünde güçlü bir platform olduğunu düşünüyoruz. İş yükü Hyper-V konuk sanal makinenizin kapasitesi dahilinde olduğu müddetçe, üretim iş yüklerini Hyper-V ortamında çalıştırmak faydalı bir yöntemdir. Hyper-V Yapılandırma Kurulumu ve Yapılandırması Bu bölümde, basitleştirilmiş bir Hyper-V yüklemesi için yapılacaklar listesi bulunur. Hyper-V hakkında daha fazla bilgi için, bu incelemenin sonunda bulunan ve test için kullandığımız donanımı açıkladığımız ek teknik incelemelerine ve Ek 3'e bakın. Hyper-V Ön Yükleme İçin Yapılacaklar Listesi ve Dikkate Alınacak Hususlar Donanım destekli sanallaştırmayı destekleyen bir sunucu işlemcisi kullanın. İki seçeneğiniz vardır: o Inter VT o AMD Virtualization (AMD-V) Donanım destekli sanallaştırma ve Veri Yürütme Engellemesinin (DEP) hazır ve etkin olduğundan emin olun. (Bunu BIOS ayarlarından doğrulayabilirsiniz.) Yalnızca Windows işletim sisteminin kök bölümündeki Hyper-V sunucu rolünü çalıştırın.
5 Konuk sanal makine için doğrudan geçiş diski olarak yapılandırılacak diskleri, DISKPART veya Birim Yöneticisi kullanarak kök bölümde çevrimdışı olarak ayarlayın. Konuk sanal makineye tümleştirme bileşenlerinin ( geliştirmeler ) yüklendiğinden emin olun. Sanal makine için ağı yapılandırırken eski ağ adaptörünün yerine bir ağ adaptörü kullanın. SQL Server dağıtımları için öykünmüş aygıtları kullanmaktan mümkün olduğunca kaçının. Sentetik aygıtlara nazaran bu aygıtlar daha çok CPU ek yüküne neden olabilirler. Depolama Yapılandırma Tavsiyeleri Herhangi bir SQL Server dağıtımında, düzgün boyutlandırılmış ve yapılandırılmış G/Ç performans için çok önemlidir. Sanallaştırılmış ortamlarda depolamayı yapılandırmak da farklı değildir; depolama donanımının, planlanan sanal makinelerin mevcut ve gelecekteki ihtiyaçlarını karşılamak için yeterli G/Ç iş çıkışı ve depolama kapasitesi sağlaması gerekir. Depolamanızı yapılandırırken tüm yöntemlerini izlediğinizden emin olun. Hyper-V birkaç farklı depolama seçeneğini destekler. Depolama seçeneklerinin her biri bir IDE veya SCSI denetleyicisi vasıtasıyla eklenebilir. SQL Server veri ve günlük dosyaları için sanal SCSI denetleyicisi yapılandırma seçeneğini kullandık. SQL Server G/Ç yoğun olduğundan, en iyi iki performans seçeneğinden birini tercih etmenizi tavsiye ederiz: Doğrudan geçiş diski Sabit boyutlu Sanal Sabit Diskler (VHD'ler) Dinamik VHD'ler performans nedeniyle tavsiye edilmez. Bunun nedeni dinamik VHD'lerde, diskteki öbekler sıfırlanmış öbek olarak başlar ancak dosyada herhangi bir gerçek alan tarafından desteklenmez. Bu tür öbeklerden okuma sadece sıfırlarla dolu bir öbek döndürür. Bir öbek ilk yazıldığında, sanallaştırma yığınının VHD dosyası içinde öbek için alan tahsis etmesi ve ardından meta veriyi güncellemesi gerekir. Bunun yanı sıra, mevcut bir öbeğe her gönderme yapıldığında, meta verideki öbek eşleştirmesine bakmak gerekir. Bu okuma ve yazma işlemleri için G/Ç sayısını ve CPU kullanımını artırır. Dinamik büyüme, depolama gereksinimi arttıkça yeterli disk alanı olduğundan emin olmak için sunucu yöneticisinin disk kapasitesini izlemesini de gerektirir. Sabit boyutlu VHD'ler gerekirse genişletilebilir ancak bunun için işlem sırasında konuk sanal makinenin kapatılması gerekir. Bu inceleme için test senaryolarında hem doğrudan geçiş hem de sabit boyutlu VHD depolama yapılandırmalarını kullandık. Tüm yapılandırmalarda konuk sanal makineler için sentetik SCSI denetleyicileri kullanıldı. Bu testler için kullandığımız donanım hakkında daha fazla bilgi için, bkz. Ek 3. (Not: Sentetik IDE test edilmedi.) Test Metodolojisi ve İş Yükleri SQL Server 2008 uygulamalarını Hyper-V ortamında çalıştırmak için en iyi yöntemleri ve performans değerlendirmelerini belirlemek üzere bir dizi test senaryosu seçtik. İlk test senaryomuz yerel ortam ve Hyper-V konuk sanal makine ortamındaki performans ek yükü
6 karşılaştırmasını anlamak üzere tasarlandı. İkinci test senaryomuz bir ana sunucu üzerinde konuk sanal makineyi ölçeklendirme özelliklerini anlamak için tasarlandı. Test İş Yükleri Farklı senaryoların performansını ölçmek için birkaç iş yükü kullanıldı. Bu teknik incelemede, yerel Hyper-V etkinleştirilmemiş bir Windows kurulumu anlamına gelir; kök Hyper-V etkinleştirilmiş bir Windows Hyper-V yapılandırmasında ana bölüm anlamına gelir; konuk sanal makine Windows'un kök (veya ana) bölümünde bulunan konuk sanal makine anlamına gelir. Bu senaryoların asıl odağı aşağıdakilerdi: Bir kök ve konuk sanal makinede çalışan SQL Server'ın performansını karşılaştırmak. Bir yerel Windows örneğinde çalışan birden fazla SQL Server örneğiyle birden fazla konuk sanal makinede çalışan tek SQL Server örneğinin performansını karşılaştırmak. Tek bir kök bölüm üzerinde çalışan konuk sanal makine sayısı artarken SQL Server iş yükü çıkışının ölçeklenebilirliğini gözlemlemek. Bu test için kullanılan iş yükleri, özellikleri ve her bir iş yükü için hedeflenen senaryolar aşağıdaki tabloda açıklanmıştır. Tablo 1: İş Yükleri ve Senaryolar İş Yükü Genel özellikler Hedeflenen senaryolar SQLIO GÇ iş yükü üretir. Ana ve konuk sanal makine üzerinde G/Ç performansını karşılaştırma. OLTP iş yükü Raporlama iş yükü SQL Server işletimsel iş yükü OLTP türü iş yükü müşteriyi karşılayan aracı bir uygulamaya benzer. Donanım yapılandırmasıyla ilgili daha fazla bilgi için, bkz. Ek 3. Büyük miktarda CPU ve G/Ç kaynağı kullanan raporlama sorguları. Yedekleme/Geri Yükleme, yeniden dizin oluşturma, DBCC CHECKDB. Yerel, kök ve konuk sanal makine arasında iş yükü performansı karşılaştırması. Bir yerel Windows'ta çalışan birden fazla SQL Server örneğiyle her biri tek bir SQL Server örneği çalıştıran birden fazla konuk sanal makinenin karşılaştırması. Konuk sayısı artarken iş yükü çıkışını ölçeklendirme. Yerel, kök ve konuk sanal makine arasında raporlama sorgusu performansını karşılaştırma. Yerel, kök ve konuk sanal makineleri arasında veritabanı işlemlerinin performansını karşılaştırma.
7 Aşağıdaki listede çalıştırılan iş yüklerinin her biri tarafından hedeflenen senaryolar hakkında daha fazla bilgi bulunmaktadır: SQLIO testi: SQLIO, verilen bir yapılandırmanın G/Ç kapasitesini belirlemek için kullanılan bir araçtır. Bu test senaryosu depolama ayarı olarak doğrudan geçiş diski kullanarak bir konuk sanal makine çalıştırırken G/Ç ek yükünü belirlemek için tasarlandı. OLTP iş yükü. Bu test senaryosu: o Yerel Windows ortamında çalışan SQL Server'ın performansını, bir konuk sanal makine altındaki performansıyla karşılaştırır. Bu karşılaştırma için, hem yerel örnek hem de konuk sanal makine eşit donanım yapılandırmalarıyla yapılandırıldı. o Veri ve günlük dosyaları için çeşitli depolama yapılandırmalarını kullanarak SQL Server'ın performansını karşılaştırır. Doğrudan geçiş diski yapılandırması ve VHD yapılandırmalarının karşılaştırması ve altında bulunan farklı depolama dizini ayarları (yani paylaşılan ve adanmış bellek yapılandırmaları karşılaştırması). o Windows ortamında yerel olarak çalışan birden çok SQL Server örneğinin performansını, her biri tek bir SQL Server örneği ile yapılandırılan eşit sayıda konuk sanal makineyle karşılaştırır. o Tek bir fiziksel sunucunun kök bölümüne daha çok konuk sanal makine eklendikçe iş yükü ölçeklendirmesini gözlemler. Bu durumda, gözlemlediğimiz vakalarda aşağıdakiler gerçekleşti: Tüm konuk sanal makineler için mantıksal CPU çekirdeklerinin toplamı, fiziksel CPU çekirdeklerinin sayısına eşitti. Tüm konuk sanal makinelerde ( aşırı yürütülen CPU kaynakları denilen) mantıksal CPU çekirdeklerinin toplamı, fiziksel CPU çekirdeklerinin sayısından fazlaydı. Raporlama iş yükü: Bu senaryo, Windows ortamında yerel olarak çalışan SQL Server'ın performansını, eşit donanım yapılandırmasındaki bir konuk sanal makine üzerinde çalışan SQL Server'ın performansıyla karşılaştırır. Veritabanı işlemleri: Bu senaryo, Windows ortamında yerel olarak çalışan SQL Server'ın performansını, eşit donanım yapılandırmasındaki bir konuk sanal makine üzerinde çalışan SQL Server'ın performansıyla karşılaştırır. OLTP iş yükünü kullanan senaryolarda, farklı CPU seviyeleri altındaki davranış farklarını gözlemlemek için bazı farklı iş yükü seviyeleri kullanıldı. Bu farklı iş yükü seviyelerinin ayrıntıları daha sonra bu teknik incelemede tartışılacaktır. Hyper-V Yapılandırmalarında SQL Server'ı İzleme Hyper-V yapılandırmasında çalışan SQL Server iş yüklerinin performansını Windows Sistem İzleyicisi (genellikle perfmon olarak bilinir) kullanarak izlerken dikkate alınacak bazı hususlar vardır. Kaynak kullanımını doğru olarak ölçmek için, kök bölümünde Windows tarafından ortaya çıkarılan Hyper-V sayaçlarını kullanmak gerekir. Derinlemesine bir Hyper-V izleme tartışması, bu teknik izlemenin kapsamı dışındadır. Daha fazla bilgi için, bkz. Ek 3. Bu test sırasında performans izleme konusunda bazı gözlemlerde bulunduk. Dikkate alınacak hususların çoğunluğu CPU kullanımı ölçümleriyle ilgilidir. Hyper-V çalıştıran bir sunucuda CPU
8 kullanımını izlerken, kök bölümünde çıkan Hyper-V İşlemci sayaçlarını kullanmanız gerekir. Hyper-V, CPU kullanımıyla ilgili üç ana sayaç çıkarır: Hyper-V Hiper Yönetici Mantıksal İşlemci: Tüm fiziksel sunucuda kullanılan toplam CPU kaynağı hakkında en doğru sonucu verir. Hyper-V Hiper Yönetici Kök Sanal İşlemci: Kök bölüm tarafından kullanılan CPU kaynaklarının en doğru ölçümünü sunar. Hyper-V Hiper Yönetici Sanal İşlemci: Belirli konuk sanal makineler için CPU kullanımının en doğru ölçümünü sunar. Geleneksel İşlemci Zamanı % sayaçları kök bölüm içinde izlenebilir ancak bu işlemci sayaçlarının etkili olmadığı sanallaştırma katmanları olduğu için gerçek CPU kaynak kullanımını yansıtmayabilirler. Performansı izlerken, hiper yönetici etkinken Hyper-V rolünü çalıştıran herhangi bir sunucuda CPU kullanımını Hyper-V sayaçlarını kullanarak ölçün. Daha fazla bilgi için Tony Voellm in Hyper-V performans izleme hakkındaki bloğunu okuyabilirsiniz. Şekil 1'de bu sayaçların her biri gösterilmiştir. Bu resimde, en üstteki sayaç kümesi (\\SQLBP08R900) kök bölümünde izlenir ve alttaki küme (\\sqlhv1) konuk perspektifinden izlenen sayaçları gösterir. Bu örnekte, kök bölümde görünen 16 fiziksel CPU çekirdeği ve konuk sanal makinede görülen dört mantıksal CPU çekirdeği olduğunu unutmayın. Ayrıca kökte çalışan iki konuk sanal makine olmasına rağmen, alan kısıtlaması nedeniyle yalnızca bir tanesi grafikte gösterilmiştir. İkinci sanal makinenin dört adet mantıksal işlemci sayacı grafiğin sağ tarafında devam eder. Şekil 1: Hyper V perfmon sayaçları İzleme ve bu özel sorunlar hakkında daha fazla bilgi için, Windows 2008 performans ayarlama yönergeleri sanallaştırma bölümüne ve Hyper-V sayacı bloglarına bakın.
9 SQL Server'ı izleme konusunda da bir konuk sanal makine üzerinde çalışırken özel bir husus yoktur. SQL Server sayaçları genelde ya tüketim (SQL Server'a özel kaynaklar) ya da iş çıkışı ölçümü içindir. Ek olarak, SQL Server sayaçları bir konuk sanal makinede çalışırken kök bölümde görünmezler; konuk sanal makine içinde izlenmeleri gerekir. Konuk depolama yapılandırmasına bağlı olarak G/Ç performansı ölçümü farklı olur. Gecikme, geçen zamanın ölçütüdür ve kök veya konuk makine üzerinden makul doğruluk değerleriyle ölçülebilir. Aşağıda disk performansını izleme hakkında bazı genel hususlar verilmiştir: G/Ç performansını izlemek için konuk sanal makine içinde mantıksal veya fiziksel disk sayaçlarını kullanabilirsiniz. Kök bölümdeki sayaçlar tarafından bildirilen değerlerle konuk sanal makinedeki sayaçlar tarafından bildirilen değerler arasında çok az farklılık olduğunu gördük; ancak, konuk sanal makineden izlediğimizde kök bölümünden izlediğimizden biraz daha yüksek gecikme değerleri (Ort. Disk/sn Okuma ve Yazma) gördük. Bunun nedeni sanal makine perspektifinden G/Ç'nin tamamlanmasının biraz daha uzun sürmesidir. Konuk sanal makine depolaması doğrudan geçiş olarak yapılandırılmışsa, disk kök bölümü katmanında çevrimdışı görünür ve kök bölüm içinde mantıksal disk sayaçları altında görünmez. Kök bölümde doğrudan geçiş disklerin performansını izlemek için, fiziksel disk sayaçlarının kullanılması gerekir. Testler sırasında, Windows Server 2008 fiziksel disk sayaçlarında çok yollu çözümler kullanıldığında bilinen sorunlar vardı. Bu sorunlar en son Sistem Merkezi Sanal Makine Yöneticisi GDR'sinde düzeltildi. Konuk sanal makineler depolama için VHD dosyaları kullanacak şekilde yapılandırıldıklarında ve bu VHD dosyaları ortak fiziksel disklerde bulunduğunda, disk sayaçlarını konuk sanal makineden izlediğinizde o VHD için G/Ç detaylarını görebilirsiniz. Kök bölümdeki tüm VHD dosyalarının bulunduğu bölümünü izlediğinizde disk veya disk bölümüne karşı toplam G/Ç değerlerini görebilirsiniz. Tablo 2, testlerimizin OLTP iş yükü bölümü için çalıştırılan iş yüklerinden toplanan sayaç türlerini göstermektedir. Konuk sanal makineden ve kök bölümden izleme yapıldığında performans sayaçlarında bildirilen farkları göstermektedir. Tablo 2: Sayaçlar ve İş Yükleri Ölçüm yapılan sayaçlar Konuk sanal makine Sayaç Düşük OLTP iş yükü Orta OLTP iş yükü Yüksek OLTP iş yükü İşlem/sn Toplu İş/sn İşlemci Süresi % 34,2 65,3 84,2 Öncelik Süresi % 5,1 8 8,4 Mantıksal Ort. Disk sn/okuma(_toplam) 0,005 0,006 0,007 Mantıksal Disk Okuma/sn (_Toplam)
10 İşlemci Süresi % 4,9 7,8 11,2 Kök bölüm Öncelik Süresi % 3,6 6,1 7,3 Hyper V Mantıksal İşlemci Hiper Yönetici Çalışma Süresi % 4 4,8 4,3 Hyper V Mantıksal İşlemci Toplam Çalışma Süresi % 39,1 68,7 86,5 Hyper V Mantıksal İşlemci Konuk sanal makine Çalışma Süresi % 35,1 63,9 82,1 Fiziksel Ort. Disk sn/okuma(_toplam) 0,005 0,006 0,006 Fiziksel Disk Okuma/sn (_Toplam) Her CPU başına toplu iş % (Toplu iş/sn / Konuk sanal makine Çalışma Zamanı %) 16, ,1 Not: Kök bölümde ölçülen Hyper-V sayaçları, çalışan tüm konuk sanal makinelerin toplamıdır. Test Sonuçları, Gözlemler ve Tavsiyeler Bu bölümde test sonuçlarını özetleyip analiz edecek ve sanallaştırılmış bir ortamda SQL Server'ı çalıştırmak için tavsiyelerimiz ve gözlemlerimiz hakkında ayrıntılı bilgi vereceğiz. Bu bölüm iki kategori olarak hazırlanmıştır: İlk kategoride Hyper-V ortamında SQL Server çalıştırılırken oluşan temel kaynak ek yükü tartışılmakta, ikinci grupta da SQL Server'ı sanal örnekler olarak birleştirmenin etkileri tartışılmaktadır. Hyper-V'de SQL Server'ı Çalıştırmanın Performans Ek Yükü İlk gruptaki test senaryoları ayıklanmış Hyper-V ortamında SQL Server'ı çalıştırmanın performans ek yükünü anlamak için tasarlandı. Temel değerlendirme testleri üç şekilde yürütüldü: yerel Windows ortamında Hyper-V devre dışı bırakılıp, kök bölümünde Hyper-V etkinleştirilip ve tek bir konuk sanal makinede. Her durumda, donanım yapılandırması aynıdır. Not: Yerel örnek yerel Windows ortamında çalışan bir SQL Server örneğidir ve sanal örnek konuk sanal makinede çalışan bir SQL Server örneğidir. Bu bölümde aşağıdaki test senaryoları bulunmaktadır: SQLIO kullanarak doğrudan geçiş disklerinin G/Ç ek yükünü belirleme OLTP iş yükü performansını bir yerel örnek ve sanal örnek arasında karşılaştırma Yerel bir örnek ve sanal bir örnekte raporlama sorgusu performansını karşılaştırma Ortak veritabanı işlemlerinde sanallaştırmanın etkisini gözlemleme: o Sıkıştırılmış yedekleme ve geri yükleme o Yeniden dizin oluşturma o DBCC CHECKDB
11 Doğrudan Geçiş Diskleri G/Ç Ek Yükü- SQLIO G/Ç ek yükü, sanallaştırılmış ortamlarda sorunlu bir konuydu. Bu, SQL Server gibi G/Ç yoğunluğuna sahip uygulamalar için önemli sorunlara yol açabilirdi. Hyper-V ile teknoloji değişmiştir. En iyi durum senaryosunu anlamak için en iyi G/Ç yapılandırması olan adanmış doğrudan geçiş diski kullanarak G/Ç ek yüküne baktık. Ana sistemden G/Ç alt sistemine en kısa kod yoluna sahip olduğu için doğrudan geçiş disk yapılandırmasını seçtik. Testlerde, kök bölüme ve konuk sanal makineye aynı sayıda fiziksel iğne tahsis edildi. Çeşitli rasgele ve sıralı G/Ç testlerini tekrarlayarak doğrudan geçiş diski kullanan Hyper-V'nin G/Ç ek yükünün sıfır ila minimum arasında olduğunu gördük. Doğrudan geçiş diskleri ve sanal sabit disklerin derinlemesine bir performans analiziyle birlikte daha fazla bilgi için, Tony Voellm ve Liang Yang'ın yakında çıkacak olan Windows Server 2008 Hyper-V Sanal Sabit Disk ve Doğrudan Geçiş Disk Performansı çalışmasına bakın. Ayrıca Hyper-V depolama performansı analizi hakkında buradan (http://blogs.msdn.com/tvoellm/archive/2008/09/24/what hyper v storage is bestfor you show me the numbers.aspx) daha fazla bilgi edinebilirsiniz. Depolama Yapılandırması Kök ve sanal makine için doğrudan geçiş disk yapılandırması aynıydı. Her bir yapılandırma aynı sayıda fiziksel disk kaynağı kullanan depolama dizininden mantıksal birim numaralarıyla (LUN) sunuldu. Herhangi bir LUN arasında disk düzeyinde paylaşım yoktu; başka bir deyişle, LUN'lar arasında iğne paylaşımı bulunmamaktaydı. Şekil 2'de her biri için sunulan yapılandırma gösterilmiştir. Şekil 2: Depolama yapılandırması doğrudan geçiş
12 Doğrudan Geçiş Yapılandırması Performansı İş çıkışı temeli için, tüm konuk sanal makinelerde ve kökte SQLIO testleri yapıldı. Şekil 3 ve 4'te SQLIO kullanılan rastgele ve sıralı G/Ç testlerinin sonuçları gösterilmiştir. Bu test senaryosu için iki yaygın SQL IO boyutunu seçtik (8K ve 64K). Şekil 3: Doğrudan Geçiş 8K rasgele G/Ç Şekil 4: Doğrudan Geçiş 64K sıralı G/Ç
13 Sanal Makine Performans Ek Yükü: OLTP İş Yükü Bu test senaryosunun amacı, bir aracı uygulamaya benzeyen OLTP iş yükünü kullanarak SQL Server 2008'i sanal makinede çalıştırmanın etkisini ölçmekti. Bu test için kullandığımız donanım ayarları hakkında daha fazla bilgi için, bkz. Ek 3. Temel, kök ve konuk sanal makineye göre üç düzey iş yükü çalıştırıldı. Temel, SQL Server örneğinin yerel sunucuda Hyper-V devre dışıyken çalıştırılmasıdır. Bu, geçerli olması için Windows'un yeniden başlamasını gerektiren hypervisorlaunchtype kapalı (örn. bcdedit /set hypervisorlaunchtype off) ayarı kullanılarak yapıldı. Test senaryosu vurgu seviyeleri CPU kullanımı yüzdesine göre tanımlandı. Ürün ortamında tamamen doygun CPU yaygın bir senaryo olmadığı için biz %20 ile %80 arasında bir CPU vurgu seviyesi aralığı hedefledik. Her bir iş yükü seviyesinin CPU kullanma hedefleri Tablo 3'te belirlenmiştir. Tablo 3: CPU Kullanma Hedefleri Test iş yükü Yaklaşık CPU hedefi OLTP Düşük %30 OLTP Orta %50 %60 OLTP Yüksek %80 Hyper-V konuk sanal makinesi dört adede kadar mantıksal işlemciyi desteklediğinden, doğrudan karşılaştırma için ana bilgisayar BIOS ayarlarından dört çekirdek kullanmaya ayarlandı (NUMPROC=4). Depolama yapılandırmasının etkisini anlamak için iki sanal makine, SQL Server iş yükleri için önerilen iki çeşit Hyper-V depolama yapılandırması (doğrudan geçiş diskleri ve sabit VHD) kullanılarak iki sanal makine yapılandırıldı. İş çıkışı ve İşlemci Etkisi Hyper-V rolü devre dışı bırakılmış yerel Windows Server 2008 ortamında üç iş yükü seviyesinin temel testi yapıldı. Aynı iş yükü kümesi Hyper-V etkin kök bölümünde, doğrudan geçiş disk depolaması kullanmaya ayarlanmış bir konuk sanal makinede ve sabit VHD depolama kullanan bir konuk sanal makinede çalıştırıldı. Tablo 4'te %CPU başına düşen göreli toplu iş talebi ve tüm test vakalarındaki ek yük gösterilmiştir. Bu senaryoda sistem tüm test vakalarında çok iyi sonuç verdi; yapılandırmaların hepsi aynı iş çıkışını verdi, sanal makine aynı iş çıkışına erişmek için daha yüksek CPU maliyetine neden oldu. Doğrudan Geçiş disklerinin ve sabit VHD'nin performansları yüzde birden daha az bir ek yükü farkıyla birbirine çok yakındı. Tablo 4'te OLTP iş yüklerini sanal makinede çalıştırmaktan doğan CPU ek yükü de gösterilmiştir. Yüzde olarak ek yükün daha düşük bir iş yükünde daha yüksek olduğunu gözlemledik. Sanal makineyle ilişkili belirli miktarda sabit iş ve CPU bulunmaktadır. Bu
14 daha küçük iş miktarlarına dağıtılırsa, ek yük yüzde olarak daha büyük olur. Performans ölçütü olarak aşağıdaki formülü kullandık: Toplu İş/%CPU = Toplu İş Talepleri/sn bölü CPU kullanım yüzdesi Tablo 4: OLTP iş yüklerini çalıştıran sanal makine CPU ek yükü Toplu iş talebi/s Düşük Orta Yüksek Toplu iş/%c PU Ek Yük Toplu iş talebi/s Toplu iş/%c PU Ek Yük Toplu iş talebi/s Toplu iş/%c PU Ek Yük 5 Temel ,2 %0, %0, ,8 %0.00 Kök ,5 %8, ,8 %7, ,5 %8,78 VM_PT ,1 %16, %12, ,1 %11,49 VM_VHD ,7 %18, ,9 %13, ,2 %10,81 1. Temel: Hyper-V rolü etkinleştirilen yerel bir Windows Server 2008 ortamı. Sanal ağ anahtarı kapatılmadı. 2. Kök bölüm: Windows Server 2008'de Hyper-V'nin etkin olduğu bir kök bölüm. 3. VM_PT: doğrudan geçiş diskleri, dört mantıksal işlemci ve 14 GB RAM ile yapılandırılan bir konuk sanal makine. 4. VM_VHD: sabit VHD diskler, dört mantıksal işlemci ve 14 GB RAM ile yapılandırılan bir konuk sanal makine. 5. Ek yük Temelle karşılaştırılarak hesaplanır ((Temel Toplu İşler/CPU VM Toplu İşleri/CPU)/ Temel Toplu İşleri/CPU) Şekil 5: Göreli iş çıkışı %CPU başına toplu iş talebi
15 Depolama Yapılandırması ve Performans İki konuk sanal makine de SQL Server veri ve günlük dosyaları için aynı temel disk yapılandırmasını kullandığından, bunlar doğrudan karşılaştırılabilir (iki sanal makinenin de fiziksel yapılandırma detayları bu belgede daha önce geçmiştir ve SQLIO testi için kullanılan yapılandırmayla aynıdır). Kök bölümünde görünen fiziksel disklerde bulunan tek dosyalar VHD dosyalarıydı. SQL Server veri ve günlük dosyalarını depolamak için VHD'leri kullandığımızda, Şekil 5'te gösterildiği gibi iş yükü çıkışında küçük bir etkiye dönüşen küçük bir gecikme gözlemledik. Konuk sanal makine yapılandırması için VHD kullanmanın hem yapılandırma hem de yönetim avantajları vardır. İş çıkışı/performans perspektifinden bakıldığında, düşük ağırlıklı durumlarda doğrudan geçiş ve sabit VHD arasında fark yoktur. İş yükü arttıkça doğrudan geçiş diski küçük bir performans avantajı göstermeye başlar. Şekil 6'da bu OLTP test senaryosunda kaydedilen Okuma performansı gösterilmiştir. Şekil 6: Veri birimleri (saniye başına okuma) Şekil 7'de test sonuçlarında elde edilen ortalama disk gecikmesi gösterilmiştir. Beklenildiği gibi, doğrudan geçiş diskin gecikmesi yerel depolamanın gecikmesine eşitken en çok gecikme VHD'dedir. VHD gecikmesi için bildirilen gecikme değerleri konuk sanal makine sayaçlarından bildirildi; ancak, bu değerlerle kök bölümden bildirilen değerler arasında fark bulamadık.
16 Şekil 7: Ortalama disk gecikmesi Raporlama Sorgusu Performans Karşılaştırması Raporlama sorguları genelde çok fazla CPU ve G/Ç kaynağı kullanan uzun süreli, salt okunur sorgulardır. OLTP iş yükleriyle karşılaştırıldığında, bu tür sorgular genelde düşük kullanıcı eş zamanlılığı altında yayınlanır. Bu test senaryosunda, kaynak tüketimini ve tamamlama süresini ölçmek için peş peşe dört raporlama sorgusu gerçekleştirildi. Bu dört sorgu G/Ç açısından yoğun sorgulardır ve toplanmalar nedeniyle önemli bir CPU kullanımına sahiptir. Sorguların mevcut tüm CPU kaynaklarından faydalanması için sp_configure maksimum paralellik derecesi ayarı 0 olarak ayarlanmıştır. Sorguları konuk sanal makinede çalıştırmak ve kök bölümde veya yerel ortamda çalıştırmak arasındaki fark çok azdı; konuk sanal makinelerde oldukça küçük bir performans ek yükü artışı gözlemledik. Şekil 8'de sorguların tamamlanma süreleri ve CPU tüketimi gösterilmiştir.
17 Şekil 8: Raporlama sorgusu performansı Veritabanı İşlemleri Bazı ortak veritabanı işlemleri CPU'ya oldukça yüklenir. Bu bölümdeki test sonuçları, sıkıştırılmış yedekleme ve geri yükleme, tekrar dizin oluşturma ve DBCC CHECKDB gibi veritabanı işlemlerinde sanallaştırmanın etkisini kapsamaktadır. Yedekleme ve Geri Yükleme Yedekleme ve geri yükleme işlemleri, yedekleme dosyalarının hedefi olan farklı bir fiziksel sunucudaki dosya paylaşımı kullanılarak gerçekleştirildi. Bu durumda, yedekleme ve geri yükleme disk veya işlemciye değil ağın bant genişliğine bağlıydı. Yedekleme işlemi testi için SQL Server 2008 yerel yedekleme sıkıştırmasını kullandık. Yerel bir işletim sisteminde gerçekleştirilen aynı işlemle karşılaştırıldığında, yedekleme iş çıkışında kayda değer bir CPU artışıyla %10-15 civarında bir performans kaybı vardı. Geri yükleme iş çıkışında da benzer bir düşüş gözlemlendi. Bu iş çıkışı kaybı konuk sanal makine içindeki işlemler ağ kaynaklarını yoğun şekilde kullandığında oluşan ağ ek yüküyle açıklanabilir. Testlerimizde, SQL Server Hyper-V konuk sanal makinesinden çalıştırıldığında oluşan ek yük dikkate alındığında bunun en çok kaygı uyandıran alan olduğunu gördük. Bu, G/Ç veya CPU işlemlerinde gözlemlenen herhangi bir ek yükten çok daha önemliydi. Bu test senaryosunda, yedekleme ve geri yükleme işlemi sırasında ağ iş çıkışının MB/sn aralığında olduğunu gözlemledik. SQL Server için kullanılan sunucuda da, yedekleme hedefi için ağ paylaşım dosyasının bulunduğu sunucuda da tek bir 1Gb/sn ağ adaptörü vardı. Yedekleme ve geri yükleme iş çıkışı saniyede 100 MB civarındadır. Ölçümler SQL Server