İş 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;Microsoft Windows 2000 Advanced Server
Microsoft Windows 2000 Datacenter Server
Microsoft Windows Server 2003 Enterprise Edition
Microsoft Windows Server 2003 Datacenter Edition
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; Eğer Windows NT 4.0, Windows 2000 veya Windows 2003 üzerinde SQL Server 2000 Standard Edition veya SQL Server 2000 Enterprise Edition veya makinede 4GB veya daha az RAM varsa awe enabled seçeneğinin değeri daima 0 olmalıdır yani bu durumlarda AWE memory modu kullanılmamalıdır. SQL Server 2000 Enterprise Edition (SQL Server 2000 Standard Edition desteklemez) için awe enabled seçeneğinin aktif edilmesi avantaj sağlar. SQL Server 2000 Enterprise Edition, Windows 2000(veya 2003) Advanced Server üzerinde 8 GB RAM’e, Windows 2000(veya 2003) Datacenter Server üzerinde 64GB RAM’e erişebilir.Üzerinde 4GB’den fazla fiziksel bellek taşıyan Windows Server Advanced veya Datacenter sürümlerinde SQL Server 2000 Enterprise Edition’ın 4GB’den fazla RAM’e erişmesi için yukarıda bahsettiğimiz arabirimlerin boot.ini’ye girilmesi gerekmektedir. RAM’in boyutuna göre aşağıdaki gibi seçim yapılır;
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.

Leave a Reply

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