Belirtiler
Windows XP, Windows Vista, Windows Server 2003, Windows Server 2008 ve Windows Server 2008 R2'nin çeşitli sürümlerinde uygulamalar ve hizmetlerde performans sorunlarıyla karşılaşılan bir sorun vardır. Buna ek olarak, aşağıdaki belirtilere de dikkat vardır:
-
Kullanılabilir bellek neredeyse tüketildi.
-
Sistem dosyası önbelleği, fiziksel RAM'in büyük bir çoğunu kullanır.
-
Sabit diskte sürekli ve yüksek hacimde önbelleğe alınmış okuma istekleri vardır.
Neden
Microsoft Windows işletim sistemlerinde bellek yönetimi, isteğe bağlı bir algoritma kullanır. Herhangi bir işlem isteğinde bulunuyorsa ve çok fazla bellek kullanırsa, işlem çalışma kümesi boyutunun (fiziksel RAM'de bellek sayfalarının sayısı) artar. Bu istekler sürekli ve işaretsizse, sürecin çalışma kümesi tüm fiziksel RAM'i tüketecek şekilde büyüyecek. Bu durumda, diğer tüm işlemlerin çalışma kümeleri sabit diske sayfalara göre sayfalara çıkar. Bu davranış, bellek sayfaları sabit diske sürekli olarak yazıldıklarından ve sabit diskten okunmalarından dolayı uygulama ve hizmetlerin performansını azalttı.
Bu davranış, sistem dosya önbelleğinin çalışma kümesi için de geçerlidir. Herhangi bir işlemden veya herhangi bir sürücüden gelen sürekli ve yüksek hacimli önbelleğe alınmış okuma istekleri varsa, bu talebi karşılamak için sistem dosya önbelleğinin çalışma kümesi boyutu büyür. Sistem dosyası önbelleği fiziksel RAM'i kullanır. Bu nedenle, başka işlemler için yeterli miktarda fiziksel RAM kullanılamaz.
Microsoft Windows işletim sistemlerinin Windows Vista'dan önceki 32 bit sürümlerinde, sistem dosyası önbelleğinin çalışma kümelerinin 1 gigabayttan (GB) daha küçük bir bellek sınırı vardır. Sanal adres aralığının sınırlandırması, sistem dosyası önbelleğinin çalışma kümelerinin fiziksel RAM'i tüketmiş durumdan uzaklsını önler.
Windows Vista işletim sistemlerinin 32 bit sürümlerinde, çekirdek kaynakları dinamik olarak ayrılır. Sistem dosya önbelleğinin çalışma kümesi, çekirdek modunun sanal adres aralığını diğer çekirdek kaynaklarının harcaması ile tüketmek için artar. Bu bellek aralığının sınırlandırması 2 GB'den azdır. Bilgisayarda 2 GB'den fazla fiziksel RAM varsa, önbellek tüm fiziksel RAM'i tüketamaz. Bununla birlikte, önbellek çekirdekte sanal adres alanı tüketebilirsiniz. Bu da diğer çekirdek bileşenleri için ayırma hatalara neden olabilir.
Windows işletim sistemlerinin 64 bit sürümlerinde, sanal adres aralığının boyutu normalde fiziksel RAM'den daha büyüktür. Bu durumda, sistem dosya önbelleği için çalışma kümesi fiziksel RAM'in büyük bir çoğunu tüketecek şekilde artabilir.
Çözüm
Windows 7 ve Windows Server 2008 R2 işletim sistemlerindeki bellek yönetimi algoritmaları, Windows'un önceki sürümlerinde bulunan birçok dosya önbelleğe alma sorununa çözüm olarak güncelleştirildi. Bu hizmeti Windows 7 veya Windows Server 2008 R2 çalıştıran bilgisayarlara uygulamanız gereken bazı benzersiz durumlar vardır.
Sisteminizin etkilendiğini belirleme
Sisteminizin bu sorundan etkilendiğini belirlemek için SysInternals RamMap aracını yükleyin. Aracı aşağıdaki Windows Sysinternals web sitesinden edinebilirsiniz:
http://technet.microsoft.com/en-us/sysinternals/ff700229
Aracı çalıştırabilirsiniz, Sayma Sayılarını Kullan seçeneğini belirtin. Bu, geçerli bellek kullanımı desenini gösteren birkaç sütun görüntüler. Kullanılan bayt sayısına göre sıralamak için Etkin sütuna tıklayın ve doğrudan toplamın altındaki en yüksek kullanımı not edin.
En üst kullanım sayısı "Meta Dosyası" ise ve kullanılabilir belleğin büyük bir bölümü kullanılıyorsa, "Belirtiler" bölümünde açıklanan Sistem Dosyası Önbelleği sorunuyla karşılaşabilirsiniz. Bunu, Performans İzleyicisi'ne kullanarak Bellek\Sistem Önbelleği Yerleşik Baytlar sayaçlarını izleyebilir ve önbelleğin zaman içinde sürekli büyüyerek bakabilirsiniz.
Şekil 1. Bilgisayarın sorun yaşadığı örnek RamMap çıktısı.
Şekil 2. Bilgisayarın sorun yaşamay olduğu örnek RamMap çıktısı.
Performans İzleyicisi'nde Bellek\Sistem Önbelleği Yerleşik Baytlar sayaç zaman içinde yukarı doğru bir eğilim gösteriyorsa, bilgisayar Şekil 3'te gösterildiği gibi bu sorunla karşılaşıyordur.
Şekil 3. Bilgisayarın zamanla bu sorunu deneyimlene örnek Performans İzleyicisi çıktısı.
Yeniden başlatma gereksinimleri
Bu hizmeti yüklemek, kaldırmak veya kullanmak için bilgisayarı yeniden başlatmanız gerek değildir.
Bu makaleyi okuyorsanız çünkü bu sorundan etkilendiğine inanıyor bir müşteriyle çalışıyorsanız, sorunu çözmenize yardımcı olmak için bu adımları izleyin.
-
Müşterinin RamMap çıktısı, perfmon veya havuzmon verisi, daha önce açıklandığı gibi fiziksel RAM'in büyük bir çoğunu Sistem Dosya Önbelleği'nin tüketerek çalıştığını onaylar.
-
Windows Dinamik Önbellek Hizmeti'ne sahip olmak için buradan indirebilirsiniz.
-
Bazı Dinamik Önbellek Kayıt Defteri ayarları şunlardır:
Dosya sunucuları için 1 GB'lık bir deneme yapmak iyi olabilir.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:00000400
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064
Exchange 2007, 500 MB'yi denemek istiyor olabilir:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:000001F4
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064
SQL EE'lerle çalışırken geçmişte SQL 2005 ve üzerinde 2 GB kullandık:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:000007D0
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064
Ek Bilgi
Bu sorunu gidermek için GetSystemFileCacheSize API işlevini ve SetSystemFileCacheSize API işlevini kullanarak sistem dosya önbelleğinin çalışma kümelerinin en büyük veya en küçük boyut değerini ayarlayın. Bu işlevlerin kullanımı, sistem dosya önbelleği tarafından fiziksel bellek kullanımını kısıtlamak için desteklenen tek yöntemdir.
Microsoft Windows Dinamik Önbellek Hizmeti, bu sorunun etkilerini en aza indirmek için bu API'leri kullanma stratejisini gösteren örnek bir hizmettir.
Microsoft Dinamik Önbellek Hizmeti'nin yüklanması ve kullanımı, Microsoft Windows desteğinin hariç tutulmasına neden olmaz. Bu hizmet ve onun kaynak kodu, dosya sistemi önbelleğinin büyümesini azaltmak için Microsoft tarafından desteklenen API'leri kullanmanın bir örneği olarak sağlanır.
Hizmet ve kaynak kodunu aşağıdaki Microsoft web sitesinden edinebilirsiniz:
Ek Kaynaklar
5. Sürüm olan Windows internals'in 9. (Bellek Yönetimi) ve 10 (Önbellek Yöneticisi) bölümlerini okuyun.
BELLEK YÖNETIMI (BÜYÜK SISTEM ÖNBELLEĞI SORUNLARı) Blog Gönderisi
Yavaş Büyük Dosya Kopyalama Sorunları Blog Gönderisi
Windows Sürümler için Bellek Sınırları
976618 Sistem dosya önbelleği fiziksel RAM 918483'in büyük bir sürümünü tükettiğinde uygulamalar ve hizmetlerde performans sorunlarıyla karşılaşılan bir sorun
vardır. SQL Server 895932 Things'in 64 bit sürümünde arabellek havuzu belleğinin disk boyutunu azaltma Windows XP 232271'de Sistem önbellek modunu etkinleştirmeden önce,
Windows Server
2003'te Kayıt Defteri837331
Hakkında'yı Kullanarak Windows NT Server'ı İyileştirin http://technet2.microsoft.com/windowsserver/en/library/EFA621BD-A031-4461-9E72-59197A7507B61033.mspx LargeSystemCache TechNet Konu RamMap Blog Gönderisi
Durum
Microsoft bu sorunun "Uygulandığı öğe" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.