No Linux, (como) posso "desconectar" a memória?

5

Isso é o que eu tentei:

sudo zsh -c 'echo offline >/sys/devices/system/memory/memory109/state''

e recebi o seguinte erro:

zsh:echo:1: write error: device or resource busy

Será que preciso ter certeza de que o módulo de memória que estou prestes a colocar off-line está vazio primeiro?

E se sim, como eu poderia fazer isso?

Histórico:

Estou executando uma distro baseada no Ubuntu virtualizada como convidado pela VMWare.

Espero reduzir o uso de memória do sistema convidado, liberando mais para estar disponível para o host sem precisar reiniciar o convidado.

No caso de qualquer um deles poder ser importante.

Editar 2016-09-29:

Encorajada pelos comentários de @Gilles e link dizendo que, em teoria, isso deveria ser possível, eu entendi que memory109 continha algumas páginas que não podiam ser movidas. Então eu decidi tentar em outros módulos (?) Também.

Primeiro, experimentei alguns outros à mão. Mas como esses não foram bem-sucedidos, pensei em experimentar todos eles:

for i in /sys/devices/system/memory/memory*/state;
  do echo -n "Trying "$i" \t";
  sudo zsh -c "echo offline > $i";
done

Cuidado: tenha cuidado com o script acima, pois ele pode ter êxito em sua máquina, o que pode causar a maior parte da memória, se não toda a memória, deixando o sistema sem energia e funcionando.

Isso é o que eu mais gostei:

...
Trying /sys/devices/system/memory/memory44/state        zsh:echo:1: write error: device or resource busy
Trying /sys/devices/system/memory/memory45/state        zsh:echo:1: write error: device or resource busy
Trying /sys/devices/system/memory/memory46/state        zsh:echo:1: write error: device or resource busy
...

Com apenas duas exceções:

Trying /sys/devices/system/memory/memory0/state         zsh:echo:1: write error: invalid argument
...
Trying /sys/devices/system/memory/memory86/state        zsh:echo:1: write error: invalid argument
...

Alguma idéia de por que isso pode não funcionar?

    
por Wizek 26.09.2016 / 04:16

1 resposta

-2

Eu não acho que seja possível pelos recursos padrão do kernel. O kernel suporta apenas hot plug, mas desconecte. Poderia haver uma maneira esquisita de fazer isso, mas tecnicamente parece ruim ... existem alguns problemas com isso, pelo menos.

    
por 26.09.2016 / 05:12