Назад | Перейти на главную страницу

Хост KVM не будет использовать память для кеширования

У меня есть KVM-хост (Linux 3.14.32) с 8 виртуальными машинами. Они перегружены (выделенная для них память больше, чем доступная физическая память на хосте). Однако они потребляют только около 85% физической памяти, что должно оставлять место для кеша. Однако все на хосте работает невыносимо медленно, и бесплатные сообщает, что для кеширования почти не используется память:

             total       used       free     shared    buffers     cached
Mem:         32224      26767       5457          0          0          3
-/+ buffers/cache:      26762       5461
Swap:         1021        414        607

Как видите, 5,5 ГБ потрачены впустую. После закрытия виртуальных машин все возвращается в норму - ядро ​​использует 260 МБ кеш-памяти.

/ proc / meminfo:

MemTotal:       32997976 kB
MemFree:         5543224 kB
MemAvailable:    5584332 kB
Buffers:            2612 kB
Cached:            83876 kB
SwapCached:        72524 kB
Active:         24721804 kB
Inactive:        2214632 kB
Active(anon):   24675412 kB
Inactive(anon):  2175048 kB
Active(file):      46392 kB
Inactive(file):    39584 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       1046520 kB
SwapFree:         622068 kB
Dirty:                84 kB
Writeback:             4 kB
AnonPages:      26806104 kB
Mapped:            28436 kB
Shmem:               488 kB
Slab:              60024 kB
SReclaimable:      25076 kB
SUnreclaim:        34948 kB
KernelStack:        3232 kB
PageTables:        62212 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    17545508 kB
Committed_AS:   53713960 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      431560 kB
VmallocChunk:   34359138492 kB
HardwareCorrupted:     0 kB
DirectMap4k:        9728 kB
DirectMap2M:    33536000 kB

У меня swappiness установлено на 0. Образы дисков виртуальной машины находятся на LVM с cache = writeback.

Рекомендуется обходить кеш (cache=none) при использовании устройств RAW. При этом используется режим O_DIRECT, поэтому кеш страницы хоста пропускается, а ввод-вывод происходит непосредственно между буферами пользовательского пространства qemu-kvm и устройством хранения.

QEMU также поддерживает широкий спектр режимов кэширования. Если вы используете необработанные тома или разделы, лучше всего полностью избегать кеширования, что уменьшает количество копий данных и трафик шины.

Ссылка: Настройка KVM

Я бы предположил, что у вас могут быть проблемы с вводом-выводом, а не с памятью. Взгляните на верхнюю часть (проверьте IO_WAIT) и посмотрите, не превышает ли оно ~ 5%.

Также, когда вы меняете местами, может случиться так, что процесс пытается выделить больше, чем он может. Загляните в KSM https://www.kernel.org/doc/Documentation/vm/ksm.txt и он мог бы вывести вас на достойный уровень или попытаться уменьшить выделение ОЗУ на несколько долей и посмотреть, имеет ли это значение.