LINUX.ORG.RU
ФорумAdmin

Proxmox/Cgroups: объясните про memsw, meminfo и memory.memsw.failcnt

 , ,


1

2

/etc/pve/lxc/107.conf

...
memory: 1024
swap: 0
...

/var/lib/lxc/107/config

...
lxc.cgroup.memory.limit_in_bytes = 1073741824
lxc.cgroup.memory.memsw.limit_in_bytes = 1073741824
...

Мне непонятны данные в /proc/meminfo

# cat /proc/meminfo  | egrep "^(Mem|Swap|)(Total|Free|Available|Cached):"
MemTotal:        1048576 kB
MemFree:           19556 kB
MemAvailable:     803108 kB
Cached:           783552 kB
SwapCached:            0 kB
SwapTotal:       1048576 kB
SwapFree:        1042168 kB
  1. откуда взялись 6MB в swap, почему вообще в /proc/meminfo swaptotal равен memsw.memory_limit_in_bytes?
  2. периодически увеличивается memory.memsw.failcnt. Почему? Что это значит? Доступной памяти постоянно >500MB.

Из документации непонятно: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/resource_management_guide/sec-memory

memory.limit_in_bytes
    sets the maximum amount of user memory (including file cache). If no units are specified, the value is interpreted as bytes. However, it is possible to use suffixes to represent larger units — k or K for kilobytes, m or M for megabytes, and g or G for gigabytes. 

memory.memsw.limit_in_bytes
    sets the maximum amount for the sum of memory and swap usage. If no units are specified, the value is interpreted as bytes. However, it is possible to use suffixes to represent larger units — k or K for kilobytes, m or M for megabytes, and g or G for gigabytes. 

memory.memsw.failcnt
    reports the number of times that the memory plus swap space limit has reached the value set in memory.memsw.limit_in_bytes
★★★★★
Ответ на: комментарий от Tanger

сорян, но контейнеры сейчас не использую, а ранее как то не обращал внимание

Ien_Shepard ★★★
()
Ответ на: комментарий от post-factum

Я в проксмоксе ни в зуб ногой. Там какое ядро?

pve-kernel:/README

Они используют ядро основанное на сборке ubuntu с патчами для zfsonlinux и слегка меняют конфиг ядра. С cgroup вроде ничего не делают.

Для контейнеров используется lxc с патчами.

У меня в системе установлен lxc-pve 3.2.1-1.


А сигруппы версии первой или второй?

Насколько я понимаю - первой.

hybrid mode:

# mount | grep cgroup
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)

Ограничение вижу в /sys/fs/cgroup/memory/lxc/107/memory.memsw.limit_in_bytes

Начну ка я читать документацию на v1 и v2.


cgroup-v2 вроде в proxmox 6.2 в каком-то виде вместе с lxc-4.0 завезли:

LXC 4.0.2 and lxcfs 4.0.3 with initial full cgroupv2 support by Proxmox VE

У меня пока 6.1-3. Обновляться планирую, но не в ближайшее время.

Tanger ★★★★★
() автор топика
Последнее исправление: Tanger (всего исправлений: 1)

периодически увеличивается memory.memsw.failcnt. Почему?

C точки зрения cgroup занятой памятью считается RSS+Cache.

4.1 Troubleshooting

Sometimes a user might find that the application under a cgroup is terminated by the OOM killer. There are several causes for this:

  1. The cgroup limit is too low (just too low to do anything useful)
  2. The user is using anonymous memory and swap is turned off or too low

Видимо надо таки выделить swap..

Tanger ★★★★★
() автор топика
Ответ на: комментарий от Tanger

Угу. Мониторинг по /sys/fs/cgroup/memory/lxc/107/memory.usage_in_bytes сразу отреагировал на увеличение /sys/fs/cgroup/memory/lxc/107/memory.memsw.limit_in_bytes

https://i.imgur.com/zOQOEBQ.png

Сам дурак. :(

Tanger ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.