בחירת מספר ה- vCPU והליבות עבור מכונה וירטואלית
בעת יצירת מחשבים וירטואליים ברכיבי Hypervisor שונים (VMWare, KVM, Hyper-V וכו '), ייתכן שתראה שלפעמים מכונה וירטואלית עשויה שלא לראות את כל שקעי המעבד הווירטואלי (vCPU) שהוקצו לה. במקרה שלנו, 8 vCPUs הוקצו למחשב וירטואלי KVM ו- Windows 10 הותקן עליו כמערכת הפעלה אורחת. עם זאת, Windows זיהה vCPUs אלה כמעבדים נפרדים (לא ליבות) והוא יכול להשתמש רק 2 מהם.
מחשב וירטואלי של Windows 10 המשתמש בשתי ליבות בלבד
אם תפתח את מנהל ההתקנים של Windows, תוכל לוודא שכל הליבות שהוקצו גלויות כ- 8 מעבדים וירטואליים נפרדים QEMU Virtual CPU גירסה 2.5+.
במקביל, מאפייני Windows 10 (מאפייני מחשב ->) ומנהל המשימות מראים כי רק 2 מעבדים וירטואליים של QEMU זמינים.
זה אומר כי Windows 10 הוא מסוגל להשתמש רק 2 ליבות, לא משנה כמה מהם תוסיף. במקביל, שרת וירטואלי שבו פועל Windows Server 2016 באותו Hypervisor יכול לראות את כל 16 vCPUs שהוקצו אליו.
מספר המעבדים הנתמכים ב- Windows
הבעיה היא שלגירסאות שולחן העבודה של Windows (Windows 10/8.1/7) יש הגבלה על המספר המרבי של מעבדים פיזיים (שקעים) שמחשב יכול להשתמש בהם:
Windows 10 Home - מעבד אחד
Windows 10 Professional - 2 מעבדים
Windows 10 Workstation - עד 4 מעבדים
Windows Server 2016 - עד 64 CPU
עם זאת, הגבלה זו אינה קשורה למספר הליבות. כדי לשפר את הביצועים של המחשב הווירטואלי שלך, באפשרותך להשתמש במעבד עם ליבות נוספות. רוב רכיבי ה- Hypervisor יכולים לספק vCPU כמעבדים, ליבות מעבד או אפילו הליכי משנה. זה אומר שבמקום 8 vCPUs, אתה יכול להוסיף 2 vCPUs (2 שקעים) עם 4 לכל שקע. בואו נראה כיצד להקצות מעבדים וירטואליים כמו ליבות hypervisors שונים וכיצד לקשור אותו לארכיטקטורת NUMA המשמש מעבדים מודרניים.
ניהול ליבה וירטואלית ו-vCPU ב-KVM
במחשב הווירטואלי KVM שלי שבו פועל Windows 10, כל הליבות הווירטואליות שהוקצו נחשבות למעבדים נפרדים.
כדי להשתמש בכל משאבי המעבד שהוקצו למחשב וירטואלי, עליו לראות מעבד אחד בן 8 ליבות, 2 vCPUs עם 4 ליבות כל אחד או vCPU אחד עם 4 ליבות בשני הליכי משנה במקום 8 vCPU. בואו ננסה לשנות את הקצאת הליבות הווירטואליות עבור המכונה הווירטואלית KVM.
כבה את המחשב הווירטואלי:
virsh shutdown w10testvm
- כאשר W10TestVM הוא שם המחשב הווירטואלי שלך
הצג את תצורת XML הנוכחית של המחשב הווירטואלי KVM:
# virsh dumpxml w10testvmאנו זקוקים לבלוק המתאר את הגדרות המעבד של VM:
<vcpu placement='static'>8</vcpu>
<cputune>
<shares>1000</shares>
</cputune>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.6.0'>hvm</type>
<bootmenu enable='yes'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>כפי שאתה יכול לראות, 8 vCPUs מוגדרים כאן. בואו נשנה את התצורה:
# virsh edit w10testvmהוסף את הבלוק הבא לאחר </תכונות>:
<cpu mode='host-passthrough' check='none'>
<topology sockets='1' cores='4' threads='2'/>
</cpu>איפה:
host-passthroughהוא מצב האמולציה שבו המחשב הווירטואלי רואה את המעבד הפיזי של צומת האשכול
sockets='1'מציין שיש vCPU אחד (שקע)
cores='4'למעבד 4 ליבות לכל שקע
threads='2'ieach Core יש 2 חוטים
שמור את קובץ התצורה והפעל את המחשב הווירטואלי. היכנס ל- VM אורח של Windows 10, הפעל את מנהל המשימות או את צג המשאבים וודא ש- Windows רואה את כל הליבות הווירטואליות שהוקצו.
מעבד פיזי של המארח, מעבד Intel(R) Xeon(R) Silver 4114, מוצג כעת במקום מעבד וירטואלי במאפייני המערכת.
כך הצלחנו לפתור את בעיית העומס הכבד עבור ה-VM מכיוון ששתי ליבות לא הספיקו כדי שהאפליקציות יעבדו כראוי.
הגדרת מספר הליבות לכל vCPU עבור VMWare VM
באפשרותך לשנות את האופן של מצגת vCPU עבור מחשב וירטואלי של VMWare בממשק לקוח vSphere.
כבה את המחשב הווירטואלי ופתח את ההגדרות שלו;
הרחב את קטע המעבד;
שנה את תצורת ה- VM כך שמערכת ההפעלה האורחת תוכל לראות 2 מעבדים עם 4 ליבות כל אחד. שנה את הערך Cores per Socket ל- 4. המשמעות היא שמערכת ההפעלה האורחת תראה שני מעבדים בעלי 4 ליבות (2 שקעים עם 4 ליבות לכל שקע);
שמור את השינויים והפעל את המחשב הווירטואלי.
ארכיטקטורת vCPU ו-NUMA של מכונה וירטואלית
ישנם כמה היבטים נוספים של הקצאת vCPUs וליבות למכונות וירטואליות שעליך להבין.
בעת הקצאת מספר הליבות לכל שקע, ודא אם יש לך ארכיטקטורת NUMA (המשמשת ברוב המעבדים המודרניים). לא מומלץ להקצות יותר ליבות לכל שקע (ואת המספר הכולל של vCPUs) ל- VM מאשר מספר הליבות הזמינות בשקע הפיזי שלך (צומת NUMA). כאשר הוא ממוקם בצומת NUMA פיזי יחיד, מחשב וירטואלי יוכל להשתמש בזיכרון RAM מקומי מהיר הזמין בצומת NUMA הספציפי. אחרת, תהליכים יצטרכו לחכות לתגובה מצומת NUMA אחר (זה לוקח זמן רב יותר).
אם תקצה שני שקעים וירטואליים נפרדים ל- VM, ה- Hypervisor יוכל להפעיל אותם בצמתי NUMA שונים. זה ישפיע על הביצועים של ה-VM.
אם מספר ה- vCPUs הדרושים הוא יותר ממספר הליבות בשקע פיזי אחד (צומת NUMA), צור מספר שקעים וירטואליים (מעבדים) עם מספר הליבות הדרוש. כמו כן, לא מומלץ להשתמש במספר אי-זוגי של מעבדים (עדיף להוסיף 1 vCPU).
זה מאפשר לשמור על ביצועי המחשב הווירטואלי.
לדוגמה, מומלץ להשתמש בתצורה הבאה עבור מארח בעל שני מעבדים עם 10 ליבות לכל שקע (40 vCPUs זמינים בסך הכל, כולל Hyper—Threading) בעת קביעת תצורה של vCPUs עבור VM:
| דרוש מספר vCPU | מספר שקעים וירטואליים בהגדרות VM | מספר ליבות לכל מעבד וירטואלי בהגדרות VM |
| 1 | 1 | 1 |
| …… | ||
| 10 | 1 | 10 |
| 11 | לא אופטימלי | |
| 12 | 2 | 6 |
| …… | ||
| 20 | 2 | 10 |
בגרסת ESXi חינמית לא ניתן ליצור VM עם יותר מ- 8 vCPU.
לדוגמה, VM שבו פועל Microsoft SQL Server 2016 Enterprise Edition עם 16 vCPU (בתצורה של 8 שקעים עם 2 ליבות לכל שקע) יהיה בעל ביצועים גרועים יותר מאשר VM עם 2 שקעים x 8 ליבות לכל Socket.
זכור גם שיישומים מסוימים מורשים בהתאם למספר השקעים הפיזיים (כפי שהיה בגירסאות קודמות של SQL Server). לפעמים זה רווחי יותר רישיון מעבד מרובה ליבות אחד מאשר מעבדים מרובים עם מספר קטן יותר של ליבות.
גירסאות מודרניות של Windows Server מורשות בסביבה וירטואלית בדרך מיוחדת. כמו כן, ישנם כמה היבטים של רישוי מעבדים ב- VMWare vSphere.





