Выпуск CentOS Linux 7.2.1511 (Core)
Версия Linux 3.10.0-514.26.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc версия 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)) # 1 SMP вторник 4 15 : 04: 05 UTC 2017
/ proc / meminfo:
MemTotal: 16267428 kB
MemFree: 237816 kB
MemAvailable: 7501712 kB
Buffers: 18076 kB
Cached: 745340 kB
SwapCached: 0 kB
Active: 5015316 kB
Inactive: 152100 kB
Active(anon): 4404088 kB
Inactive(anon): 972 kB
Active(file): 611228 kB
Inactive(file): 151128 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 1928 kB
Writeback: 0 kB
AnonPages: 4404052 kB
Mapped: 36320 kB
Shmem: 1008 kB
Slab: 10579260 kB
SReclaimable: 6839864 kB
SUnreclaim: 3739396 kB
KernelStack: 19232 kB
PageTables: 25760 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 8133712 kB
Committed_AS: 7992196 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 94920 kB
VmallocChunk: 34359635708 kB
HardwareCorrupted: 0 kB
AnonHugePages: 2297856 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 161664 kB
DirectMap2M: 10323968 kB
DirectMap1G: 8388608 kB
плита:
Active / Total Objects (% used) : 18223363 / 42966058 (42.4%)
Active / Total Slabs (% used) : 1183671 / 1183671 (100.0%)
Active / Total Caches (% used) : 73 / 95 (76.8%)
Active / Total Size (% used) : 4513721.33K / 10427564.51K (43.3%)
Minimum / Average / Maximum Object : 0.01K / 0.24K / 8.00K
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
6763716 6763212 99% 0.11K 187881 36 751524K sysfs_dir_cache
5604032 949314 16% 0.06K 87563 64 350252K kmalloc-64
4202094 67116 1% 0.04K 41197 102 164788K ext4_extent_status
3893484 2373049 60% 0.19K 185404 21 741616K dentry
3748191 1802716 48% 0.58K 138832 27 2221312K inode_cache
3251724 987321 30% 0.09K 77422 42 309688K kmalloc-96
2611301 1924963 73% 0.57K 93416 28 1494656K radix_tree_node
2590224 764829 29% 0.10K 66416 39 265664K buffer_head
2042465 284009 13% 0.05K 24029 85 96116K shared_policy_node
1802221 613054 34% 1.01K 58287 31 1865184K ext4_inode_cache
1263674 182269 14% 0.31K 50548 25 404384K nf_conntrack_ffffffff81aa0e80
1251789 210295 16% 0.19K 59609 21 238436K kmalloc-192
726016 686721 94% 0.03K 5672 128 22688K kmalloc-32
712992 9160 1% 0.50K 22281 32 356496K kmalloc-512
591360 43401 7% 0.12K 18480 32 73920K kmalloc-128
579564 4356 0% 0.11K 16099 36 64396K jbd2_journal_head
310514 4893 1% 2.00K 19576 16 626432K kmalloc-2048
183680 181248 98% 0.06K 2870 64 11480K kmem_cache_node
181936 180969 99% 0.25K 5686 32 45488K kmem_cache
130254 1632 1% 0.04K 1277 102 5108K Acpi-Namespace
84512 19793 23% 1.00K 2641 32 84512K kmalloc-1024
83312 2464 2% 0.25K 2608 32 20864K dquot
80224 12022 14% 0.25K 2574 32 20592K kmalloc-256
53538 2009 3% 1.94K 3347 16 107104K TCP
39490 15690 39% 4.00K 5106 8 163392K kmalloc-4096
28800 860 2% 1.56K 1440 20 46080K mm_struct
23808 20992 88% 0.02K 93 256 372K kmalloc-16
К проблеме:
Я запустил несколько контейнеров докеров на этом хосте, установил ограничение памяти около 13 г (фактически используется 5 г). Я хочу запустить другой Java-процесс, но убит oom killer. Sreclaimable of Slab не может быть освобожден.
Вещи, которые я пробовал
echo 3 > /proc/sys/vm/drop_caches
Из meminfo это 7,2 ГБ MemAvailable. Считайте это относительно безопасным пределом планирования мощности; хорошенько подумайте, прежде чем добавлять более 7 ГБ.
Нет свопа. Что нормально. Тем не менее, нет возможности использовать своп должным образом, так как страница с небольшим объемом выходит. Таким образом, восстановление будет сложнее, что немного увеличивает риск OOM, если он работает полностью.
Перемещайте рабочие нагрузки, пока у вас не будет 13 ГБ MemAvailable, или найдите другой хост, у которого есть столько.
Дважды проверьте свои оценки использования памяти этим приложением Java. Куча - это только самый большой потребитель JVM, есть и другие распределения. И, если в контейнере есть другие процессы, добавьте их тоже. Для начала подумайте о том, чтобы округлить свою первую оценку. Жесткие ограничения, такие как cgroup memory.max
должно быть больше, чем это.
echo 3 > /proc/sys/vm/drop_caches
Не drop_caches за пределами тестов. Это не поможет. Все, что он делает, это выбрасывает теплые кеши, которые, возможно, придется перечитать из хранилища. SReclaimable
уже является частью MemAvailable
, как память, которая будет восстановлена первой.