หมึกกระดอง: ถ่ายสแนปชอตและคืนค่า

Android 15 เปิดตัววิธีถ่ายสแนปชอตและ กู้คืนสแนปชอตของอุปกรณ์เสมือนของ Cuttlefish กำลังสร้างภาพรวมของ อุปกรณ์หมึกกระดองให้คุณบันทึกสถานะของอุปกรณ์เป็นรูปภาพบนดิสก์ได้ จากนั้นคุณจะสามารถคืนค่าสแนปชอตเพื่อนำอุปกรณ์ Cuttlefish ขึ้นมาไปยัง สถานะที่บันทึกไว้ก่อนหน้านี้

คุณสามารถใช้สแนปชอตในเวิร์กโฟลว์อัตโนมัติหรือด้วยตนเองที่หลากหลาย วันและเวลา เมื่อดำเนินการปรับเปลี่ยนอุปกรณ์ คุณจะสามารถบันทึกสแนปชอต เพื่อให้มั่นใจว่าคุณสามารถคืนค่าอุปกรณ์กลับสู่สถานะที่ระบุได้ ตัวอย่างเช่น เมื่อเรียกใช้ชุดทดสอบที่ปรับเปลี่ยนสถานะอุปกรณ์ และอาจก่อให้เกิดปัญหาหรือความไม่เสถียรในการทดสอบต่อไปนี้ คุณสามารถถ่ายสแนปชอตเพื่อคืนค่าอุปกรณ์ให้กลับสู่สถานะที่บันทึกไว้หลังจาก การทดสอบ โดยตรวจสอบว่าการทดสอบครั้งต่อๆ ไปดำเนินการอย่างถูกต้อง

อีกตัวอย่างเวิร์กโฟลว์หนึ่งที่สแนปชอตมีประโยชน์คือ เมื่อทดสอบแท็ก พฤติกรรมของแอป เมื่อทดสอบลักษณะการทำงานของแอปตามชุดของ คุณสามารถจับภาพระหว่างการดำเนินการต่างๆ ในขณะที่แอปทำงานอยู่ เพื่อให้คุณคืนค่าเป็นสแนปชอตนั้นได้โดยไม่ต้องรีสตาร์ทจาก เริ่มต้น ตัวอย่างเช่น ถ้าการเปิดตัวเกมใช้เวลานานในการเริ่มนำ สามารถถ่ายสแนปชอตหลังจากถึงเมนูหลักเพื่อให้คืนค่า อุปกรณ์เป็นสถานะนั้นโดยข้ามเวลานำขึ้นเครื่อง

ถ่ายภาพอุปกรณ์หมึกกระดอง

ต้องระงับอุปกรณ์ Cuttlefish เมื่อถ่ายภาพอุปกรณ์ เพื่อตรวจสอบว่าอุปกรณ์ Cuttlefish อยู่ในสถานะเสถียรแล้ว เมื่ออุปกรณ์ ถูกระงับ, vCPU และอุปกรณ์ทั้งหมดหยุดทำงาน และบัฟเฟอร์ทั้งหมด สถานะไปยัง VM สแนปชอตจะบันทึกสถานะ vCPU, หน่วยความจำ และสถานะของอุปกรณ์ลงในดิสก์ในโฟลเดอร์ปลายทางที่ระบุ

ระบบไม่รองรับ VirtiosFS และจำเป็นต้องปิดใช้เมื่อถ่ายภาพสแนปชอต ถึง ปิดใช้ VirtioFS แล้วส่งอาร์กิวเมนต์ --enable_virtiofs=false เมื่อใช้ cvd start

รองรับเฉพาะโหมด GPU SwiftShader (guest_swiftshader) สำหรับ โหมดกราฟิกแบบเร่งอื่นๆ ไม่ได้

ขั้นตอนต่อไปนี้อธิบายกระบวนการเปิดใช้งานอุปกรณ์ Cuttlefish และถ่ายสแนปชอต

  1. เปิดอุปกรณ์ขณะปิดใช้ VirtioFS (จากนั้นคุณจะใช้อุปกรณ์ได้)

    cvd start --enable_virtiofs=false --gpu_mode=guest_swiftshader
    
  2. บันทึกสแนปชอตโดยเรียกใช้ cvd snapshot_take ที่มีแฟล็กต่อไปนี้

    • --force: หากมีโฟลเดอร์อยู่ในเส้นทางสแนปชอตที่ระบุ ค่านี้จะ การตั้งค่าสถานะจะช่วยให้มั่นใจว่า โฟลเดอร์ที่มีอยู่จะถูกลบ และสร้างโฟลเดอร์ใหม่ จะสร้างขึ้นที่เส้นทางสแนปชอตที่มีสแนปชอต

    • --auto_suspend: ระงับอุปกรณ์ก่อนที่จะถ่ายสแนปชอต และ ให้อุปกรณ์กลับมาทำงานอีกครั้งหลังจากบันทึกสแนปชอตแล้ว

    • --snapshot_path: เส้นทางที่ระบุซึ่งสร้างโฟลเดอร์ใหม่ กับสแนปชอต

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

กู้คืนอุปกรณ์ Cuttlefish

เมื่อคืนค่าสแนปชอตของอุปกรณ์ Cuttlefish อินสแตนซ์ Cuttlefish จะเป็น ที่ต้องหยุดสแนปชอต หากมีอินสแตนซ์อยู่แล้ว หยุดแล้ว คุณไม่ต้องดำเนินการใดๆ เพิ่มเติมและจะกู้คืนสแนปชอตได้

หากต้องการกู้คืนสแนปชอตของอุปกรณ์หมึกกระดอง ให้เปิดอุปกรณ์ด้วย cvd start และระบุเส้นทางสแนปชอต ถ้าตัวเลขอินสแตนซ์ฐานของหมึกกระดอง อุปกรณ์ที่มีการบันทึกสแนปชอตแตกต่างจากอินสแตนซ์ฐาน จำนวนอินสแตนซ์หมึกกระดองปัจจุบัน ส่งอินสแตนซ์พื้นฐานนั้น โดยใช้การแฟล็ก --base_instance_num

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

ระงับอุปกรณ์หมึกกระดอง

คุณสามารถระงับอุปกรณ์ Cuttlefish โดยไม่ต้องสร้างสแนปชอตได้ (ไม่ต้องใช้พื้นที่ดิสก์ เพื่อบันทึกรัฐ) หากต้องการระงับอุปกรณ์ Cuttlefish ให้เรียกใช้คำสั่งต่อไปนี้

cvd suspend

ใช้งานอุปกรณ์ Cuttlefish ต่อ

หากต้องการเปิดใช้อุปกรณ์ Cuttlefish ที่ถูกระงับ ให้กลับมาทํางานอีกครั้ง ให้เรียกใช้คำสั่งต่อไปนี้

cvd resume

ตรวจสอบฟีเจอร์สแนปชอต/กู้คืน

ฟีเจอร์สแนปชอต/กู้คืนสามารถตรวจสอบได้โดยทำการทดสอบต่อไปนี้

atest SnapshotTest