У меня есть рабочий стол под управлением 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 ГБ свободной памяти, которую можно использовать, не выгружая процессы.
У меня есть 15 ГБ свободной памяти, которую можно использовать, не выгружая процессы.
Нет, не знаешь.
total used free shared buffers cached
Mem: 32094 31868 225 0 559 16175
У вас 225 МБ свободной памяти.
KiB Swap: всего 1998844, используется 1113352, свободно 885492, кэшировано 16498252
Посмотрите на весь этот замечательный кеш, который создала система, отчасти благодаря извлечению неиспользуемого мусора из драгоценной оперативной памяти. Почему вы пытаетесь тратить драгоценную оперативную память?
Если у вас есть 1 ГБ данных в ОЗУ, которые не использовались в течение нескольких часов, это имеет смысл:
Вы переключаете его на диск, когда не заняты и у вас есть на 1 ГБ больше кеша.
Вы храните это в памяти. У вас на 1 ГБ меньше кеша, и если эта память когда-либо понадобится для чего-то другого, вам придется заменить ее, пока вы заняты.
Но если вы думаете, что знаете об управлении памятью больше, чем люди, написавшие логику управления памятью вашей операционной системы, продолжайте пытаться найти этот волшебный переключатель «делайте все быстрее и лучше».