התאמה אישית של מספר ליבות ה-CPU הגלויות יכולה לספק שליטה מדויקת בעלויות הרישוי, תוך שמירה על הביצועים של הרשת ושל הדיסקים הקבועים. ההתאמה האישית הזו מקטינה את מספר יחידות ה-vCPU שזמינות למכונה הווירטואלית (VM), אבל היא לא משנה את סוג המכונה או את המחיר.
כל מעבד וירטואלי (vCPU) ב-Compute Engine מיושם כריבוי-הליכי משנה (multithreading) יחיד בחומרה שפועל על ליבת מעבד פיזית. כדי לצמצם את מספר יחידות ה-vCPU שזמינות למכונה וירטואלית, אפשר להתאים אישית את מספר ליבות המעבד שמוצגות ב-Compute Engine.
ליבות גלויות הן ליבות המעבד בחומרה הבסיסית שהמכונות הווירטואליות צורכות. כברירת מחדל, מספר ליבות ה-CPU שגלויות למכונה וירטואלית הוא מספר יחידות ה-vCPU בסוג המכונה חלקי מספר השרשורים לכל ליבה:
Visible CPU cores = vCPUs בסוג המכונה / threads per core
לדוגמה, סוג המכונה c2-standard-60 מציין 60 ליבות וירטואליות. בהנחה שברירת המחדל היא 2 שרשורים לכל ליבה, מספר ליבות המעבד שגלויות הוא 30. אם מקטינים את מספר ליבות ה-CPU הגלויות מ-30 ל-20, מספר ליבות ה-CPU הווירטואליות הפונקציונליות יורד מ-60 ל-40.
כדאי לשקול להתאים אישית את מספר ליבות המעבד שמוצגות אם מתקיימים שני התנאים הבאים:
אתם מריצים תוכנה, כמו Windows Server או SQL Server, שמונפק לה רישיון על סמך מספר המעבדים הווירטואליים הזמינים.
אתם משתמשים בסוגי מכונות עם קונפיגורציה מוגדרת (predefined), שלא מאפשרים לשנות את מספר ה-vCPU או את כמות ה-RAM.
לפני שמתאימים אישית את מספר יחידות ה-vCPU שזמינות למכונה וירטואלית, כדאי לשקול קודם להשתמש בסוג מכונה בהתאמה אישית.
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות להתאמה אישית של מספר ליבות ה-CPU שמוצגות, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד אדמין מכונות של Compute (v1) (roles/compute.instanceAdmin.v1) בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות להתאמה אישית של מספר ליבות ה-CPU שמוצגות. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי להתאים אישית את מספר ליבות ה-CPU שמוצגות, נדרשות ההרשאות הבאות:
-
כדי להתאים אישית את מספר ליבות המעבד (CPU) שגלויות במהלך יצירת המכונה הווירטואלית:
-
compute.instances.createבפרויקט - כדי להשתמש באימג' בהתאמה אישית ליצירת המכונה הווירטואלית (VM):
compute.images.useReadOnlyבקובץ אימג' - כדי להשתמש ב-snapshot ליצירת המכונה הווירטואלית:
compute.snapshots.useReadOnlyבקובץ ה-snapshot - כדי להשתמש בתבנית של מכונה ליצירת המכונה הווירטואלית:
compute.instanceTemplates.useReadOnlyבתבנית של המכונה - כדי להקצות רשת מדור קודם למכונה הווירטואלית:
compute.networks.useבפרויקט - כדי לציין כתובת IP סטטית למכונה הווירטואלית:
compute.addresses.useבפרויקט - כדי להקצות כתובת IP חיצונית למכונה הווירטואלית כשמשתמשים ברשת מדור קודם:
compute.networks.useExternalIpבפרויקט - כדי לציין רשת משנה למכונה הווירטואלית:
compute.subnetworks.useבפרויקט או ברשת המשנה שנבחרה - כדי להקצות כתובת IP חיצונית למכונה הווירטואלית כשמשתמשים ברשת VPC:
compute.subnetworks.useExternalIpבפרויקט או ברשת המשנה שנבחרה - כדי להגדיר מטא-נתונים של המכונה הווירטואלית למכונה הווירטואלית:
compute.instances.setMetadataבפרויקט - כדי להגדיר תגים למכונה הווירטואלית:
compute.instances.setTagsבמכונה הווירטואלית - כדי להגדיר תוויות למכונה הווירטואלית:
compute.instances.setLabelsבמכונה הווירטואלית - כדי להגדיר חשבון שירות לשימוש של המכונה הווירטואלית:
compute.instances.setServiceAccountבמכונה הווירטואלית - כדי ליצור דיסק חדש למכונה הווירטואלית:
compute.disks.createבפרויקט - כדי לצרף דיסק קיים במצב קריאה-בלבד או במצב קריאה וכתיבה:
compute.disks.useבדיסק - כדי לצרף דיסק קיים במצב קריאה-בלבד:
compute.disks.useReadOnlyבדיסק
-
-
כדי להתאים אישית את מספר ליבות ה-CPU שגלויות בקבוצה של מכונות וירטואליות באמצעות תבנית של מכונה:
צריך את כל ההרשאות שמשתמשים בהן במהלך יצירת מכונה וירטואלית ואת ההרשאה
compute.instanceTemplates.createבפרויקט
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
מעבדים וירטואליים ומספר השרשורים לכל ליבה
מספר יחידות ה-vCPU הכולל בסוג מכונה הוא מספר ליבות ה-CPU שגלויות כפול מספר השרשורים לכל ליבה. ברוב סדרות המכונות, מספר ה-threads לכל ליבה הוא 2, אבל אפשר להגדיר ידנית את מספר ה-threads לכל ליבה ל-1.
בטבלה הבאה מוצג הקשר בין ליבות CPU גלויות, מספר ה-threads לכל ליבה ומספר יחידות ה-vCPU הכולל שזמין, באמצעות סוג המכונה c2-standard-60 כדוגמה.
| סוג המכונה | ליבות מעבד גלויות | שרשורים לכל ליבה | מעבדים וירטואליים זמינים |
|---|---|---|---|
c2-standard-60 |
30 (ברירת מחדל) |
2 (ברירת מחדל) |
60 |
c2-standard-60 |
30 (ברירת מחדל) |
1 |
30 |
c2-standard-60 |
20 |
2 (ברירת מחדל) |
40 |
c2-standard-60 |
20 |
1 |
20 |
שיקולי ביצועים
בקטע הזה מוסבר איך צמצום מספר ליבות ה-CPU הגלויות יכול להשפיע על הביצועים של המכונה הווירטואלית.
דיסק אחסון מתמיד (persistent disk)
מגבלות הביצועים של דיסקים קשיחים קבועים תלויות בסוג המכונה, ולא מושפעות ממספר ליבות ה-CPU שגלויות. מידע נוסף זמין במאמר ביצועים של אחסון בלוקים.
תעבורת נתונים יוצאת ברשת
מגבלות רוחב הפס של יציאת נתונים מהרשת תואמות לסוג המכונה ולא מושפעות ממספר ליבות ה-CPU שגלויות. עם זאת, ביצועי הרשת משתנים בהתאם למספר יחידות ה-vCPU שאפשר לגשת אליהן במכונה הווירטואלית. לדוגמה, יכול להיות שסוג מכונה n2-standard-16 עם ליבת CPU אחת גלויה לא יוכל להשתמש באופן מלא בחיבור של 32 Gbps.
תמחור
בקטע הזה מוסבר איך הפחתה של מספר ליבות גלויות יכולה להשפיע על העלות של מכונות וירטואליות.
עלויות רישוי של מערכת הפעלה
אפשר להפחית את עלויות הרישוי של חלק ממערכות ההפעלה על ידי הקטנת מספר ליבות ה-CPU שגלויות. מערכות הפעלה רלוונטיות הן אלה שבהן אתם מחויבים על כל vCPU שזמין למכונה הווירטואלית, למשל Windows Server ו-SQL Server. מידע נוסף על אפשרויות הרישוי של מערכות ההפעלה האלה ב-Compute Engine זמין במאמר בנושא רישיונות של מיקרוסופט.
עלויות, מכסת שימוש וקיבולת של מכונות וירטואליות
העלויות, המכסות והקיבולת של המכונות הווירטואליות נשארים זהים כשמגדירים מספר ליבות CPU בהתאמה אישית, כי מערכת Compute Engine מחייבת, עוקבת אחרי המכסות ומקצה מקום בסוגי המכונות למכונות וירטואליות כאילו הן משתמשות במספר ליבות ה-CPU של סוג המכונה. מידע נוסף על החיוב של מכונות וירטואליות ב-Compute Engine זמין במאמר בנושא מחירון של מכונות וירטואליות.
מגבלות
אי אפשר להתאים אישית את מספר ליבות ה-CPU שגלויות בזמן שמכונה וירטואלית נמצאת במצב
RUNNING. מידע נוסף על מצבי מכונות וירטואליות זמין במאמר מחזור החיים של מכונות וירטואליות.ב Google Cloud מסוף, כשמספר ליבות ה-CPU שמוצגות מצטמצם, מדד השימוש ב-CPU לא יכול להגיע ל-100%. הוא מוגבל למספר ליבות המעבד הגלויות חלקי מספר ליבות המעבד המקסימלי.
אי אפשר להשתמש בתכונה הזו כדי להתאים אישית את מספר ליבות המעבד שגלויות באינסטנסים של Bare Metal.
סוגי מכונות נתמכים וערכים תקינים לכל סוג
הרבה סוגי מכונות תומכים בהתאמה אישית של מספר ליבות המעבד (CPU) שגלויות. הערך של מספר ליבות המעבד הגלויות חייב להיות מספר שלם. הערך המקסימלי הוא מספר יחידות ה-vCPU – או מספר יחידות ה-GPU עבור סוגי מכונות שעברו אופטימיזציה לשימוש במאיצים – בסוג המכונה, חלקי מספר הת'רדים לכל ליבה במכונה הווירטואלית.
בטבלה הבאה מוצגים סוגי המכונות שתומכים בהתאמה האישית הזו, יחד עם הערכים התקפים התואמים של ליבות CPU גלויות לסוגי מכונות במשפחות האלה.
| משפחת סוגי מכונות | מספר מעבדים וירטואליים מוגדר מראש* | ערכים תקינים של ליבות CPU גלויות |
|---|---|---|
| לשימוש כללי | ||
| C4 | 4, 8, 16, 24, 32, 48 | הכול |
| C4 | 96 | כפולות של 2 |
| C4 | 144 | כפולות של 3 |
| C4 | 192 | כפולות של 4 |
| C4 | 288 | כפולות של 6 |
| C4D | ≤ 192 | הכול |
| C4D | > 192 | כפולות של 2 |
| C4N | ≤ 48 | הכול |
| C4N | 96 | כפולות של 2 |
| C4N | > 96 | כפולות של 4 |
| C3D | ≤ 180 | הכול |
| C3D | 360 | כפולות של 2 |
| C3 | 4, 8, 22, 44 | כפולות של 1 |
| C3 | 88 | כפולות של 2 |
| C3 | 176 | כפולות של 4 |
| E2 | ≤ 32 | הכול |
| N2 | ≤ 32 | הכול |
| N2 | > 32 | כפולות של 2 |
| N2D | ≤ 24 | הכול |
| N2D | > 24 | כפולות של 2 |
| N4 | ≤ 80 | הכול |
| N4D | ≤ 96 | הכול |
| N1 | ≤ 64 | הכול |
| N1 | > 64 | כפולות של 2 |
| N1 (אופטימיזציה ל-TPU) | 48 | הכול |
| N1 (אופטימיזציה ל-TPU) | 96 | כפולות של 2 |
| מותאמת לאחסון (storage-optimized) | ||
| Z3 | ≤ 44 | הכול |
| Z3 | 88 | כפולות של 2 |
| Z3 | 176 | כפולות של 4 |
| מותאמת לצריכת מעבד גבוהה (compute-optimized) | ||
| H4D | 192 | כפולות של 4 |
| H3 | 88 | כפולות של 4 |
| C2 | 4, 8, 16, 30 | הכול |
| C2 | 60 | כפולות של 2 |
| מותאמת לצריכת זיכרון גבוהה (memory-optimized) | ||
| M4N | 16, 28, 32, 56 | הכול |
| M4N | 64, 112 | כפולות של 2 |
| M4 | 16, 28, 32, 56 | הכול |
| M4 | 64, 112 | כפולות של 2 |
| M4 | 224 | כפולות של 4 |
| M3 | 128 | כפולות של 2 |
| M3 | 32, 64 | הכול |
| M2 | 208 | כפולות של 4 |
| M2 | 416 | כפולות של 8 |
| M1 | 40 | הכול |
| M1 | 80, 96 | כפולות של 2 |
| M1 | 160 | כפולות של 4 |
| אופטימיזציה למעבד גרפי | ||
| A4 | 224 | כפולות של 2 |
| A3 | 26, 52, 104, 208, 224 | כפולות של 2 |
| A2 | ≤ 48 | הכול |
| A2 | 96 | כפולות של 2 |
| G2 | ≤ 48 | הכול |
| G2 | 96 | כפולות של 2 |
| G4 | כל סוגי המכונות | כפולות של 2 |
התאמה אישית של מספר ליבות ה-CPU שגלויות במהלך יצירת מכונה וירטואלית
כדי להתאים אישית את מספר ליבות ה-CPU שגלויות בזמן יצירת מכונה וירטואלית יחידה, צריך לפעול לפי השלבים שמפורטים בקטע הזה.
בדוגמה הבאה מוצג איך ליצור מכונת SQL Server וירטואלית עם מספר מופחת של ליבות CPU גלויות.
המסוף
כדי להתאים אישית את מספר ליבות ה-CPU שמוצגות בזמן יצירת מכונה וירטואלית, מבצעים את הפעולות הבאות:
- בקטע Machine configuration (הגדרת המכונה) > Advanced configurations (הגדרות מתקדמות) > Visible core count (מספר ליבות גלויות), בוחרים את מספר הליבות הגלויות.
gcloud
כדי ליצור מכונה וירטואלית של SQL Server עם מספר מופחת של ליבות CPU גלויות, משתמשים gcloud compute instances createבפקודה הבאה:
gcloud compute instances create VM_NAME \
--image-project=windows-sql-cloud \
--image-family=sql-ent-2019-win-2019 \
--machine-type=MACHINE_TYPE \
--visible-core-count=VISIBLE_CORE_COUNT \
--zone=ZONE
מחליפים את מה שכתוב בשדות הבאים:
VM_NAME: שם ה-VM.
MACHINE_TYPE: סוג מכונה נתמך, לדוגמה,c2-standard-60.
VISIBLE_CORE_COUNT: מספר ליבות ה-CPU שגלויות. לדוגמה, כשמשתמשים בסוג המכונהc2-standard-60, אם הערך שמוגדר הוא20ומספר השרשורים לכל ליבה הוא2, אז 40 מתוך 60 המעבדים גלויים.
ZONE: האזור שבו רוצים ליצור את המכונה הווירטואלית.
REST
כדי ליצור מכונה וירטואלית של SQL Server עם מספר מופחת של ליבות מעבד גלויות, משתמשים בשיטה instances.insert הבאה:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
"name": "VM_NAME",
...
"advanced_machine_features": {
...
"visibleCoreCount": "VISIBLE_CORE_COUNT"
},
...
}
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט
ZONE: האזור שבו רוצים ליצור את המכונה הווירטואלית.
VM_NAME: שם ה-VM.
VISIBLE_CORE_COUNT: מספר ליבות ה-CPU שגלויות. לדוגמה, כשמשתמשים בסוג המכונהc2-standard-60, אם הערך שמוגדר הוא20ומספר השרשורים לכל ליבה הוא2, אז 40 מתוך 60 המעבדים גלויים.
התאמה אישית של מספר ליבות ה-CPU שגלויות בקבוצת מכונות וירטואליות באמצעות תבנית של הגדרות מכונה
כדי להתאים אישית את מספר ליבות ה-CPU שגלויות בזמן יצירת מכונה וירטואלית באמצעות תבנית של מכונה וירטואלית, צריך לפעול לפי השלבים שמפורטים בקטע הזה.
בדוגמה הבאה מוצג אופן יצירת קבוצה של מכונות וירטואליות זהות של SQL Server עם מספר מופחת של ליבות CPU גלויות באמצעות תבנית של מכונה.
המסוף
כדי להתאים אישית את מספר ליבות ה-CPU שמוצגות במהלך יצירת תבנית של הגדרות מכונה, מבצעים את הפעולות הבאות:
- בקטע Machine configuration (הגדרת המכונה) > Advanced configurations (הגדרות מתקדמות) > Visible core count (מספר ליבות גלויות), בוחרים את מספר הליבות הגלויות.
gcloud
כדי ליצור תבנית של מכונה וירטואלית של SQL Server, שלכל אחת מהן יש מספר מופחת של ליבות CPU גלויות, משתמשים
gcloud compute instance-templates createבפקודה הבאה:gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --image-project=windows-sql-cloud \ --image-family=sql-ent-2019-win-2019 \ --machine-type=MACHINE_TYPE \ --visible-core-count=VISIBLE_CORE_COUNT \ --zone=ZONE
מחליפים את מה שכתוב בשדות הבאים:
INSTANCE_TEMPLATE_NAME: השם של תבנית הגדרות המכונה.
MACHINE_TYPE: סוג מכונה נתמך, לדוגמה,c2-standard-60.
VISIBLE_CORE_COUNT: מספר ליבות ה-CPU שגלויות. לדוגמה, כשמשתמשים בסוג המכונהc2-standard-60, אם הערך מוגדר ל-20ומספר השרשורים לכל ליבה הוא2, אפשר לראות 40 מתוך 60 המעבדים.
ZONE: האזור שבו רוצים ליצור את המכונות הווירטואליות.
כדי ליצור את מכונות ה-VM של SQL Server, שלכל אחת מהן יש מספר מופחת של ליבות CPU גלויות, משתמשים
gcloud compute instances createבפקודה הבאה:gcloud compute instances create INSTANCE_NAMES \ --source-instance-template=INSTANCE_TEMPLATE_NAME
מחליפים את מה שכתוב בשדות הבאים:
INSTANCE_NAMES: השמות של מכונות ה-VM, מופרדים ברווחים, שייווצרו מהתבנית של הגדרות המכונה
INSTANCE_TEMPLATE_NAME: השם של תבנית הגדרות המכונה שממנה רוצים ליצור את המכונות הווירטואליות
REST
כדי ליצור תבנית של מכונה וירטואלית של SQL Server, שבה מספר ליבות ה-CPU שגלויות קטן יותר, משתמשים ב
instanceTemplates.insertהשיטה הבאה:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", ... "advanced_machine_features": { ... "visible_core_count": "VISIBLE_CORE_COUNT" }, ... }מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט
INSTANCE_TEMPLATE_NAME: השם של תבנית הגדרות המכונה.
VISIBLE_CORE_COUNT: מספר ליבות ה-CPU שגלויות. לדוגמה, כשמשתמשים בסוג המכונהc2-standard-60, אם הערך מוגדר ל-20ומספר השרשורים לכל ליבה הוא2, אפשר לראות 40 מתוך 60 המעבדים.
כדי ליצור את המכונות הווירטואליות של SQL Server, כל אחת עם מספר מופחת של ליבות CPU גלויות, משתמשים ב
instances.insertהשיטה הבאה:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?sourceInstanceTemplate=INSTANCE_TEMPLATE_NAME { "name": "VM_NAME", ... }מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט
ZONE: האזור שבו רוצים ליצור את המכונה הווירטואלית
INSTANCE_TEMPLATE_NAME: השם של תבנית הגדרות המכונה שממנה רוצים ליצור את המכונות הווירטואליות
VM_NAME: השם של מכונת ה-VM שרוצים ליצור מהתבנית של הגדרות המכונה
התאמה אישית של מספר ליבות המעבד שמוצגות
כדי להתאים אישית את מספר ליבות ה-CPU שגלויות במכונה וירטואלית קיימת, פועלים לפי השלבים שמפורטים בקטע הזה.
אם התאמתם אישית את מספר ליבות ה-CPU שגלויות בקבוצה של מכונות וירטואליות באמצעות תבנית של מכונה, אתם צריכים ליצור תבנית חדשה של מכונה ואז ליצור מכונות וירטואליות חדשות מהתבנית הזו. מידע נוסף על תבניות מכונה זמין במאמר תבניות מכונה.
המסוף
כדי לשנות את מספר ליבות המעבד שגלויות במכונה וירטואלית קיימת:
מפסיקים את ה-VM.
בקטע Machine configuration (הגדרת המכונה) > Advanced configurations (הגדרות מתקדמות) > Visible core count (מספר ליבות גלויות), בוחרים את מספר הליבות הגלויות.
מפעילים מחדש את ה-VM.
gcloud
כדי לעדכן את הערך של מספר ליבות ה-CPU הגלויות במכונה וירטואלית קיימת, פועלים לפי השלבים הבאים. מידע נוסף זמין במאמר בנושא עדכון מאפייני מופע.
מייצאים את המאפיינים של ה-VM הקיים לקובץ באמצעות הפקודה
gcloud compute instances export.בקובץ שמכיל את המאפיינים המיוצאים, משנים או מוסיפים את הערך של המאפיינים הבאים:
advancedMachineFeatures: visibleCoreCount: VISIBLE_CORE_COUNT
מעדכנים את המאפיינים של ה-VM באמצעות הפקודה
gcloud compute instances update-from-fileעם--most-disruptive-allowed-action=RESTART.
REST
כדי לעדכן את מספר ליבות ה-CPU שגלוי במכונה הווירטואלית, משתמשים בשיטה instances.update הבאה:
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?most_disruptive_allowed_action=RESTART
{
...
"advanced_machine_features": {
...
"visible_core_count": "VISIBLE_CORE_COUNT"
},
...
}
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט
ZONE: האזור שמכיל את המכונה הווירטואלית
VM_NAME: שם המכונה הווירטואלית שממנה רוצים לייצא את המאפיינים
VISIBLE_CORE_COUNT: מספר ליבות ה-CPU שגלויות