Проект

Общее

Профиль

Действия

Добавление памяти (ACPI)

Требования:

- qemu-2.1+
- guest kernel-3.2+

CONFIG_MEMORY_HOTPLUG=y
CONFIG_ACPI_HOTPLUG_MEMORY=y
CONFIG_HOTPLUG_PCI=y
CONFIG_HOTPLUG_PCI_ACPI=y

- QEMU должная быть запущена с указанием максимального объема памяти, иначе ошибка:

memory hotplug is not enabled, please add maxmem option

Пример опции -m 10G,slots=32,maxmem=32G

На хосте

qmp-shell -H /run/qemu/qemu5521.control.sock

(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

На госте

В папке /sys/devices/system/memory лежат куски памяти по 128Мб
Только такими кусками можно добавлять память в систему.

for NAME in $(grep -l offline /sys/devices/system/memory/memory*/state); do echo online > $NAME; done

Полезные ссылки

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

Hot-remove

Сыро. Не вегда работает.

На госте

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 offline > /sys/devices/system/memory/memory$ID/state; done

Полезные ссылки

https://www.kernel.org/doc/Documentation/memory-hotplug.txt

Обновлено Андрей Волков больше 7 лет назад · 11 изменени(я, ий)