Cuttlefish: snapshot e restauração

O Android 15 apresenta como tirar um snapshot e restaurar um snapshot de um dispositivo virtual Cuttlefish. Capturar um instantâneo de um O dispositivo Cuttlefish permite salvar o estado do dispositivo em uma imagem no disco. É possível restaurar o snapshot para abrir um dispositivo Cuttlefish na do estado salvo anteriormente.

É possível usar snapshots em vários fluxos de trabalho automatizados ou manuais. Quando realizando um procedimento que modifica o dispositivo, você pode tirar uma captura de tela o dispositivo para garantir que ele possa ser restaurado a um estado especificado. Por exemplo, ao executar conjuntos de testes que modificam o estado do dispositivo e podem causar problemas ou instabilidades nos testes a seguir. você pode tirar um snapshot para restaurar o dispositivo para um estado salvo depois de um teste, garantindo que os testes subsequentes sejam executados sem erros.

Outro exemplo de fluxo de trabalho em que os snapshots são úteis é ao testar de um aplicativo. Ao testar o comportamento de um app com base em um conjunto de ações, faça um snapshot entre as ações enquanto o app é executado para restaurar o snapshot sem precisar reiniciar do desde o início. Por exemplo, se o lançamento de um jogo tem um longo tempo de inicialização, você pode tirar um instantâneo depois de chegar ao menu principal para que você possa restaurar para esse estado, ignorando o tempo de recuperação.

Capturar snapshot de um dispositivo Cuttlefish

Ao capturar um snapshot de um dispositivo, o Cuttlefish precisa estar suspenso. para garantir que o dispositivo Cuttlefish esteja estável. Quando o dispositivo é suspenso, todas as vCPUs e todos os dispositivos são interrompidos, e todos os buffers são enviados o estado deles para a VM. Em seguida, o snapshot salva o estado da vCPU, a memória e o estado do dispositivo no disco em uma pasta de destino especificada.

O VirtiosFS não é compatível e precisa ser desativado durante a captura de um snapshot. Para desativar o VirtioFS, passar o argumento --enable_virtiofs=false ao executar cvd start.

Somente o modo GPU SwiftShader (guest_swiftshader) é compatível com snapshots. Outros modos gráficos acelerados não têm suporte.

As etapas a seguir descrevem o processo de inicialização de um dispositivo Cuttlefish e capturar um snapshot.

  1. Iniciar um dispositivo enquanto desativa o VirtioFS. Depois disso, você poderá usar o dispositivo.

    cvd start --enable_virtiofs=false --gpu_mode=guest_swiftshader
    
  2. Capture um snapshot executando cvd snapshot_take com as seguintes flags:

    • --force: se uma pasta existir no caminho do snapshot especificado, esse a flag garante que a pasta atual seja excluída, e uma nova pasta é criada no caminho que contém o snapshot

    • --auto_suspend: suspende o dispositivo antes que o snapshot seja capturado e retoma o dispositivo depois que o snapshot é capturado.

    • --snapshot_path: o caminho especificado em que uma nova pasta é criada com o snapshot.

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

Restaurar um dispositivo Cuttlefish

Ao restaurar um snapshot de dispositivo Cuttlefish, a instância do Cuttlefish para em que o snapshot foi capturado precisam ser interrompidos. Se a instância já estiver parou, nenhuma outra ação é necessária e o snapshot pode ser restaurado.

Para restaurar um snapshot de um dispositivo Cuttlefish, inicie um dispositivo com cvd start. e incluir o caminho do snapshot. Se o número da instância base do bloco o dispositivo em que o snapshot foi capturado é diferente da instância de base da instância do Cuttlefish atual, transmita essa instância base usando a sinalização --base_instance_num.

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

Suspender um dispositivo Cuttlefish

É possível suspender um dispositivo Cuttlefish sem capturar um snapshot (sem espaço em disco). é usado para salvar o estado). Para suspender um dispositivo Cuttlefish, execute:

cvd suspend

Retomar um dispositivo Cuttlefish

Para retomar um dispositivo Cuttlefish suspenso, execute:

cvd resume

Validar o recurso de snapshot/restauração

Para validar o recurso de snapshot/restauração, execute o seguinte teste:

atest SnapshotTest