อาการ
คุณพบปัญหาด้านประสิทธิภาพในแอปพลิเคชันและบริการใน Windows XP, Windows Vista, Windows Server 2003, Windows Server 2008 และ Windows Server 2008 R2 หลายเวอร์ชัน นอกจากนี้ คุณจะสังเกตเห็นอาการต่อไปนี้:
-
หน่วยความจําที่พร้อมใช้งานเกือบหมด
-
แคชไฟล์ของระบบจะใช้ RAM ที่มีอยู่จริงส่วนใหญ่
-
มีการร้องขอการอ่านที่แคชไว้อย่างต่อเนื่องและสูงไปยังฮาร์ดดิสก์
สาเหตุ
การจัดการหน่วยความจําในระบบปฏิบัติการ Microsoft Windows ใช้อัลกอริทึมที่ยึดตามความต้องการ ถ้ากระบวนการใดๆ ร้องขอและใช้หน่วยความจําจํานวนมาก ขนาดของชุดที่ใช้งานได้ (จํานวนหน้าหน่วยความจําใน RAM จริง) ของกระบวนการจะเพิ่มขนาดขึ้น ถ้าการร้องขอเหล่านี้อย่างต่อเนื่องและไม่ได้เลือก ชุดกระบวนการจะขยายขึ้นเพื่อใช้งาน RAM จริงทั้งหมด ในสถานการณ์เช่นนี้ ชุดการงานของกระบวนการอื่นๆ ทั้งหมดจะถูกจัดหน้าไปยังฮาร์ดดิสก์ ลักษณะการนี้ลดประสิทธิภาพของแอปพลิเคชันและบริการเนื่องจากหน้าหน่วยความจําถูกเขียนลงในฮาร์ดดิสก์อย่างต่อเนื่อง และอ่านจากฮาร์ดดิสก์
ลักษณะการนี้ใช้กับชุดการที่คุณใช้งานของแคชไฟล์ระบบด้วย ถ้ามีการร้องขอการอ่านที่แคชต่อเนื่องและสูงจากทุกกระบวนการหรือจากโปรแกรมควบคุม ใดๆ ขนาดของชุดการแคชไฟล์ระบบจะขยายให้ตรงตามความต้องการนี้ แคชไฟล์ระบบใช้ RAM แบบจริง ดังนั้น RAM จริงที่เพียงพอจึงไม่พร้อมใช้งานในขั้นตอนอื่น บนระบบปฏิบัติการ Microsoft Windows เวอร์ชัน 32 บิตที่เก่ากว่า Windows Vista ชุดการดําเนินการของแคชไฟล์ระบบจะมีขีดจํากัดหน่วยความจําตามหลักปฏิบัติน้อยกว่า 1 กิกะไบต์ (GB) ข้อจํากัดของช่วงที่อยู่เสมือนจะป้องกันไม่ให้ชุดการใช้งานได้ของแคชไฟล์ระบบจากการใช้ RAM จริงจนหมด บนระบบปฏิบัติการ Windows Vista เวอร์ชัน 32 บิต ทรัพยากรต่างๆ บนแกนเวลาจะจัดสรรแบบไดนามิก ชุดที่ใช้งานได้ของแคชไฟล์ของระบบจะเพิ่มเพื่อใช้ช่วงที่อยู่เสมือนของโหมด Kernel ที่ค่าใช้จ่ายของทรัพยากรอื่นๆ ของ Kernel ข้อจํากัดของช่วงหน่วยความจํานี้น้อยกว่า 2 GB ถ้าคอมพิวเตอร์มี RAM จริงมากกว่า 2 GB แคชจะไม่สามารถใช้ RAM จริงทั้งหมดจนหมดได้ อย่างไรก็ตาม แคชสามารถใช้พื้นที่ที่อยู่เสมือนใน Kernel จนหมด ซึ่งสามารถทําให้เกิดความล้มเหลวในการจัดสรรคอมโพเนนต์ของ Kernel อื่นๆ บนระบบปฏิบัติการ Windows เวอร์ชัน 64 บิต ขนาดของช่วงที่อยู่เสมือนโดยทั่วไปแล้วจะใหญ่กว่า RAM จริง ในสถานการณ์นี้ ชุดการใช้งานได้กับแคชไฟล์ของระบบอาจเพิ่มการใช้ RAM จริงส่วนใหญ่การแก้ไข
อัลกอริทึมการจัดการหน่วยความจําในระบบปฏิบัติการ Windows 7 และ Windows Server 2008 R2 ได้รับการอัปเดตเพื่อแก้ไขปัญหาการแคชไฟล์มากมายที่พบใน Windows เวอร์ชันก่อนหน้า มีเฉพาะสถานการณ์เฉพาะบางอย่างที่คุณจะต้องใช้บริการนี้บนคอมพิวเตอร์ที่ใช้ Windows 7 หรือ Windows Server 2008 R2
วิธีการตรวจสอบว่าระบบของคุณได้รับผลกระทบหรือไม่
เมื่อต้องการตรวจสอบว่าระบบของคุณได้รับผลกระทบจากปัญหานี้หรือไม่ ให้ติดตั้งเครื่องมือ SysInternals RamMap คุณสามารถขอรับเครื่องมือจากเว็บไซต์ Windows Sysinternals ต่อไปนี้:
http://technet.microsoft.com/en-us/sysinternals/ff700229 เมื่อคุณเรียกใช้เครื่องมือ ให้เลือกตัวเลือก ใช้นับ ซึ่งจะแสดงหลายคอลัมน์ที่แสดงรูปแบบปัจจุบันของการใช้หน่วยความจํา คลิกคอลัมน์ ใช้งานอยู่ เพื่อเรียงล>บตามจํานวนไบต์ที่ใช้ และจดบันทึกการใช้งานสูงสุดไว้ใต้ผลรวมโดยตรง ถ้าการนับที่ใช้บ่อยคือ "Metafile" และถ้ามีการใช้หน่วยความจําที่มีอยู่เป็นส่วนใหญ่ คุณพบปัญหาแคชไฟล์ระบบที่อธิบายไว้ในส่วน "อาการ" คุณสามารถตรวจสอบสิ่งนี้ได้โดยใช้ Performance Monitor เพื่อตรวจสอบตัวนับไบต์ที่ไม่ได้ใช้หน่วยความจํา\แคชของระบบ และดูแคชที่ขยายอย่างต่อเนื่องเมื่อเวลาผ่านไป รูปที่ 1 ตัวอย่างผลลัพธ์ RamMap ที่คอมพิวเตอร์พบปัญหา รูปที่ 2 ตัวอย่างผลลัพธ์ RamMap ที่คอมพิวเตอร์ไม่พบปัญหา ถ้าตัวนับไบต์ที่ใส่หน่วยความจํา\แคชของระบบใน Performance Monitor แสดงแนวโน้มขึ้นเมื่อเวลาผ่านไป คอมพิวเตอร์จะพบปัญหา ตามที่แสดงในรูปที่ 3 รูปที่ 3 ตัวอย่างการแสดงผล Performance Monitor ที่คอมพิวเตอร์พบปัญหาเมื่อเวลาผ่านไป
ความต้องการในการรีสตาร์ต
คุณไม่มีสิทธิ์รีสตาร์ตคอมพิวเตอร์เมื่อคุณติดตั้ง ถอนการติดตั้ง หรือใช้บริการนี้
ถ้าคุณอ่านบทความนี้เนื่องจากคุณพยายามกับลูกค้าที่เชื่อว่าพวกเขาได้รับผลกระทบจากปัญหานี้ ให้ปฏิบัติตามขั้นตอนเหล่านี้เพื่อช่วยแก้ไขปัญหา
-
ตรวจสอบว่าผลลัพธ์ RamMap, perfmon หรือ Poolmon ของลูกค้ายืนยันว่าแคชไฟล์ของระบบใช้ RAM จริงส่วนใหญ่ ตามที่อธิบายไว้ก่อนหน้านี้
-
เมื่อต้องการขอรับบริการแคชแบบไดนามิกของ Windows ให้ ดาวน์โหลดที่นี่
-
การตั้งค่ารีจิสทรีของแคชแบบไดนามิกบางอย่างมีดังนี้:
เซิร์ฟเวอร์ไฟล์ คุณอาจต้องการทดลองใช้ 1GB [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters] "MaxSystemCacheMBytes"=dword:00000400 "MinSystemCacheMBytes"=dword:00000064 "SampleIntervalSecs"=dword:0000003c "CacheUpdateThresholdMBytes"=dword:00000064 Exchange 2007 คุณอาจต้องการลอง 500 MB: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters] "MaxSystemCacheMBytes"=dword:000001F4 "MinSystemCacheMBytes"=dword:00000064 "SampleIntervalSecs"=dword:0000003c "CacheUpdateThresholdMBytes"=dword:00000064 SQL 2005 และใหม่กว่า ในอดีตเมื่อใช้งาน SQL EE ได้ใช้ 2 GB: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters] "MaxSystemCacheMBytes"=dword:000007D0 "MinSystemCacheMBytes"=dword:00000064 "SampleIntervalSecs"=dword:0000003c "CacheUpdateThresholdMBytes"=dword:00000064
ข้อมูลเพิ่มเติม
เมื่อต้องการแก้ไขปัญหานี้ ให้ใช้ฟังก์ชัน GetSystemFileCacheSize API และฟังก์ชัน SetSystemFileCacheSize API เพื่อตั้งค่าขนาดสูงสุดหรือต่สุดของชุดการแคชไฟล์ระบบ การใช้ฟังก์ชันเหล่านี้เป็นเพียงวิธีที่ได้รับการสนับสนุนเท่านั้นในการจํากัดการใช้งานหน่วยความจําจริงโดยแคชไฟล์ของระบบ
บริการแคชแบบไดนามิกของ Microsoft Windows เป็นบริการตัวอย่างที่สาธิตกลยุทธ์หนึ่งในการใช้ API เหล่านี้เพื่อลดผลกระทบของปัญหานี้ การติดตั้งและการใช้งาน Microsoft Dynamic Cache Service ไม่ก่อให้เกิดข้อยกเว้นของการสนับสนุน Microsoft Windows บริการนี้และโค้ดต้นฉบับมีไว้เป็นตัวอย่างของวิธีใช้ API ที่สนับสนุนของ Microsoft เพื่อลดการเติบโตของแคชระบบไฟล์ คุณสามารถขอรับบริการและรหัสต้นทางจากเว็บไซต์ Microsoft ต่อไปนี้:แหล่งข้อมูลเพิ่มเติม
อ่านบท 9 (การจัดการหน่วยความจํา) และ 10 (ตัวจัดการแคช) ของ Windows Internals รุ่น 5โพสต์ในบล็อก การจัดการหน่วยความจํา (ปัญหาแคชระบบขนาดใหญ่)โพสต์ในบล็อกปัญหาการคัดลอกไฟล์ขนาดใหญ่ช้าขีดจํากัดหน่วยความจําของ Windows Releases976618คุณพบปัญหาด้านประสิทธิภาพในแอปพลิเคชันและบริการเมื่อแคชไฟล์ของระบบใช้ RAM 918483 ทางกายภาพส่วนใหญ่ วิธีการลดการแบ่งหน้าของหน่วยความจําพูลบัฟเฟอร์ใน SQL Server 895932 เวอร์ชัน 64 บิต เมื่อต้องการพิจารณาก่อนที่คุณจะเปิดใช้งานโหมดแคชของระบบใน Windows XP 232271วิธีปรับ Windows NT Server ให้เหมาะสมโดยใช้รีจิสทรี 837331เกี่ยวกับตัวจัดการแคชใน Windows Server 2003 http://technet2.microsoft.com/windowsserver/en/library/EFA621BD-A031-4461-9E72-59197A7507B61033.mspxLargeSystemCache TechNet TopicRamMap Blog Post
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"