내 SLAB 회수 불가능 메모리(SUnreclaim)는 제한 없이 증가하는데, 이것이 내 시스템이 결국 RAM이 부족해지고 충돌할 때까지 교체를 시도하기 시작하는 이유인 것 같습니다. 이것은 지난 며칠 동안의 SReclaim 차트입니다. 16GB 서버에서 일반적인 RAM 사용량은 약 5GB입니다. SReclaim이 약 10.xGB에 도달하면 무제한 교환이 시작됩니다.
그래프는 점점 커지는 것을 보여주며, 두 경우 모두 시스템이 저절로 죽기 전에 RAM을 확보하기 위해 다시 시작했습니다.
이는 두 번째 재부팅 전 슬래브의 일부입니다.
---------------------------------- 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도 일반적으로 재부팅해야 하기 전에 약 1.5GB로 매우 높습니다.
몇 가지 질문:
1) 어떤 SLAB 캐시에 회수 불가능한 RAM이 포함되어 있는지 확인하는 방법은 무엇입니까?
2) RAM을 회수할 수 없는 이유를 알아내기 위해 제가 할 수 있는 다른 방법이 있습니까?
답변1
되튐. 현재 동일한 문제를 해결하는 중입니다.
Active / Total Objects (% used) : 27175932 / 27473124 (98.9%)
Active / Total Slabs (% used) : 844076 / 844076 (100.0%)
Active / Total Caches (% used) : 77 / 108 (71.3%)
Active / Total Size (% used) : 12915527.98K / 12995852.27K (99.4%)
Minimum / Average / Maximum Object : 0.01K / 0.47K / 15.25K
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
24418488 24418393 99% 0.50K 763083 32 12209328K kmalloc-512
853984 853984 100% 0.12K 26687 32 106748K kmalloc-128
801528 643979 80% 0.19K 19085 42 152680K kmalloc-192
401792 401792 100% 0.06K 6278 64 25112K kmalloc-64
kmalloc-512
범인인 것 같습니다. 할당을 추적하기 위해 커널 디버깅 옵션이 활성화되었습니다 kmalloc-512
.