İş hacminin arttığı ve veritabanlarının büyüdüğü günümüzde var olan memory alt yapısı, çoÄŸu zaman büyük ölçekli sorguların sonuçlarını karşılamakta yetersiz kalmaktadır. Bu yüzden gün geçtikçe yazılımsal optimize iÅŸlemleriyle birlikte sistemi koÅŸturacak, HDD, CPU ve RAM’i de iyileÅŸtiririz. Fakat bu iyileÅŸtirmeyi yaparken iÅŸletim sisteminin sözkonusu donanıma uygunluÄŸunu da gözönünde bulundurmalıyız. Bu bölümde 4 GB ve daha fazla memorynin bulunduÄŸu bir platformda SQL Server’in daha fazla fiziksel belleÄŸi kullanması için nasıl bir yönlendirme yapacağımız üzerinde duracağız.
BilindiÄŸi gibi 32 bit’lik iÅŸletim sistemleri(Windows veya Linux), en fazla 4GB fiziksel hafıza bilgisini adresleyebilir.
232 = 4,294,967,296
4,294,967,296 / (1,024 x 1,024) = 4,096
Makinede 8 GB fiziksel bellek olsa da 32 bitlik bir iÅŸletim sistemi normal ÅŸartlarda bunun sadece 4GB’ını görecektir. Bu durumda Task Manager’da daha yüksek bir rakam görülse muhtemelen bu swap file + physical memory toplamı olacaktır. 64 bit’lik (64 bit’lik CPU kullanan) bir iÅŸletim sistemi kurmaksızın 4 GB’lık RAM’ın 3GB ile 4GB arasındaki bölümün tümünü görmek imkansız. Sistemlerin 64 bit olması, daha geniÅŸ çaplı adresleme yapılmasını(2^64) yani daha büyük disklere ve fiziksel belleklere eriÅŸmemizi saÄŸlar.
264 = 18,446,744,073,709,551,616
18,446,744,073,709,551,616 / (1,024 x 1,024) / 8 = 2 exabytes
Windows işletim sisteminizin kaç bit olduğunu anlamak için BAŞLAT»ÇALIŞTIR bölümüne Winmsd.exe yazıp gelen System Information penceresindeki System Type veya Processor alanlarına bakılabilir. Burada X86 ailesi yazması, sistemin 32 bitlik olduğunu X64(itanium) veya IA64 yazması, sistemin 64 bitlik olduğunu bildirir.
Windows iÅŸletim sistemlerinin sürümüne baÄŸlı olarak farklı sayıda bellek adreslenebilmektedir. Bunların detayını MSDN’deki bu adreste bulabilirsiniz.
Bu sıkıntı aÅŸmak için Intel Mimarisi’ne eklenmiÅŸ olan PAE(Physical Addressing Extensions – Fiziksel Adres Uzantısı) özelliÄŸinin aktifleÅŸtirilir. PAE modu, iÅŸlemcilerin 4 gigabayttan (GB) fazla belleÄŸi adreslemesini saÄŸlar. İşletim sistemini bu modda baÅŸlatmak için boot.ini dosyasında aÅŸağıdaki gibi bir düzenleme yapılmalıdır.
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /PAE
AÅŸağıdaki iÅŸletim sistemler, 4 GB’dan büyük fiziksel bellekleri adreslemek için PAE modunu kullanır;
Bu yöntem ilk aÅŸamada faydalı görünse de pek avantajlı olduÄŸu söylenemez. Bu iÅŸin en doÄŸrusu 4GB RAM’in hepsini görmek ve kullanmak istiyorsanız en kısa zamanda 64 bitlik sisteme geçiÅŸ yapmanızdır.
Tipik olarak, Windows 2000 veya Windows Server 2003 altında çalışan bir iÅŸlem, default olarak en fazla 2 GB bellek adres alanına eriÅŸebilir; bu bellek fiziksel adrestir ve bir bölümü de sanal bellektir. Ne kadar çok program (ve dolayısıyla, iÅŸlem) çalışıyorsa, 2 GB adres alanı doluncaya kadar o kadar çok bellek kullanılır. Varsayılan olarak, Microsoft Windows 2000 Advanced Server ve Windows Server 2003 iÅŸletim sistemleri Çekirdek modu(kernel mode) kullanımı için 2 GB ve Kullanıcı modu(user mode) için de 2 GB sanal adres alanı ayırır. Yani bu sistemlerde herhangi bir ayar yapılmazsa program başına en fazla 2GB RAM kullanılabilir. Bunun için boot..ini dosyasına /3GB anahtarını eklemeliyiz. Bu parametre, sistemin kendisine ayırdığı 2GB’ı, 1GB’a düşürür böylece programların 4GB’ın geri kalan 3GB’ı kullanmasına imkan verilmiÅŸ olur. /3GB parametresi yalnızca 32 bitlik sistemlerinde kullanılır. /3GB anahtarını kullanabilen programların performansı artar. Tek özel durum, /3GB anahtarıyla birlikte /PAE anahtarının kullanılmasıdır.Bu durumda, iÅŸletim sistemi 16 GB’den fazla bellek kullanmaz. Bu davranışa, çekirdek sanal bellek alanı hususları neden olur. 3GB parametresi, en fazla 16GB’lık fiziksel belleÄŸe sahip sistemlerde kullanılabilir, 16GB’tan sonra desteklenmez
Bu konuda kullanılan diÄŸer arabirim, AWE(Address Windowing Extension – Adres Pencereleme Uzantıları) birimidir. Kullandığımız programların standart 32 bir adresleme aracılığıyla 4 GB’den büyük bellek adreslemesi yapmasına olanak saÄŸlayan programlama arabirimidir (API). Bu iÅŸlem, büyük veritabanı sistemleri gibi belleÄŸi yoÄŸun kullanan programların kullanım sırasında bir disk belleÄŸi dosyasına yazmasına ve dosyadan silmesine gerek kalmadan veriler için çok büyük boyutlarda fiziksel bellek ayırmasına olanak tanır. AWE arabirimi, Windows 2000(veya 2003) Advanced Server veya Windows 2000(veya 2003) Datacenter Server üzerinde uygulamaların 4GB üzeri RAM’e eriÅŸmesini saÄŸlar. ÖrneÄŸin SQL Server, bu arabirimi kullanabilmektedir. sp_configure yordamı kullanılarak AWE durumu görülebilir veya deÄŸiÅŸtirilebilir.
sp_configure 'awe enabled', 1
4 GB’den fazla bellek aralığı, bellek yöneticisi ve PAE’nin gerçekleÅŸtirdiÄŸi AWE iÅŸlevleri tarafından kullanılır. PAE olmadan, AWE 4 GB’den fazla bellek ayıramaz.
Konuyu SQL Server ile ilişkili olarak özetleyelim;
4GB RAM: /3GB (AWE arabirimi kullanılmaz)
8GB RAM: /3GB /PAE
16GB RAM: /3GB /PAE
16GB + RAM: /PAE (3GB, En fazla 16GB’lık fiziksel belleğe sahip sistemlerde kullanılabilir, 16GB’tan sonra desteklenmez)
Bu işlemlerin ardından SQL Server üzerinde awe enabled seçeneğinin 1 olarak set edilmesi ve SQL Server service restart edilmesi gerekir.
SP_CONFIGURE 'awe enabled', 1
RECONFIGURE
SQL Server 2000 Enterprise Edition üzerinde AWE bellek mimarisini aktifleÅŸtirdikten sonra SQL Server, memory’i dinamik olarak kontrol edemeyecek yani tüm memory’i kullanmaya baÅŸlayacaktır. Bu durumda o makinede baÅŸka bir SQL server veya yazılımlar varsa sıkıntı olacaktır. Bu yüzden SQL Server’a servis baÅŸladığı zaman en fazla ne kadar memory tüketeceÄŸini bildirmemiz gerekir. Bunu da yine sp_configure yordamıyla “max server memory” seçeneÄŸinde belirtiriyoruz.
sp_configure 'max server memory', 6144
reconfigure
Bu ifadede, SQL Server’in en fazla 6GB bellek bloÄŸunu kullanmasını bildirmiÅŸ olduk.




Ekim 16th, 2007 at 17:36
Hocam Merhaba,
Bu yazınız için teşekkür ederim. Büyük bir derdime derman oldu. Elinize sağlık.
Ekim 25th, 2007 at 09:48
Hocam teşekkür ederim yazınız için. derdime derman olmasa da bence bilgisayar konusunda insanlara verilen güzel bir bilgi.