Мы запускаем XenServer 6.1 в производственной среде, и недавно произошел взрыв OOM-убийцы, который в конечном итоге вынул один из наших серверов. Я заметил, что в журналах ядра из экземпляра oom-killer казалось, что с точки зрения Dom0 было много доступной памяти:
Jul 24 02:29:24 xenserver4 kernel: [2091564.792646] DMA free:2832kB min:76kB low:92kB high:112kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:16256kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:144kB slab_unreclaimable:7344kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? yes
Jul 24 02:29:24 xenserver4 kernel: [2091564.792676] lowmem_reserve[]: 0 698 2016 2016
Jul 24 02:29:24 xenserver4 kernel: [2091564.792696] Normal free:180036kB min:3340kB low:4172kB high:5008kB active_anon:0kB inactive_anon:0kB active_file:72kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:693240kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:14988kB slab_unreclaimable:385960kB kernel_stack:3568kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
Jul 24 02:29:24 xenserver4 kernel: [2091564.792728] lowmem_reserve[]: 0 0 10540 10540
Jul 24 02:29:24 xenserver4 kernel: [2091564.792747] HighMem free:829152kB min:512kB low:2132kB high:3756kB active_anon:181880kB inactive_anon:64204kB active_file:118268kB inactive_file:101744kB unevictable:55640kB isolated(anon):0kB isolated(file):0kB present:1357380kB mlocked:55640kB dirty:352kB writeback:0kB mapped:30296kB shmem:1052kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
Исходя из бесплатного значения HighMem, похоже, что доступно более 800 МБ, в сочетании с бесплатным NormaL - около 1 ГБ.
Я выполнил рекомендованную Citrix процедуру, чтобы выделить дополнительную память для Dom0, чтобы повысить производительность и увеличить количество виртуальных машин на каждом хосте: http://support.citrix.com/article/CTX134951
В строке ядра установлены оба этих значения:
mem=1024G
dom0_mem=2048M,max:2048M
Вот полная строка ядра:
# XenServer
kernel mboot.c32
append /boot/xen.gz mem=1024G watchdog_timeout=300 cpuid_mask_xsave_eax=0 lowmem_emergency_pool=1M crashkernel=64M@32M console=vga vga=mode-0x0311 dom0_mem=2048M,max:2048M dom0_max_vcpus=1-8 --- /boot/vmlinuz-2.6-xen blkbk.max_ring_page_order=2 root=LABEL=root-phjwmuox ro xencons=hvc console=hvc0 console=tty0 quiet vga=785 splash --- /boot/initrd-2.6-xen.img
Из http://oreilly.com/linux/excerpts/9780596100797/kernel-boot-command-line-parameter-reference.html :
mem = n [КМГ]
Установите конкретный объем памяти, используемый ядром. При использовании с параметром memmap = можно избежать конфликтов физического адресного пространства. Без параметра memmap = этот параметр может привести к тому, что устройства PCI будут размещены по адресам, принадлежащим неиспользуемой оперативной памяти. n указывает объем памяти для принудительного выполнения и измеряется в килобайтах (K), мегабайтах (M) или гигабайтах (G).
Является ли сценарий Citrix для увеличения Dom0 ошибочным, поскольку он не позволяет ему использовать какой-либо из этого dom0_mem выше 1 ГБ?
Вы определенно можете иметь более 1 ГБ ОЗУ для dom0 в XenServer 6.1. И ваш синтаксис выглядит правильным. Однако при изменении объема оперативной памяти dom0 рекомендуется использовать правильный интерфейс (и это поможет вам избежать опечаток). Проверьте этот документ:
http://support.citrix.com/article/CTX134951
Однако я не уверен в общем объеме памяти Low, который вы видите. Возникла ли проблема снова после того, как вы увеличили общий объем оперативной памяти dom0? Если да, можете ли вы собрать вывод /proc/meminfo
и отредактировать свой вопрос, включая эту информацию?
Кроме того, если у вас есть много SR с VDI, подключенными к виртуальным машинам на одном конкретном хосте, общий объем доступного LowMem на этом хосте уменьшится, и это может вызвать срабатывание OOM. Это связано с памятью, выделенной для пулов страниц blkback и настраивается. Прочтите этот документ, чтобы узнать об этом больше:
http://support.citrix.com/article/CTX136861
И последнее, но не менее важное: убедитесь, что у вас установлены все исправления.
Ура
Фелипе