נהלי בדיקה להתקנות זיכרון חדשות
כשאתם קונים מחשב חדש או מקבלים אחד ואינכם בטוחים באיכות הזיכרון שיש בו, או כשאתם קונים, משדרגים או מוסיפים זיכרון חדש, כדאי שתבדקו אותו לפני שתתחילו פשוט להשתמש בו. הסיבה מורכבת למדי. בסבירות גבוהה הזיכרון או יעבוד או לא יעבוד, ואם המכונה עובדת זה יהיה סימן טוב לכך שהזיכרון תקין. אבל בחלק קטן מהמקרים המכונה שלכם עלולה להפגין התנהגות מוזרה מאוד באמת. תוכניות שונות קורסות, המכונה נתקעת, קריסות קרנל וכיוצא באלה. במקרה כזה, שעשוי להתרחש זמן מה אחרי השדרוג, אתם עלולים לא לקשר בין התסמינים לבין בעיות חומרה של זיכרון, ולייחס אותם לגורמים אחרים כמו שדרוגי מערכת הפעלה, התקנות דרייברים או תקלות בציוד היקפי אחר. הדבר עלול להוביל אתכם, כפי שהוביל אותי, למרדפים אחר בעיות שאינן קיימות, מה שבוודאי ישגע אתכם או יביא אתכם לכתוב פוסטים בבלוג בארבע לפנות בוקר. אז מה אני מציע? נוהל פשוט וקצר בן שני שלבים שיש לבצע כשמשתמשים בזיכרון חדש, כדי לוודא שהזיכרון שלכם מתפקד ומוגדר כראוי. זה גם יכול לחסוך לכם כסף, שכן מניסיוני ההסתברות לקנות זיכרון פגום גבוהה מאוד (לפחות 15% לפי הסטטיסטיקה שלי).
השלב הראשון הוא להריץ את memtest86+ הידוע לשמצה. הוא זמין דרך תפריט האתחול של רוב הפצות הלינוקס העדכניות. הבדיקה הזו רצה זמן מה, ושנים ארוכות של שימוש בה הובילו אותי לסטטיסטיקה מוצקה שלפיה אם memtest אינו מוצא בעיה בזיכרון שלכם ב־30 השניות הראשונות, הוא לא ימצא בעיות גם ב־30 השעות הבאות. אבל שוב, זו רק סטטיסטיקה, אתם מוזמנים להריץ את זה כמה שתרצו. אם memtest נכשל, החזירו את השבבים ליצרן וקבלו חדשים (אם אתם מרגישים שזו אשמת השבבים — ראו את ההערה למטה). אם הוא מצליח, עליכם להמשיך לשלב השני של הגדרת הזיכרון כראוי.
לאחר שהזיכרון מותקן, פתחו את הגדרות ה־BIOS וראו כיצד הוא מוגדר. כיצד מוגדרים הפרמטרים שלו (מהירות ועוד 4 מספרים)? האם הוא במצב אוטומטי או ידני? האם יש לכם בנקי זיכרון הטרוגניים? אם כן, מהי מהירות כל אחד ומהי המהירות הכוללת של תת־מערכת הזיכרון כולה? מדוע שתדעו את כל המידע הזה, תשאלו בצדק. ובכן, בעולם מושלם הייתם פשוט קונים זיכרון, מחברים אותו, וה־BIOS היה מגדיר ומשתמש בו כראוי. אבוי, זה אינו העולם שבו אנו חיים. במציאות אתם קונים בדרך כלל את לוח האם בתאריך X וקונים את השדרוג או הזיכרון החדש בתאריך Y. Y הוא כמה שנים אחרי X. פירוש הדבר שהזיכרון שאתם קונים מהיר מדי עבור לוח האם שלכם. האם ה־BIOS שלכם לא אמור להתמודד עם זה? ובכן, כן ולא. בהרבה מקרים הוא כן מצליח להתמודד עם זה, אבל בחלק לא, ותאמינו לי, אתם לא רוצים להיתקע במקרים האחרונים.
במקרה שלי התקנתי זיכרון DDR2 800 MHz על לוח Intel סטנדרטי שלא התלונן, וה־BIOS הריץ את הזיכרון הזה במהירות האופטימלית שנבחרה אוטומטית של 800 MHz. לא הייתה שום בעיה עם הזיכרון ולכן memtest רץ בצורה חלקה. פשוט כששני הליבות ניגשו אליו יחד במהירות גבוהה, הן הפעילו עליו יותר לחץ מ־memtest, ותקלות זיכרון החלו להתרחש.
הבדיקה השנייה היא פשוט לראות אם הזיכרון עובד כראוי עם ריבוי ליבות. אפשר להשתמש בשלב הזה גם כדי לבצע "אוברקלוקינג" ל־RAM ולוודא שלא תחוו תופעות לוואי מוזרות מהאוברקלוקינג הזה. בשלב הזה נבדוק את הזיכרון בפועל תוך שימוש ב־N הליבות. מצאתי שהדרך הטובה ביותר להשיג זאת היא פשוט לקמפל את הקרנל של לינוקס על המכונה באמצעות make -j N כאשר N הוא מספר הליבות שלכם. בכל פעם שהיו לי בעיות זיכרון, הקומפילציה הזו הייתה קורסת בדרך מרהיבה כלשהי ובמקומות אקראיים, ולכן שימשה כסימן ברור לבעיות RAM.
אם ברצונכם ללמוד עוד על memtest וריבוי ליבות, בדקו את זה ואת זה בלוח הדיונים של memtest86+. נראה של־memtest86 (בניגוד ל־memtest86+) כן יש תמיכה בריבוי ליבות. מגניב. הבעיה היא שבמערכות לינוקס בדרך כלל memtest86+ הוא היחיד שמותקן...
אם ברצונכם לדעת כיצד לקמפל קרנל לינוקס, למדו עוד בכתובת הזו.
memtester: יש חבילה בשם memtester בלינוקס שבודקת זיכרון ממרחב המשתמש. באובונטו החבילה נקראת פשוט memtester. היא מפותחת כאן. ניסיתי אותה והיא פיסת קוד נאה, אך היא אינה מבצעת בדיקה מרובת־תהליכונים עם זיקת מעבד. עליכם לעשות זאת בעצמכם בשורת הפקודה על ידי הרצת שני מופעים של memtester והקצאתם למעבדים שונים באמצעות taskset. בעיה נוספת עם memtester היא שעליכם ליידע אותה כמה RAM לבדוק, וזה קשה מאוד לעשות משום שאתם רוצים לבדוק כמה שיותר. פירוש הדבר שעליכם לחשב את הגודל לבדיקה, שהוא בערך total_ram_size-(size_of_os+size_of_all_currently_running_programs) — חישוב קשה, ואם תטעו בו התוכנית עלולה להיכשל שכן היא נועלת את הזיכרון שהיא מקבלת באמצעות mlock, ולשם כך דרושה לכם הרשאה. היא גם עלולה להשליך לאזור ההחלפה תוכניות אחרות שאתם מריצים באותו זמן (שכן הן אינן נעולות בזיכרון).
הקומפילציה של הקרנל שהוזכרה למעלה עדיפה לדעתי מהסיבות הבאות: היא משתמשת בכל המעבדים שלכם, והיא גם משתמשת בכל ביט אחרון של RAM שיש לכם, שכן הקרנל גדול ובשלב הקומפילציה ינצל את כל מטמון הלינוקס שלכם, כלומר את כל הזיכרון הפנוי שלכם.
הערה: כפי שמצוין בתיעוד של memtester, אם אתם אכן מוצאים בעיות בזיכרון שלכם, ייתכן שזו כלל אינה אשמת שבבי הזיכרון. ייתכן שזו אשמת לוח האם שאינו מספק מספיק חשמל לשבבים או למעבד, ייתכן שזה מעבד שמתחמם יתר על המידה, BIOS מוגדר לא נכון או סיבות אחרות.
אנא השאירו תגובות אם אתם חושבים שאני טועה בכל אחד מהדברים לעיל, ואני מבטיח לשפר את הפוסט אם תשכנעו אותי שיכולתי לעשות טוב יותר...