İş 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.
Hocam Merhaba,Bu yazınız için teşekkür ederim. Büyük bir derdime derman oldu. Elinize sağlık.
Hocam teşekkür ederim yazınız için. derdime derman olmasa da bence bilgisayar konusunda insanlara verilen güzel bir bilgi.