סימפטומים
אתה נתקל בבעיות ביצועים ביישומים ובשירותים בגירסאות שונות של Windows XP, Windows Vista, Windows Server 2003, Windows Server 2008 ו- Windows Server 2008 R2. בנוסף, אתה מבחין בתסמינים הבאים:
- הזיכרון הזמין כמעט אזל.
- מטמון קבצי המערכת צורך את רוב ה- RAM הפיזי.
- יש נפח רציף וגבוה של בקשות קריאה המאוחסנות במטמון לדיסק הקשיח.
גורם
ניהול זיכרון במערכות הפעלה של Microsoft Windows משתמש באלגוריתם מבוסס דרישה. אם תהליך כלשהו מבקש ומשתמש בכמות גדולה של זיכרון, גודל ערכת העבודה (מספר דפי הזיכרון בזיכרון ה- RAM הפיזי) של התהליך גדל. אם בקשות אלה רציפות ולא נבדקות, מערך העבודה של התהליך יגדל לצרוך את כל ה- RAM הפיזי. במצב זה, ערכות העבודה של כל התהליכים האחרים מועברות לדיסק הקשיח. אופן פעולה זה פוגע בביצועים של יישומים ושירותים מכיוון שדפי הזיכרון נכתבים ברציפות בדיסק הקשיח ונקראים מהדיסק הקשיח.
אופן פעולה זה חל גם על ערכת העבודה של מטמון קבצי המערכת. אם קיים נפח רציף וגבוה של בקשות קריאה המאוחסנות במטמון מתהליך כלשהו או ממנהל התקן כלשהו, גודל ערכת העבודה של מטמון קבצי המערכת יגדל כדי לענות על דרישה זו. מטמון קבצי המערכת צורך את ה-RAM הפיזי. לכן, כמויות מספיקות של זיכרון RAM פיזי אינן זמינות לתהליכים אחרים.
בגירסאות 32 סיביות של מערכות ההפעלה Microsoft Windows הקודמות ל- Windows Vista, לערכות העבודה של מטמון קבצי המערכת יש מגבלת זיכרון תיאורטית של פחות מ-1 ג'יגה-בית (GB). המגבלה של טווח הכתובות הווירטואליות מונעת מערכות העבודה של מטמון קבצי המערכת לנצל את ה- RAM הפיזי.
בגירסאות 32 סיביות של מערכות ההפעלה Windows Vista, משאבי ליבה מוקצים באופן דינאמי. ערכת העבודה של מטמון קבצי המערכת גדלה כדי לצרוך את טווח הכתובות הווירטואליות של מצב הליבה על חשבון משאבי ליבה אחרים. המגבלה של טווח זיכרון זה קטנה מ- 2 GB. אם למחשב יש יותר מ- 2 GB של RAM פיזי, המטמון לא יכול לנצל את כל ה- RAM הפיזי. עם זאת, המטמון יכול לנצל את שטח הכתובות הווירטואליות בליבה. מצב זה עלול לגרום לכשלים בהקצאה של רכיבי ליבה אחרים.
בגירסאות 64 סיביות של מערכות הפעלה Windows, גודל טווח הכתובות הווירטואליות בדרך כלל גדול יותר מזה של ה- 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
בעת הפעלת הכלי, בחר באפשרות Use Counts . פעולה זו מציגה מספר עמודות המציגות את הדפוס הנוכחי של שימוש בזיכרון. לחץ על העמודה הפעילה כדי למיין לפי מספר הבתים שנמצאים בשימוש, ורשום את השימוש העליון ישירות מתחת לסכום.
אם ספירת השימוש המרבית היא "Metafile", ואם חלק גדול מהזיכרון הזמין נמצא בשימוש, אתה נתקל בבעיית מטמון קבצי המערכת המתוארת בסעיף "מאפייני הבעיה". באפשרותך לאמת זאת על-ידי שימוש בצג הביצועים כדי לנטר את מונה הבתים התושבים של זיכרון\מטמון המערכת ולראות כיצד המטמון גדל ברציפות לאורך זמן.
איור 1. דוגמה לפלט RamMap שבו המחשב נתקל בבעיה.
איור 2. דוגמה לפלט RamMap שבו המחשב אינו נתקל בבעיה.
אם מונה הבתים התושבים של זיכרון\מטמון מערכת בצג הביצועים מציג מגמת עלייה לאורך זמן, המחשב נתקל בבעיה, כפי שמוצג באיור 3.
איור 3. דוגמה לפלט של צג ביצועים שבו המחשב חווה את הבעיה לאורך זמן.
דרישות הפעלה מחדש
אין צורך להפעיל מחדש את המחשב בעת התקנה, הסרת התקנה או שימוש בשירות זה.
אם אתה קורא מאמר זה מכיוון שאתה עובד עם לקוח שסבור שהוא מושפע מבעיה זו, בצע את השלבים הבאים כדי לסייע בפתרון הבעיה.
ודא שפלט 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:00000064Exchange 2007, כדאי לך לנסות 500 MB:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:000001F4
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064SQL 2005 ואילך, בעבר, בעת עבודה עם SQL EE, השתמשו ב- 2GB:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:000007D0
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064
מידע נוסף
כדי לעקוף בעיה זו, השתמש בפונקציית ה- API GetSystemFileCacheSize ובפונקציית ה- API SetSystemFileCacheSize כדי להגדיר את ערך הגודל המרבי או המינימלי עבור ערכות העבודה של מטמון קבצי המערכת. השימוש בפונקציות אלה הוא השיטה הנתמכת היחידה להגבלת צריכת הזיכרון הפיזי על-ידי מטמון קבצי המערכת.
שירות המטמון הדינאמי של Microsoft Windows הוא שירות לדוגמה המדגים אסטרטגיה אחת לשימוש בממשקי API אלה כדי למזער את ההשפעה של בעיה זו.
התקנה ושימוש בשירות המטמון הדינאמי של Microsoft אינם גורמים לאי-הכללה של התמיכה ב- Microsoft Windows. שירות זה וקוד המקור שלו ניתנים כדוגמה לשימוש בממשקי ה- API הנתמכים של Microsoft כדי להפחית את הגידול במטמון של מערכת הקבצים.
תוכל להשיג את השירות ואת קוד המקור מאתר האינטרנט הבא של Microsoft:
משאבים נוספים
קרא את פרקים 9 (ניהול זיכרון) ו-10 (מנהל מטמון) של Windows Internals, המהדורה החמישית.
ניהול זיכרון (בעיות במטמון מערכת גדול) פרסום בבלוג
בעיות איטיות בהעתקת קבצים גדולים רשומת בלוג
מגבלות זיכרון עבור מהדורות Windows
976618 אתה נתקל בבעיות ביצועים ביישומים ושירותים כאשר מטמון קבצי המערכת צורך את רוב ה- RAM הפיזי
918483 כיצד להפחית את ההחלפה של זיכרון מאגר המאגר בגירסת 64 סיביות של SQL Server
895932 דברים שיש לקחת בחשבון לפני הפיכת מצב מטמון מערכת לזמין ב- Windows XP
232271 כיצד למטב את Windows NT Server באמצעות הרישום
837331 אודות מנהל המטמון ב Windows Server 2003
http://technet2.microsoft.com/windowsserver/en/library/EFA621BD-A031-4461-9E72-59197A7507B61033.mspx
מצב
Microsoft אישרה שזוהי בעיה במוצרי Microsoft המפורטים בסעיף "חל על".