כשטכנולוגיה נופלת בין הכסאות

רוב הקוראים הטכניים כאן מכירים פתרונות וירטואליזציית PC כמו VMWare, Xen, KVM ועוד, ולמי שלא מכיר: הכוונה לתוכנה שמדמה 2 (או יותר) מחשבים שמריצים מערכות הפעלה דומות או שונות על המחשב המארח. מערכת ההפעלה המדומה נקראת Guest והמחשב המארח נקרא Host.

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

אינטל מכירה את הבעיה עוד ממזמן ומהנדסיה גם המציאו פתרון עוד ב-2006 לכך. הפתרון הוא מעין “תוספת” הנקראת VT-d (או איך שאינטל קוראים לזה: Intel® Virtualization Technology for Directed I/O) והוא ממומש ב-2 חלקים: ה-VT-d נמצא במעבד וה-VT-x נמצא בצ’יפ הגשר הצפוני (אפשר לקרוא על כך בהרחבה כאן)

הפתרון של אינטל, בקצרה, הוא שיטה של שימוש ב-DMA של המחשב על מנת למפות אזורי זכרון (ומכאן גם ציודים) למכונות הוירטואליות בגישה אקסלוסיבית למכונה הוירטואלית. דוגמא פשוטה: אם יש ברשותך 2 כרטיסי מסך, תוכל למפות את אחד הכרטיסים ישירות למכונה הוירטואלית, וכך תקבל ביצועים מקסימליים, תוכל להריץ משחקים, אפליקציות תלת מימדיות וכל דבר שחשקה בו נפשך מבלי להזדקק לאמולציה שתוכנת הוירטואליזציה תספק עבורך. דוגמא אחרת היא גישה אקסלוסיבית לפורטי Ethernet. כיום ההגבלה היא ברמה של תוכנת הוירטואליזציה, אבל עם VT-d ההגבלה היא ברמת ה”ברזלים”, כך שיוצא מכך שכשיש VT-d, אפשר לקבל ביצועים הרבה יותר גבוהים וגם למפות ציודי PCI וכו’ למכונות וירטואליות.

הכל טוב ויפה. ניקח מחשב רגיל (לא שרת) שנרכש בשנה, שנתיים האחרונות וניכנס ל-BIOS ונחפש את הפוקנציה הזו (היא אמורה להימצא בהגדרות של ה-North Bridge). רוב הסיכויים שאם תחפשו לא תמצאו את זה. זה קיים בחלק גדול מהלוחות שאינטל עצמה מייצרת, קיים בשרתים, קיים על מק פרו ומקבוק פרו, אבל על רוב הלוחות של שאר היצרנים זה לא נמצא. יותר גרוע: בתוכנות הוירטואליזציה גם שם התמיכה היא בעייתית, בלשון המעטה: ב-ESX (גירסאות 3.5 ומעלה) יש תמיכה ל-VT-d אבל לא ב-Workstation. ל-Xen יש תמיכה כלשהי (שמסובכת בטירוף, אגב) אבל לא ל-QEMU הרגיל. ב-Parallels יש תמיכה אך ורק בגירסא מיוחדת של התוכנה וגם אז זה רץ אך ורק על דגם מסוים של תחנת עבודה של HP. ב-KVM יש תמיכה אבל תצטרך לקמפל קרנל ולמפות ידנית את הציוד כדי “להסיר” אותו מהמכונה המארחת ולהפעיל אותו במכונה הוירטואלית.

ובכן, מדוע המצב כל כך גרוע עם VT-d? יצרני הלוחות מפנים אצבע מאשימה כלפי אינטל. כך לדוגמא חברת ASUS מדברת על כך שבשביל VT-d יש צורך ב-DMA Remappping (אותו מיפוי שכתבתי עליו פה בהתחלה) והטבלאות שאינטל מספקת ליצרני ה-BIOS וליצרנים אחרים הם בעייתיים בלשון המעטה, מה שאומר שיש לא מעט סיכוי שברגע שתפעיל את המכונה הוירטואלית, המחשב שלך כולו יתקע. אינטל מצידה דווקא לא הכניסה את טכנולוגיית ה-VT-d לכל המעבדים אלא רק למעבדי Core 2 Duo VPro ולמעבדי XEON לתחנות עבודה ושרתים. מדוע אינטל לא דחפה את הטכנולוגיה לכל המעבדי Mainstream שלה כמו שהם הכניסו את ה-VT? אה, שאלה טובה, מצוינת אפילו, אבל לאינטל אין תשובות. מצד שני, אם אתה תקנה היום מעבד כמו i7 אז הפעם זה כבר בפנים.

וכך נוצר מצב עצוב שבו יש טכנולוגיה עם פתרון לבעיות וירטואליזציה למשתמשים כבדים, אבל עקב תקלות באינטל הטכנולוגיה לא חדרה ממש לא ברמה של הסיליקון וכמעט שלא ברמה של הפתרונות וירטואליזציה הקיימים. אם אתה משתמש בתוכנה כמו VMWare Workstation או VirtualBox אז צר לי, אין תמיכה ב-VT-d כרגע, 4 שנים אחרי שאינטל המציאה (אההמ… “המציאה”.. החבר’ה ב-IBM נשפכים מצחוק) את הטכנולוגיה. אם זה לא היה עצוב, זה היה מצחיק..

איך משתמשי Sony VAIO נדפקים.. בגלל סוני

image

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

בזמן האחרון יותר ויותר אנשים שמים לב למשהו שסוני עושים שמאוד מכעיס לקוחות: סוני החליטו לבטל דרך ה-BIOS את אחת הפונקציות שיש במעבדים של אינטל: תמיכת VT, שמאפשרת להריץ מחשבים וירטואליים בצורה הרבה יותר טובה מאשר בלי התמיכה הזו. המעבדים ב-3 השנים האחרונות כוללים את התמיכה הזו, אך סוני מבטלת את התמיכה עוד בשלב ה-BIOS מבלי לתת אפשרות למשתמש להפעיל מחדש את הפונקציה הזו.

כשסוני נשאלו מדוע הם מבטלים את ה-VT במחשביהם הניידים, מי שענה המציא איזה סיפור על בעיות אבטחה, קוד זדוני שיכול לרוץ ולדפוק את המחשב והמשתמש, לעשות מלחמת עולם שלישית וגם לגרום לחתולה שלי פה להתנהג כחתולה טובה. מהנדסים מאינטל, XEN, VMWARE, מיקרוסופט ועוד חברות שמעו את הטענה והרימו גבה. הם לא קיבלו מסוני שום התראת אבטחה ממוקדת על בעיות עם VT.

אז אנשים שאלו שוב את סוני לגבי ביטול ה-VT, והפעם התשובה היתה אחרת לחלוטין: “ביטלנו את זה כי לא היה לזה ביקוש”. זו תשובה מאוד הזויה. מדוע אני צריך לבקש משהו שאינטל כבר נותנים לי בתוך המעבד? מה הלאה? לבקש במיוחד שיהיה תמיכה ב-SSE אולי? או לבקש במיוחד תמיכה ב-64 ביט? מאיפה השטויות האלו?

העניין הזה המשיך והוא מופיע בפורומים ובבלוגים שונים. אנשים קנו מחשבים, לא ידעו שהם צריכים בכלל לבדוק את זה כי אף יצרן מחשבים אחר לא מבטל את זה, ואז כשהם רצו כבר להשתמש בפתרון וירטואלי כלשהו, הם נדהמו לראות שהם אינם יכולים, או יכולים בקושי (תלוי בפתרון. ב-VMWARE לדוגמא אפשר להריץ מערכות הפעלה רגילות גם בלי VT בלי לשנות כלום במערכת ההפעלה, אבל לא בפתרון מבוסס XEN לדוגמא שמצריך שתמיכת VT תהיה פעילה). חלק התעצבנו וחלק אחר התחיל למצוא פתרונות הן ברמת החומרה (לבצע Reset ל-CMOS, לנקות את ה-NVRAM ע”י ג’אמפר) והן ברמת תוכנה (עם GRUB להיכנס ולשנות דברים ב-NVRAM). חלק הצליחו, חלק לא הצליחו.

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

הבעיה החלה “להרים ראש” בשבועות האחרונים כשאנשים החלו להתקין את חלונות 7 ולהתכונן להריץ את ה-XP Mode שדורש תמיכת VT, אז החלו לקוחות סוני רבים לגלות שהם לא יכולים להריץ את התמיכה הזו ואנשים החלו יותר להציף את סוני בבקשות תמיכה ותהיה ומה סוני הודיעה? ש”דגמים נבחרים בסידרה Z ימכרו בעתיד עם תמיכה ב-VT”, כלומר מי שקנה ושיש לו תמיכה ב-VT מצד המעבד אך חסום ע”י ה-BIOS יכול להמשיך לחפש פתרונות או לטפס על קירות, את סוני זה לא מעניין.

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

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