Bug 41585 - в контейнерах lxc/lxd/pve не применяются ограничения cpu,mem. неправильно выделяется память гостю
Summary: в контейнерах lxc/lxd/pve не применяются ограничения cpu,mem. неправильно выд...
Status: NEW
Alias: None
Product: Branch p10
Classification: Unclassified
Component: libvirt (show other bugs)
Version: не указана
Hardware: x86_64 Linux
: P5 critical
Assignee: Alexey Shabalin
QA Contact: qa-p10@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-12-17 07:32 MSK by Gleb Kulikov
Modified: 2022-08-17 11:45 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Gleb Kulikov 2021-12-17 07:32:12 MSK
В запущенном контейнере LXC/LXD/PVE ограничения по cpu и памяти НЕ применяются,
в контейнере рапортуется неправдоподобно большой объём памяти. выделить из которого память нельзя. Как результат, ряд программ в контейнере (включая dirsrv), падают.

cat /proc/meminfo на хосте:

MemTotal:       16281916 kB
MemFree:        10628704 kB
MemAvailable:   13940648 kB
Buffers:            2484 kB
Cached:          3536200 kB
SwapCached:            0 kB
Active:          3216628 kB
Inactive:        2012828 kB
Active(anon):    1692348 kB
Inactive(anon):    25904 kB
Active(file):    1524280 kB
Inactive(file):  1986924 kB
Unevictable:         136 kB
Mlocked:               0 kB
SwapTotal:      17824112 kB
SwapFree:       17824112 kB
Dirty:              2052 kB
Writeback:             0 kB
AnonPages:       1674252 kB
Mapped:           747740 kB
Shmem:             27484 kB
KReclaimable:     108892 kB
Slab:             242128 kB
SReclaimable:     108892 kB
SUnreclaim:       133236 kB
KernelStack:       16096 kB
PageTables:        27712 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    25965068 kB
Committed_AS:    6635136 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       41000 kB
VmallocChunk:          0 kB
Percpu:            20864 kB
HardwareCorrupted:     0 kB
AnonHugePages:    704512 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:     24576 kB
FilePmdMapped:     22528 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      379092 kB
DirectMap2M:     7895040 kB
DirectMap1G:     8388608 kB

А вот в контейнере

MemTotal:       9007199254740991 kB
MemFree:        9007199254200083 kB
MemAvailable:   9007199254200083 kB
Buffers:               0 kB
Cached:           512328 kB
SwapCached:            0 kB
Active:            66264 kB
Inactive:         462188 kB
Active(anon):        132 kB
Inactive(anon):    15896 kB
Active(file):      66132 kB
Inactive(file):   446292 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:      17824112 kB
SwapFree:       17824112 kB
Dirty:              3076 kB
Writeback:             0 kB
AnonPages:       1675208 kB
Mapped:           748000 kB
Shmem:             27484 kB
KReclaimable:     108908 kB
Slab:                  0 kB
SReclaimable:          0 kB
SUnreclaim:            0 kB
KernelStack:       16080 kB
PageTables:        27704 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    25965068 kB
Committed_AS:    6635044 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       41016 kB
VmallocChunk:          0 kB
Percpu:            20864 kB
HardwareCorrupted:     0 kB
AnonHugePages:    710656 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:     24576 kB
FilePmdMapped:     22528 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      379092 kB
DirectMap2M:     7895040 kB
DirectMap1G:     8388608 kB

(dist-upgrade сделан).

Поведение одинаковое на p9 и p10
Comment 1 Gleb Kulikov 2022-08-17 10:47:39 MSK
Коллеги, посмотрел, как дела в текущей версии Virt Server. Ничего не поменялось. Это грустно, так как не позволяет(!) использовать VirtServer в целом ряде сценариев.

Но, в то же время выяснилось, что при попытке запуска контейнера libvirt/LXC на хосте, работаюшем на Сизифе (рабочая станция K10, обновлённая до Сизифа), ВСЁ РАБОТАЕТ, КАК ДОЛЖНО.

Обновление VirtServer до Сизифа НЕ(!) ПОМОГАЕТ.

Был поставлен следующий эксперимент:

1. Текущая версия VirtServer'а была развёрнута на реальном железе:
CPU: Quad Core Intel Core i7-4770 (-MT MCP-) speed/min/max: 1036/800/3900 MHz Kernel: 5.10.131-std-def-alt1 x86_64 
Mem: 2254.7/15897.3 MiB (14.2%) Storage: 6.45 TiB (75.1% used) Procs: 691 Shell: Bash inxi: 3.3.04

1.1 Был развёрнут LXC контейнер с rootfs на основе последней jeos

Результат free:
               total        used        free      shared  buff/cache   available
Mem:     9007199254740991       15676 9007199254695615        4948       29700 9007199254695615
Swap:              0           0           0

-- ОШИБКА, работать с таким контейнером НЕЛЬЗЯ.

1.2 Этот же rootfs был запущен на системе K10-Сизиф, (процессор AMD)
free:
               total        used        free      shared  buff/cache   available
Mem:         2097152       16300     2029588      387812       51264     2029588
Swap:       24925932      105472    24820460

и аналогичной системе, процессор Intel 2x Single Core Intel Core (Haswell no TSX), с тем же результатом.

-- РАБОТАЕТ ОК!!!

2. На обеих хостах (AMD и Intel) были запущены виртуальные машины с идентичными образами VirtServer, внутри которых был запущен упомянутый выше LXC контейнер с идентичными rootfs jeos и для проверки, этот же образ jeos был запущен в виртуальной машине, работающей внутри виртуальной машины, выполняющей VirtServer.

Результаты выполнения free внутри jeos:

a) В виртуальной машине:
free
               total        used        free      shared  buff/cache   available
Mem:         1962092      112048      1332936         660     517108     1701832

-- всё правильно,

b) внутри LXC:

free
Mem:     9007199254740991       18448 9007199254685451         960       37092 9007199254685451

-- ОШИБКА!

Результат идентичен с точностью до процентов на обоих (Intel и AMD) хостах.

Далее следовала попытка обновить виртуалки с VirtServer до текущего Сизифа. Никаких изменений в работе контейнера LXC это не вызвало. Вероятно, проблема в совсем небольшом отличии системы (Сизиф), основанной на K10 и VirtServer, соотв. и есть надежда. что с апстримом это не связано и может быть исправлено.