עבור לתוכן

על כמה לשים את הזיכרון הורטואלי של המחשב ?!

Featured Replies

פורסם

כולכם כאלה חכמים? למה אתם חושבים שאתם יודעים יותר טוב מהחבר'ה הטובים במיקרוסופט? תאמינו לי שהם חשבו על זה קצת.

תשאירו את זה על הברירת מחדל ואל תתעסקו, לא תהרסו כלום, אבל גם לא תשפרו...

ידעתם שזיכרון וירטואלי הוא חלק בלתי נפרד מהפעולה השגרתית של תהליכים? יש דברים שפשוט לא אמורים להיות בזיכרון הפיסי ומקומם בזיכרון הוירטואלי, ככה שגם אם תגרמו למחשב לשים הכל בזיכרון הפיסי, כי יש לכם הרבה, לא תקבלו תוספת לביצועים אלא גריעה, בגלל השימוש הפחות בSystem Caching.

עם כל הכבוד למיקרוסופט, ההגדרות שלהם הרבה פעמים תואמות למשתמש הממוצע, זה שרוצה שינהלו בשבילו הכל, זה שלא רוצה לשמוע על הגדרות, זה שאוהב Wizardים. אנחנו לא כאלה, ועצם זה שהמשתמש שואל את השאלה (ושמיקרוסופט מאפשרים לך לשנות את האופציה הזאת), אומרת שיש על מה לדבר.

והייתי רוצה לראות דוגמה שבו שימוש ב-RAM במקום הזכרון הוירטואלי גורעת מהביצועים. הזכרון הוירטואלי הומצא למקרים שאין מספיק RAM, ולא להיפך!

לפותח הדיון, יש לך מספיק זכרון כדי שתוכל לעבוד בלי זכרון וירטואלי, אבל רק בשביל התוכנות שצריכות את זה (כמו הדוגמה של Holy), וכדי לפתור בעיות כאלה או אחרות שעלולות לצוץ לך, אני מציע שתגדיר כמות קבועה וקטנה של זכרון וירטואלי (הייתי הולך על 50 מגה). אתה תבטיח ככה שרוב מערכת ההפעלה והתוכנות שאתה מריץ יושבות בזכרון האמיתי ותראה שיפור משמעותי בביצועים.

וחבר'ה... לא לריב. זה בסה"כ זכרון וירטואלי.

  • תגובות 37
  • צפיות 4.1k
  • נוצר
  • תגובה אחרונה
פורסם

אם יש לי 512MB? על כמה כדאי לשים?

עכשיו זה על:

Initial size: 768

maximus size: 1536

כדאי לשנות משהו?

פורסם

אני הבאתי את הלינק הזה בתור דוגמא לאפלקציה שמסרבת לעבוד בלי זיכרון וירטואלי, לא שום הסבר על איך זיכרון וירטואלי עובד.

בינתיים כולכם דיבורים, הוכחות אין לך.

אתה אתה לא יכול לפסול שום דבר עד שלא תביא הוכחה נורמאלית, גם אתה רק דיבורים.

הדוגמא שהבאת ממש לא רוונטית כי:

1) אם יהיה מספיק זכרון פיזי אני בטוח שהיא תעבוד גם בלי זכרון וירטואלי (ואני לא מדבר על 64MB, אלא נניח 256MB או יותר, אין מצב שזה לא יעבוד.)

2) זה כבר לא רלוונטי לימינו, הכתבה הזאת נכתבה בכלל לפני 7 שנים!

חוץ מזה שעוד לא הבאת שום הוכחה לטענה הבאה (בעיקר המודגשת), בחיים לא ראיתי שום אתר שאפילו מרמז על תופעה כזאת, תאיר את עיני.

המון תוכנות מקצות הרבה יותר זיכרון ממה שהן צריכות מראש, כי הן יוצאות מתוך הנחה שזיכרון וירטואלי יש בשפע והזמן שיקח להן כל פעם להקצות עוד בלוק הוא מאד יקר. לכן המחשבה היא להקצות מראש הרבה יותר ממש שצריך ובהמשך לנצל את זה במקום כל פעם להקצות עוד חלק. מה שזה יוצר זה שאתה מבזבז כמויות מהזיכרון ועלול להגיע למצב שהזיכרון נגמר למרות שלא השתמשת ברובו. בנוסף יש תוכנות שיזהו שכמות הזכרון קטנה ומראש יקצו פחות, וכך כל פעם שיגמר הזיכרון הן יקצו עוד בלוק ועוד בלוק מה שיאט מאד את פעולתן.

אם יש לי 512MB? על כמה כדאי לשים?

עכשיו זה על:

Initial size: 768

maximus size: 1536

כדאי לשנות משהו?

כן, קבע גם את הInitial size וגם את הMaximum size ל-1536

והייתי רוצה לראות דוגמה שבו שימוש ב-RAM במקום הזכרון הוירטואלי גורעת מהביצועים. הזכרון הוירטואלי הומצא למקרים שאין מספיק RAM, ולא להיפך!

לפותח הדיון, יש לך מספיק זכרון כדי שתוכל לעבוד בלי זכרון וירטואלי, אבל רק בשביל התוכנות שצריכות את זה (כמו הדוגמה של Holy), וכדי לפתור בעיות כאלה או אחרות שעלולות לצוץ לך, אני מציע שתגדיר כמות קבועה וקטנה של זכרון וירטואלי (הייתי הולך על 50 מגה). אתה תבטיח ככה שרוב מערכת ההפעלה והתוכנות שאתה מריץ יושבות בזכרון האמיתי ותראה שיפור משמעותי בביצועים.

לגבי המשפט הראשון שלך, זה נכון אבל הבעייה היא (כפי שרשמתי) שמה שאתה מקצה בInital size, את החלק הזה חלונות תמיד ימלא עד הערך שרשום בו, במידע שנלקח ישירות מהזכרון הפיזי.

הכוונה שאם הגדרת את הInital size ל1GB אז חלונות יעתיק את מה שיש בזכרון בפיזי עד שיגיע ל1GB! תחשוב שכל פעם שאתה פותח תוכנה מה הOS צריך לעשות, עצם העובדה שחלונות צריך כל הזמן להעביר מידע בתוך הקובץ הזה, כבר זה מאיט בצורה משמעותית את ביצועי המחשב.

ההמלצה שלך היא טובה! 50MB לא ממש יזיזו ובמקרה שהמשתמש יעבור את כמות הזכרון הפיזי שקיימת אצלו, המחשב יתחיל להשתמש בזכרון הוירטואלי.

הייתי ממליץ למשתמש הממוצע את ההגדרה הבאה (לבעלי 1GB זכרון):

Initial size: 50MB

maximum size:300MB

לפי הערכתי, שימוש בהגדרה כזאת תגרום למערכת ההפעלה להשתמש בVM עם יותר מ50MB רק כאשר לא יישאר לו מקום בזכרון הפיזי.

פורסם

חוץ מזה שעוד לא הבאת שום הוכחה לטענה הבאה (בעיקר המודגשת), בחיים לא ראיתי שום אתר שאפילו מרמז על תופעה כזאת, תאיר את עיני.

אם היית יודע תכנות ברמה גבוה לא היית צריך הוכחה לזה. הקצאה דינאמית של זיכרון מאד יקרה מבחינת זמן, לכן המון תוכניות מעדיפות להקצות בהפעלה שלהן מקום יחסית גדול ואחרי זה להשתמש בו לצרכים הפנימיים שלהם. במצב שאין הרבה זיכרון תוכנה יכולה לעשות אחד משני דברים

1. להמשיך להקצות הרבה מקום ולסתום את הזיכרון.

2. להקצות רק קצת מקום וכל פעם שהוא נגמר להקצות עוד, מה שיעלה בדרך כלל הרבה בזמן ריצת התוכנית.

כמעט כל התוכניות פועלות בשיטה 1, כי הן מניחות שיש זיכרון וירטואלי מספיק גדול בשביל להחזיק את ההקצאה שלהן.

ואם אתה מתעקש על הוכחה, למרות שאני בטוח שאתה תגיד שהיא לא נכונה הנה

Can the Virtual Memory be turned off on a really large machine?

Strictly speaking Virtual Memory is always in operation and cannot be turned off. What is meant by such wording is set the system to use no page file space at all.

Doing this would waste a lot of the RAM. The reason is that when programs ask for an allocation of Virtual memory space, they may ask for a great deal more than they ever actually bring into use the total may easily run to hundreds of megabytes. These addresses have to be assigned to somewhere by the system. If there is a page file available, the system can assign them to it if there is not, they have to be assigned to RAM, locking it out from any actual use.

כל מה שהיה צריך זה לחפש בגוגול allocation + virtual memory

http://aumha.org/win5/a/xpvm.php

פורסם

יש לי WIN2K וכשאני מבטל את הוירטואלי (0 בשני הערכים) הוא כותב לי כשאני מריץ תוינדוס שזה מבוטל ושאני צריך להחזיר אבל אז הוינדוס עובד רגיל

מה הולך כאן

פורסם

ב-2000 למיטב ידיעתי (ואשמח אם מישהו יתקן אותי) אי אפשר לבטל את הזכרון הוירטואלי, לפחות לא בדרכים קונבנציונאליות. לפני SP2 זה לא רק בלתי אפשרי, אלא גם מסוכן.

פורסם

שאני קובע גם את הInitial size וגם את הMaximum size ל-1536 זה לא יעשה בעיות?

יהיה שיפור בכלל?

פורסם

אני עובד על XP Pro SP2 כרגע הזיכרון על אפשרות שהווינדוס ינהל אותו.

יש לי זיכרון 256MB על איזו אפשרות הכי כדאי לשים?

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים