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

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

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

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

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

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

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

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

בשלבים הבאים מוסבר איך מפעילים מכשיר Cuttlefish ומצלמים קובץ snapshot.

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

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

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

    • --auto_suspend: השהיה של המכשיר לפני צילום קובץ ה-snapshot והפעלה מחדש של המכשיר אחרי צילום קובץ ה-snapshot.

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

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

שחזור מכשיר דיונון

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

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

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

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

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

cvd suspend

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

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

cvd resume

אימות התכונה 'תמונת מצב/שחזור'

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

atest SnapshotTest