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.
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.
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?
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.