SQL Server’da Maksimum Memory Kullanımı(AWE)

SQL Server, Oracle Add comments

İş 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.

  • 2 Responses to “SQL Server’da Maksimum Memory Kullanımı(AWE)”

    1. Mehmet Gani TOMBALAK Says:

      Hocam Merhaba,

      Bu yazınız için teşekkür ederim. Büyük bir derdime derman oldu. Elinize sağlık.

    2. Cafer AKDAÄž Says:

      Hocam teşekkür ederim yazınız için. derdime derman olmasa da bence bilgisayar konusunda insanlara verilen güzel bir bilgi.

    Leave a Reply


    9 − = 5

    WP Theme & Icons by N.Design Studio
    Entries RSS Comments RSS GiriÅŸ