במאמר הזה מוסבר איך אפשר לצמצם את זמן האחזור ברשת בין מכונות וירטואליות של משימה באמצעות הגדרת מדיניות מיקום קומפקטית.
אם המארחים של המכונות הווירטואליות קרובים יותר זה לזה פיזית באזור, אפשר לצמצם את זמן האחזור ברשת בין המכונות הווירטואליות. השיפור הזה בביצועים יכול להיות שימושי במיוחד לעבודות עם משימות שקשורות זו לזו באופן הדוק, כמו משימות שמתקשרות באמצעות ספריות MPI. כשיוצרים משימה, אפשר לדרוש שהמכונות הווירטואליות של המשימה יהיו קרובות יותר זו לזו, על ידי ציון מדיניות מיקום קומפקטית. אחרת, מיקום ברירת המחדל של מכונות וירטואליות בדרך כלל מפזר את המכונות הווירטואליות בין מארחים נפרדים כדי למזער את ההשפעה של הפסקות חשמל.
מידע נוסף על מדיניות מיקום קומפקטית זמין במאמר מידע על מדיניות מיקום במסמכי העזרה של Compute Engine.
לפני שמתחילים
- אם עוד לא השתמשתם ב-Batch, כדאי לעיין במאמר תחילת העבודה עם Batch ולהפעיל את Batch על ידי השלמת הדרישות המוקדמות לפרויקטים ולמשתמשים.
-
כדי לקבל את ההרשאות שדרושות ליצירת משימה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- הכלי לעריכת משימות באצווה (
roles/batch.jobsEditor) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות של המשימה, שמוגדר כברירת מחדל כחשבון השירות של Compute Engine שמוגדר כברירת מחדל
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- הכלי לעריכת משימות באצווה (
הגבלות
בנוסף להגבלות הכלליות על מדיניות בנושא מיקומים קומפקטיים, יש גם את ההגבלות הבאות על מודעות קומפקטיות:
- כשמציינים שעבודה מסוימת תשתמש במדיניות מיקום קומפקטית, Batch יוצרת ומוחקת באופן אוטומטי מדיניות מיקום קומפקטית עבור המכונות הווירטואליות של העבודה. אי אפשר לציין מדיניות קיימת למיקום קומפקטי של משרה.
- אי אפשר לציין מספר של מכונות וירטואליות במדיניות למיקום קומפקטי. המדיניות למיקום קומפקטי של משימה חלה ללא קשר למספר המכונות הווירטואליות שהמשימה פועלת עליהן.
יצירה והרצה של משימה שמשתמשת במדיניות מיקום
כדי לציין שמשימה תשתמש במדיניות למיקום קומפקטי, צריך להגדיר את השדה collocation לערך COLLOCATED באמצעות ה-CLI של gcloud או Batch API.
gcloud
יוצרים קובץ JSON שבו מציינים את פרטי ההגדרה של המשימה ומגדירים את השדה
collocationלערךCOLLOCATED.לדוגמה, כדי ליצור משימת סקריפט בסיסית שמציינת מדיניות מיקום קומפקטית, יוצרים קובץ JSON עם התוכן הבא:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}" } } ] }, "taskCount": 3 } ], "allocationPolicy": { "placement": { "collocation": "COLLOCATED" } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }כדי ליצור ולהריץ את העבודה, משתמשים בפקודה
gcloud batch jobs submit:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEמחליפים את מה שכתוב בשדות הבאים:
JOB_NAME: שם המשימה.
LOCATION: המיקום של המשרה.
JSON_CONFIGURATION_FILE: הנתיב לקובץ JSON עם פרטי ההגדרות של העבודה.
API
שולחים בקשת POST אל ה-method jobs.create כדי להגדיר את השדה collocation לערך COLLOCATED.
לדוגמה, כדי ליצור משימת סקריפט בסיסית שמציינת מדיניות מיקום קומפקטית, שולחים את הבקשה הבאה:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}"
}
}
]
},
"taskCount": 3
}
],
"allocationPolicy": {
"placement": {
"collocation": "COLLOCATED"
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שלכם.
LOCATION: המיקום של המשרה.
JOB_NAME: שם המשימה.
המאמרים הבאים
- אם נתקלתם בבעיות ביצירה או בהפעלה של משימה, תוכלו להיעזר בפתרון בעיות.
- הצגת משרות ומשימות.
- מידע נוסף על אפשרויות ליצירת משרות