Swap וזיכרון וירטואלי בלינוקס - המדריך המעשי¶
הרצתם free- בטרמינל וראיתם שורה בשם Swap עם מספר לא אפס, והתחלתם לדאוג שמשהו לא בסדר במחשב. ברוב המקרים, אין שום סיבה לדאגה - swap הוא חלק נורמלי ובריא מהאופן שבו לינוקס מנהל זיכרון, לא סימן תמידי לבעיה.
מה זה בעצם swap¶
swap הוא שטח על הדיסק שהמערכת יכולה להשתמש בו כאילו הוא זיכרון נוסף, כשהזיכרון הפיזי (RAM) מתמלא. כשהמערכת זקוקה לזיכרון נוסף ואין לה מספיק RAM פנוי, היא לוקחת עמודי זיכרון שלא נעשה בהם שימוש פעיל לאחרונה, כותבת אותם לאזור swap בדיסק, ומפנה בכך את המקום שלהם ב-RAM לתהליכים שכן פעילים כרגע. כשעמוד שהועבר ל-swap נדרש שוב, המערכת קוראת אותו בחזרה מהדיסק ל-RAM.
זה מנגנון חיוני שמאפשר למערכת להמשיך לפעול גם כשהיא כמעט גומרת את הזיכרון הפיזי, במקום פשוט לקרוס או להרוג תהליכים בבהלה.
למה swap איטי בהרבה מ-RAM¶
הבעיה עם swap היא שדיסק, גם דיסק SSD מהיר, איטי בסדרי גודל בהשוואה לזיכרון RAM. כשהמערכת נאלצת להשתמש ב-swap בצורה כבדה ומתמשכת, מצב שנקרא thrashing, הביצועים צונחים בצורה דרמטית - המחשב מרגיש תקוע, כי הוא כל הזמן קורא וכותב עמודי זיכרון מהדיסק במקום פשוט לעבוד מול RAM מהיר.
זו הסיבה שראייה מתמדת של שימוש כבד בswap, בניגוד לשימוש קטן ומזדמן, כן מעידה על בעיה - או שיש יותר מדי תהליכים שרצים ביחס לכמות ה-RAM שיש, או שתהליך מסוים דולף זיכרון.
איך בודקים כמה swap נמצא בשימוש¶
הפקודה הפשוטה ביותר היא free- עם הדגל h-, שמציגה את הכמויות בפורמט קריא:
הפלט מציג שורה נפרדת ל-Mem ושורה ל-Swap, עם עמודות של סך הכל, בשימוש, ופנוי. שימוש קטן בswap, כמו כמה עשרות מגה בייט מתוך זיכרון גדול, הוא בדרך כלל תקין לגמרי - זה סימן שהמערכת מנצלת בחוכמה זיכרון שלא היה בשימוש פעיל, לא סימן לבעיה. בעיה אמיתית נראית כמו שימוש swap גבוה יחסית לגודל ה-RAM, במיוחד אם הוא נשאר גבוה לאורך זמן.
יצירת קובץ swap¶
בשרתים רבים, במיוחד מכונות ענן קטנות, לא תמיד מוגדר swap כברירת מחדל. אפשר ליצור קובץ swap בקלות יחסית:
הפקודות האלה יוצרות קובץ בגודל 2 גיגה בייט, מגבילות את ההרשאות שלו כך שרק root יכול לקרוא אותו, מכינות אותו כאזור swap, ומפעילות אותו. כדי שהswap ימשיך לעבוד גם אחרי הפעלה מחדש, צריך להוסיף שורה מתאימה לקובץ fstab/etc/-.
מתי swap דווקא מזיק¶
בשרתים שרצים על SSD, ובמיוחד על אחסון ענן מסוג מסוים, שימוש כבד בswap יכול גם לקצר את חיי הדיסק ולהאט אותו, לא רק להאט את המערכת. לכן בשרתים שנועדו לביצועים גבוהים ורגישים, לרוב עדיף להוסיף עוד RAM אמיתי במקום להסתמך על swap גדול, ולהשאיר את הswap כרשת ביטחון קטנה בלבד למקרי קיצון.
לסיכום¶
swap הוא לא אויב, אלא מנגנון גמישות שמאפשר למערכת לינוקס לספוג עומסי זיכרון זמניים בלי לקרוס. הנקודה החשובה היא לדעת להבחין בין שימוש קטן ותקין לבין שימוש כבד ומתמשך שמעיד על בעיה אמיתית שדורשת טיפול, בין אם בהוספת RAM ובין אם בבדיקת תהליך שצורך יותר מדי זיכרון.
רוצים להעמיק עוד בניהול תהליכים וזיכרון בלינוקס? יש לנו קורס לינוקס בסיסי מלא בחינם שבונה את הידע הזה שלב אחרי שלב.
יש לכם שאלה על swap או ניהול זיכרון בלינוקס? בואו לדבר בדיסקורד.