1

У меня виртуальная машина CentOS 7, работающая на Hyper-v (новая установка). Я назначил ему динамическую память от 256 до 2048 МБ (в ОЗУ загрузки установлено значение 512 МБ). , После загрузки объем памяти довольно низок, но неуклонно растет до предела 2 ГБ. Когда я смотрю на память внутри виртуальной машины, большая ее часть бесплатна.

Зачем? Как я могу заставить CentOS работать с динамическим ОЗУ?

Hyper-V-Manager показывает мне, что виртуальной машине требуется 1594 МБ, а виртуальной машине выделено 1898 МБ. Я понимаю, почему он назначает больше, чем нужно (потому что он установлен на 20%), но почему он думает, что виртуальной машине нужно 1594, когда она фактически использует только ~ 600 МБ? VM является минимальной установкой CentOS 7 / только для консоли.

Вот некоторая информация о ВМ:

$ uname -a
Linux test.local 3.10.0-514.21.1.el7.x86_64 #1 SMP Thu May 25 17:04:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

На самом деле свободной памяти 1200 МБ:

$ free
              total        used        free      shared  buff/cache   available
Mem:        1990816      558872     1237140        4440      194804     1356912
Swap:       2097148           0     2097148

$ cat /proc/meminfo
MemTotal:        1990816 kB
MemFree:         1237404 kB
MemAvailable:    1357208 kB
Buffers:              76 kB
Cached:           137120 kB
SwapCached:            0 kB
Active:           270656 kB
Inactive:         152568 kB
Active(anon):     214744 kB
Inactive(anon):    75724 kB
Active(file):      55912 kB
Inactive(file):    76844 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        286048 kB
Mapped:            41484 kB
Shmem:              4440 kB
Slab:              57640 kB
SReclaimable:      23408 kB
SUnreclaim:        34232 kB
KernelStack:        4208 kB
PageTables:        14508 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3092556 kB
Committed_AS:    1265440 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       80920 kB
VmallocChunk:   34359647220 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       59328 kB
DirectMap2M:     2037760 kB
DirectMap1G:           0 kB

$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
11  0      0 1237264     76 194760    0    0     3     1   23   65  0  0 100  0  0

Насколько я понял, модули ядра hv_ являются инструментами LIS, необходимыми для Hyper-V. И hv_balloon необходим для динамической памяти.

$ lsmod
Module                  Size  Used by
xt_multiport           12798  1
ip6t_rpfilter          12595  1
ipt_REJECT             12541  2
nf_reject_ipv4         13373  1 ipt_REJECT
ip6t_REJECT            12625  2
nf_reject_ipv6         13717  1 ip6t_REJECT
xt_conntrack           12760  11
ip_set                 36439  0
nfnetlink              14696  1 ip_set
ebtable_nat            12807  1
ebtable_broute         12731  1
bridge                107151  1 ebtable_broute
stp                    12976  1 bridge
llc                    14552  2 stp,bridge
ip6table_nat           12864  1
nf_conntrack_ipv6      18894  7
nf_defrag_ipv6         35104  1 nf_conntrack_ipv6
nf_nat_ipv6            14131  1 ip6table_nat
ip6table_mangle        12700  1
ip6table_security      12710  1
ip6table_raw           12683  1
iptable_nat            12875  1
nf_conntrack_ipv4      19108  6
nf_defrag_ipv4         12729  1 nf_conntrack_ipv4
nf_nat_ipv4            14115  1 iptable_nat
nf_nat                 26147  2 nf_nat_ipv4,nf_nat_ipv6
nf_conntrack          111302  6 nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_conntrack_ipv4,nf_conntrack_ipv6
iptable_mangle         12695  1
iptable_security       12705  1
iptable_raw            12678  1
ebtable_filter         12827  1
ebtables               35009  3 ebtable_broute,ebtable_nat,ebtable_filter
ip6table_filter        12815  1
ip6_tables             26901  5 ip6table_filter,ip6table_mangle,ip6table_security,ip6table_nat,ip6table_raw
iptable_filter         12810  1
intel_powerclamp       14419  0
iosf_mbi               13523  0
crc32_pclmul           13113  0
ghash_clmulni_intel    13259  0
aesni_intel            69884  0
lrw                    13286  1 aesni_intel
gf128mul               14951  1 lrw
glue_helper            13990  1 aesni_intel
ablk_helper            13597  1 aesni_intel
cryptd                 20359  3 ghash_clmulni_intel,aesni_intel,ablk_helper
sg                     40721  0
pcspkr                 12718  0
hv_utils               24418  0
hv_balloon             21753  0
i2c_piix4              22106  0
i2c_core               40756  1 i2c_piix4
ip_tables              27115  5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw
xfs                   985347  2
libcrc32c              12644  1 xfs
sd_mod                 46322  3
crc_t10dif             12714  1 sd_mod
crct10dif_generic      12647  0
sr_mod                 22416  0
cdrom                  42556  1 sr_mod
ata_generic            12910  0
pata_acpi              13038  0
hv_netvsc              40261  0
hyperv_keyboard        12777  0
hid_hyperv             13108  0
hv_storvsc             18032  2
crct10dif_pclmul       14289  1
crct10dif_common       12595  3 crct10dif_pclmul,crct10dif_generic,crc_t10dif
crc32c_intel           22079  1
ata_piix               35038  0
hyperv_fb              17769  1
serio_raw              13462  0
libata                247095  3 pata_acpi,ata_generic,ata_piix
floppy                 69417  0
hv_vmbus              397185  7 hv_balloon,hyperv_keyboard,hv_netvsc,hid_hyperv,hv_utils,hyperv_fb,hv_storvsc
fjes                   32197  0
dm_mirror              22135  0
dm_region_hash         20862  1 dm_mirror
dm_log                 18411  2 dm_region_hash,dm_mirror
dm_mod                114430  8 dm_log,dm_mirror

0