Mem-hotplug » История » Редакция 9
Редакция 8 (Андрей Волков, 2016-08-12 18:56) → Редакция 9/11 (Андрей Волков, 2016-08-12 19:58)
h1. Добавление памяти (ACPI)
h2. Требования:
- qemu-2.1+
- guest kernel-3.2+
<pre>
CONFIG_MEMORY_HOTPLUG=y
CONFIG_ACPI_HOTPLUG_MEMORY=y
CONFIG_HOTPLUG_PCI=y
CONFIG_HOTPLUG_PCI_ACPI=y
</pre>
- QEMU должная быть запущена с указанием максимального объема памяти, иначе ошибка:
<pre>
memory hotplug is not enabled, please add maxmem option
</pre>
Пример опции *-m 10G,slots=32,maxmem=32G*
h2. На хосте
*qmp-shell -H /run/qemu/qemu5521.control.sock*
<pre>
(QEMU) info memory-devices
(QEMU) object_add memory-backend-ram,id=mem1,size=2G
(QEMU) device_add pc-dimm,id=dimm1,memdev=mem1
(QEMU) info memory-devices
Memory device [dimm]: "dimm1"
addr: 0x2c0000000
slot: 0
node: 0
size: 2147483648
memdev: /objects/mem1
hotplugged: true
hotpluggable: true
</pre>
h2. На госте
В папке */sys/devices/system/memory* лежат куски памяти по 128Мб
Только такими кусками можно добавлять память в систему.
<pre>
for NAME in $(grep -l offline /sys/devices/system/memory/memory*/state); do echo online > $NAME; done
</pre>
h2. Полезные ссылки
https://github.com/qemu/qemu/blob/master/docs/memory-hotplug.txt
https://medium.com/@juergen_thomann/memory-hotplug-with-qemu-kvm-and-libvirt-558f1c635972#.eenrv1jdb
h1. Hot-remove
<pre>
SIZE=2048; MAXMEM=$(ls /sys/devices/system/memory/ |grep -o '[0-9]\+' |sort -n | tail -n 1); for ID in $(seq $[${MAXMEM}-${SIZE}/128+1] ${MAXMEM}); do echo $ID; cat /sys/devices/system/memory/memory$ID/state; echo online > /sys/devices/system/memory/memory$ID/state; done
</pre>