דיונון: תמונת מצב ושחזור

ב-Android 15 מוסבר איך לצלם קובץ snapshot ולשחזר קובץ snapshot של מכשיר וירטואלי מסוג Cuttlefish. צילום קובץ snapshot של מכשיר Cuttlefish מאפשר לשמור את המצב של המכשיר בתמונה בדיסק. לאחר מכן תוכלו לשחזר את קובץ snapshot כדי להחזיר מכשיר Cuttlefish למצב שנשמר קודם.

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

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

צילום תמונת מצב של מכשיר דיונון

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

אין תמיכה ב-VirtiosFS וצריך להשבית אותו כשמצלמים קובץ snapshot. כדי להשבית את VirtioFS, מעבירים את הארגומנט --enable_virtiofs=false כשמריצים את cvd create או את cvd start.

בתמונות המצבה יש תמיכה רק במצב ה-GPU של SwiftShader‏ (guest_swiftshader). אין תמיכה במצבי גרפיקה אחרים עם האצה.

בשלבים הבאים מתואר תהליך ההפעלה של מכשיר Cuttlefish וצילום תמונת מצב.

  1. מריצים מכשיר תוך השבתת VirtioFS. (לאחר מכן אפשר להשתמש במכשיר).

    cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
  2. כדי לצלם תמונת מצב, מריצים את cvd snapshot_take עם הדגלים הבאים:

    • --force: אם קיימת תיקייה בנתיב ה-snapshot שצוין, הדגל הזה מבטיח שהתיקייה הקיימת תימחק ותיקייה חדשה תיווצר בנתיב ה-snapshot שמכיל את ה-snapshot.

    • --auto_suspend: השעיה של המכשיר לפני צילום תמונת המצב, והמכשיר ממשיך לפעול אחרי צילום ה-snapshot.

    • --snapshot_path: הנתיב שצוין שבו נוצרת תיקייה חדשה עם קובץ ה-snapshot.

    cvd snapshot_take --force --auto_suspend \
    --snapshot_path=PATH

שחזור מכשיר Cuttlefish

כשמשחזרים קובץ snapshot של מכשיר Cuttlefish, צריך לעצור את המכונה של Cuttlefish שבה נוצר קובץ ה-snapshot. אם המכונה כבר הופסקה, אין צורך לבצע פעולה נוספת וניתן לשחזר את קובץ ה-snapshot.

כדי לשחזר קובץ snapshot של מכשיר Cuttlefish, מפעילים מכשיר באמצעות cvd create ומצרפים את נתיב קובץ ה-snapshot. אם מספר המכונה הבסיסי של התקן הדיונון שבו צולמה ה-snapshot שונה ממספר המכונה הבסיסי של מכונת הדיונון הנוכחית, מעבירים את מספר המכונה הבסיסית באמצעות הדגל --base_instance_num.

cvd create --snapshot_path=PATH \
--base_instance_num=ID

השעיית מכשיר Cuttlefish

אפשר להשעות מכשיר Cuttlefish בלי לשמור קובץ snapshot (לא נדרש מקום בכונן לשמירת המצב). כדי להשעות מכשיר דיונון, מריצים את:

cvd suspend

המשך שימוש במכשיר דיונון

כדי להמשיך הפעלה של מכשיר Cuttlefish מושעה, מריצים את:

cvd resume

אימות התכונה Snapshot/Restore

כדי לאמת את התכונה Snapshot/Restore, מריצים את הבדיקה הבאה:

atest SnapshotTest