Почему хост заменяет виртуальные машины, когда имеется 16 ГБ буферного кеша и swappiness = 0?

У меня есть рабочий стол под управлением Ubuntu Quantal, использующий OpenStack Folsom на Intel i5 с 32 ГБ оперативной памяти и 2 ГБ подкачки. Я использую 7 виртуальных машин, каждая размером с EC2 m1.small, поэтому по 1,7 ГБ ОЗУ каждая. Я использую KVM.

Когда я запускаю 5 или 6 одновременно, хост начинает менять их:

top - 23:45:42 up 3 days,  1:51, 10 users,  load average: 0.37, 0.75, 1.15
Tasks: 418 total,   2 running, 413 sleeping,   3 stopped,   0 zombie
%Cpu(s):  8.8 us,  2.1 sy,  0.0 ni, 88.8 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem:  32864580 total, 32586956 used,   277624 free,   574236 buffers
KiB Swap:  1998844 total,  1113352 used,   885492 free, 16498252 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND           
24652 libvirt-  20   0 4169m 1.7g 7756 S   3.6  5.4   4:49.37 kvm               
25233 libvirt-  20   0 4450m 1.6g 7756 S   1.2  5.2   4:35.12 kvm               
25589 libvirt-  20   0 4163m 1.6g 7756 S   2.4  5.1   4:40.31 kvm               
 6562 root      39  19 2935m 658m 7460 S   0.0  2.1 100:05.62 java              
28393 libvirt-  20   0 4149m 624m 7756 S   0.0  1.9   2:25.01 kvm               
28106 libvirt-  20   0 4170m 617m 7756 S   0.0  1.9   2:18.17 kvm               
26519 libvirt-  20   0 4167m 590m 7756 S   0.0  1.8   2:22.16 kvm               
29399 libvirt-  20   0 4159m 589m 7756 S   0.0  1.8   2:19.94 kvm               


$ free -m
             total       used       free     shared    buffers     cached
Mem:         32094      31868        225          0        559      16175
-/+ buffers/cache:      15134      16959
Swap:         1951       1087        864


# /tmp/swap-used.sh |grep kvm
PID=944 - Swap used: 0 - (kvm-irqfd-clean )
PID=24652 - Swap used: 102468 - (kvm )
PID=25233 - Swap used: 108644 - (kvm )
PID=25589 - Swap used: 155768 - (kvm )
PID=26519 - Swap used: 192216 - (kvm )
PID=28106 - Swap used: 150796 - (kvm )
PID=28393 - Swap used: 208488 - (kvm )
PID=29399 - Swap used: 187388 - (kvm )

Я уже пытался установить swapiness на 20, затем на 10 и, наконец, на 0, ни один из которых не имел значения:

# cat /proc/sys/vm/swappiness 
0

Я не перезагружал хост с тех пор, как изменил его с 60 на 0 (нужно перезагрузить компьютер)? Я также полностью отключил своп с /sbin/swapoff -a; /bin/swapon -a, Сразу после повторного включения свопа я вижу это:

$ vmstat 5
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 2  0  11384 247572 652736 16539748   11   10   291   228   13   12  7  3 87  3
 0  0  12968 234360 652756 16554432    0  317  8576  1240 3508 5470 17  2 75  5
 1  0  17068 243512 652768 16559508    0  820  9448  1216 3687 4845 20  2 77  2
 1  0  20040 233300 652772 16576152    0  594 12262   677 4436 5063 29  2 68  1
 1  0  22764 219156 652792 16594448    6  546 11962   727 3870 4559 28  1 68  2
 3  0  40832 229384 652776 16602440    0 3614 58404  4176 2051 6231 21  2 66 10
 1  0  52420 232236 652784 16613320    0 2318 42174  2512 1819 4026 15  2 77  6

У меня есть 15 ГБ свободной памяти, которую можно использовать без замены процессов.

1 ответ

У меня есть 15 ГБ свободной памяти, которую можно использовать без замены процессов.

Нет, ты не

           total       used       free     shared    buffers     cached
Mem:       32094      31868        225          0        559      16175

У вас 225 МБ свободной памяти.

Своп в KiB: всего 1998844, использовано 1113352, свободно 885492, кэшировано 16498252

Посмотрите на весь этот замечательный кеш, созданный системой, отчасти путем извлечения неиспользованного мусора из драгоценной оперативной памяти. Почему вы пытаетесь заставить его тратить драгоценную оперативную память?

Если у вас есть 1 ГБ данных в ОЗУ, которые не использовались в течение нескольких часов, это имеет смысл:

  1. Вы выгружаете это на диск, когда вы не заняты, и у вас есть еще 1 ГБ кеша для использования.

  2. Вы храните это в памяти. У вас кеша меньше на 1 ГБ, и если эта память когда-нибудь понадобится для чего-то другого, вам придется ее поменять, пока вы заняты.

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

Другие вопросы по тегам