A Canonical propôs patches para acelerar a ativação do modo sleep

Canônico sugerido na lista de discussão de desenvolvedores do kernel Linux um conjunto de patches com implementação purga de memória oportunista (“recuperação de memória oportunista”), que permite reduzir significativamente o tempo necessário para entrar no modo de suspensão. A otimização é alcançada chamando proativamente a operação de liberação de estruturas de memória secundária que não contêm informações exclusivas e podem ser restauradas dinamicamente após retornar do modo de suspensão (por exemplo, áreas memória anônima e vários caches de páginas de memória). A ideia principal é que após a remoção dos dados desnecessários, o tamanho da imagem da memória a ser salva antes de entrar no modo de suspensão seja reduzido e, consequentemente, seja necessário menos tempo para gravá-la e lê-la em uma mídia lenta.

Por padrão, ao salvar um despejo de memória para hibernação, o kernel salva a memória como está com todos os caches, mas há uma capacidade padrão de liberar estruturas desnecessárias simulando condições de escassez de recursos no estágio inicial de entrada na hibernação. Este recurso pode ser ativado usando o parâmetro “/sys/power/image_size” e leva a uma redução notável no tempo que leva para entrar no modo de suspensão. A Canonical sugere adicionar mais dois parâmetros “/sys/power/mm_reclaim/run” e
“/sys/power/mm_reclaim/release”, que permitirá acionar a liberação de estruturas desnecessárias com antecedência para que a transição real para o modo de suspensão seja realizada o mais rápido possível e o retorno do modo de suspensão leve aproximadamente o mesmo tempo que ao usar um existente no parâmetro do kernel "/sys/power/image_size".

Testes em um sistema com 8 GB de RAM e 8 GB de partição swap com 85% de utilização de memória mostraram nas configurações padrão (image_size=default) uma diminuição no tempo para entrar no modo sleep de 51.56 para 4.19 segundos ao iniciar o processo de limpar o excesso de memória 60 segundos antes de entrar no modo de suspensão. Ao reduzir o tamanho da imagem de memória armazenada, o tempo de recuperação diminuiu de 26.34 para 5 segundos. Quando o sistema ativou o modo padrão para limpar o excesso de memória (image_size=0), o tempo para entrar no modo de suspensão foi reduzido de 73.22 para 5.36 segundos, e o tempo para retornar do modo de suspensão permaneceu praticamente inalterado (foi reduzido apenas por um fração de segundo, de 5.32 a 5.26 segundos).

O método proposto pode ser solicitado em situações em que é necessário mudar muito rapidamente para o modo de hibernação e é possível prever antecipadamente a necessidade de tal transição. Por exemplo, em sistemas em nuvem, ambientes virtuais de baixa prioridade (ambientes pontuais no Amazon EC2) pode hibernar dinamicamente e liberar memória ocupada à medida que aumenta o consumo de recursos pelos ambientes primários. Quando a carga nos ambientes primários diminui, os ambientes de baixa prioridade retornam do modo de suspensão. Nestas condições, para manter a qualidade adequada do serviço, é importante minimizar o tempo necessário para entrar e sair do modo de suspensão. A fase de limpeza preemptiva pode ser acionada quando um determinado nível da carga principal é atingido, precedendo o nível que leva ao congelamento de ambientes de baixa prioridade.

Fonte: opennet.ru

Adicionar um comentário