Minha memória não recuperável do SLAB (SUnreclaim) cresce sem limites e essa parece ser a razão pela qual meu sistema fica sem RAM e começa a tentar trocar até que ele morra. Aqui está um gráfico do meu SUreclaim ao longo de alguns dias. Meu uso típico de RAM é de cerca de 5 GB em um servidor de 16 GB. Quando o SUreclaim chega a cerca de 10.xGB, a troca infinita começa.
Esses gráficos mostram que ele está crescendo indefinidamente e eu estou reinicializando-o para liberar a RAM, nesses dois casos, antes que meu sistema se transforme em morte.
Aqui está um slabtop parcial pouco antes da segunda reinicialização.
---------------------------------- 20180730164416 ----------------------------------
Active / Total Objects (% used) : 34014938 / 35150125 (96.8%)
Active / Total Slabs (% used) : 1098114 / 1098114 (100.0%)
Active / Total Caches (% used) : 120 / 147 (81.6%)
Active / Total Size (% used) : 7332279.93K / 7831039.90K (93.6%)
Minimum / Average / Maximum Object : 0.01K / 0.22K / 22.88K
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
8433792 8349318 98% 0.06K 131778 64 527112K pid
4253942 4250995 99% 0.09K 92477 46 369908K anon_vma
3011640 2929311 97% 0.20K 150582 20 602328K vm_area_struct
2994831 2908345 97% 0.19K 142611 21 570444K dentry
2068096 2033715 98% 0.03K 16157 128 64628K kmalloc-32
1953024 1932838 98% 0.02K 7629 256 30516K kmalloc-16
1820128 1618465 88% 0.25K 113758 16 455032K filp
1149438 1149438 100% 0.04K 11269 102 45076K pde_opener
1014336 891822 87% 0.06K 15849 64 63396K kmalloc-64
954051 953969 99% 0.19K 45431 21 181724K cred_jar
757224 752612 99% 0.10K 19416 39 77664K buffer_head
627368 627368 100% 0.07K 11203 56 44812K eventpoll_pwq
564900 535453 94% 0.09K 13450 42 53800K kmalloc-96
372690 336229 90% 0.13K 12423 30 49692K kernfs_node_cache
362528 362365 99% 0.12K 11329 32 45316K seq_file
329937 327195 99% 1.06K 21455 30 686560K signal_cache
task_struct também é normalmente muito alto e normalmente tem cerca de 1,5 GB antes de eu ter que reinicializar.
Algumas perguntas:
1) Como faço para descobrir quais caches SLAB contêm a RAM não recuperável?
2) Há mais alguma coisa que eu possa fazer para descobrir por que a RAM é irrecuperável?