कटलफ़िश: स्नैपशॉट और उसे वापस लाना

Android 15 में, Cuttlefish वर्चुअल डिवाइस का स्नैपशॉट लेने और उसे वापस लाने का तरीका बताया गया है. Cuttlefish डिवाइस का स्नैपशॉट लेने से, डिवाइस की स्थिति को डिस्क पर मौजूद किसी इमेज में सेव किया जा सकता है. इसके बाद, स्नैपशॉट को वापस लाया जा सकता है, ताकि Cuttlefish डिवाइस को पहले से सेव की गई स्थिति में वापस लाया जा सके.

स्नैपशॉट का इस्तेमाल, ऑटोमेटेड या मैन्युअल वर्कफ़्लो में किया जा सकता है. डिवाइस में बदलाव करने वाली कोई प्रोसेस करते समय, डिवाइस का स्नैपशॉट लिया जा सकता है. इससे यह पक्का किया जा सकता है कि डिवाइस को किसी तय स्थिति में वापस लाया जा सके. उदाहरण के लिए, जब डिवाइस की स्थिति में बदलाव करने वाले टेस्ट सुइट चलाए जा रहे हों और उनसे बाद के टेस्ट में समस्याएं या अस्थिरता आ सकती हो, तब स्नैपशॉट लिया जा सकता है. इससे टेस्ट के बाद, डिवाइस को सेव की गई स्थिति में वापस लाया जा सकता है. इससे यह पक्का किया जा सकता है कि बाद के टेस्ट सही तरीके से चलें.

एक और उदाहरण में, स्नैपशॉट का इस्तेमाल किया जा सकता है. यह तब काम आता है, जब किसी ऐप्लिकेशन के व्यवहार की जांच की जा रही हो. किसी ऐप्लिकेशन के व्यवहार की जांच, कार्रवाइयों के एक सेट के आधार पर की जाती है. ऐसे में, ऐप्लिकेशन के चालू होने के दौरान कार्रवाइयों के बीच में स्नैपशॉट लिया जा सकता है. इससे, आपको शुरू से रीस्टार्ट करने के बजाय, स्नैपशॉट को वापस लाने में मदद मिलती है. उदाहरण के लिए, अगर किसी गेम को लॉन्च होने में ज़्यादा समय लगता है, तो मुख्य मेन्यू पर पहुंचने के बाद स्नैपशॉट लिया जा सकता है. इससे डिवाइस को उस स्थिति में वापस लाया जा सकता है और गेम को लॉन्च होने में लगने वाले समय को स्किप किया जा सकता है.

Cuttlefish डिवाइस का स्नैपशॉट लेना

किसी डिवाइस का स्नैपशॉट लेते समय, Cuttlefish डिवाइस को निलंबित करना ज़रूरी है. इससे यह पक्का किया जा सकेगा कि Cuttlefish डिवाइस स्थिर स्थिति में है. डिवाइस के निलंबित होने पर, सभी वीसीपीयू और डिवाइस बंद हो जाते हैं. साथ ही, सभी बफ़र अपनी स्थिति को वीएम पर पुश करते हैं. इसके बाद, स्नैपशॉट, vCPU की स्थिति, मेमोरी, और डिवाइस की स्थिति को डिस्क पर सेव करता है. यह डिस्क, तय किए गए डेस्टिनेशन फ़ोल्डर में होती है.

VirtiosFS काम नहीं करता है. स्नैपशॉट लेते समय, इसे बंद करना ज़रूरी है. VirtioFS को बंद करने के लिए, cvd create या cvd start चलाते समय --enable_virtiofs=false आर्ग्युमेंट पास करें.

स्नैपशॉट के लिए, सिर्फ़ SwiftShader (guest_swiftshader) जीपीयू मोड काम करता है. ऐक्सलरेटेड ग्राफ़िक्स मोड के अन्य मोड काम नहीं करते.

Cuttlefish डिवाइस लॉन्च करने और स्नैपशॉट लेने का तरीका यहां बताया गया है.

  1. VirtioFS को बंद करके, किसी डिवाइस को लॉन्च करें. (इसके बाद, डिवाइस का इस्तेमाल किया जा सकता है.)

    cvd create --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 इंस्टेंस को बंद करना होगा जिसके लिए स्नैपशॉट लिया गया था. अगर इंस्टेंस पहले से ही बंद है, तो कुछ और करने की ज़रूरत नहीं है. स्नैपशॉट को वापस लाया जा सकता है.

Cuttlefish डिवाइस के स्नैपशॉट को वापस लाने के लिए, cvd create के साथ डिवाइस लॉन्च करें और स्नैपशॉट का पाथ शामिल करें. अगर स्नैपशॉट लेने वाले Cuttlefish डिवाइस का बेस इंस्टेंस नंबर, मौजूदा Cuttlefish इंस्टेंस के बेस इंस्टेंस नंबर से अलग है, तो --base_instance_num फ़्लैग का इस्तेमाल करके उस बेस इंस्टेंस नंबर को पास करें.

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

Cuttlefish डिवाइस को निलंबित करना

स्नैपशॉट लिए बिना, Cuttlefish डिवाइस को निलंबित किया जा सकता है. इसमें डिवाइस की स्थिति को सेव करने के लिए, डिस्क स्पेस का इस्तेमाल नहीं किया जाता है. Cuttlefish डिवाइस को निलंबित करने के लिए, यह कमांड चलाएं:

cvd suspend

Cuttlefish डिवाइस को फिर से शुरू करना

निलंबित किए गए Cuttlefish डिवाइस को फिर से चालू करने के लिए, यह कमांड चलाएं:

cvd resume

स्नैपशॉट/रीस्टोर करने की सुविधा की पुष्टि करना

स्नैपशॉट/रीस्टोर करने की सुविधा की पुष्टि करने के लिए, यह टेस्ट चलाएं:

atest SnapshotTest