linux 서버 hang 상태 어떻게 분석해야 하나요?
제가 관리하는 리눅스 서버가 hang 이 발생했습니다. (리눅스 2.6 32bit / 32GB / 16core / No swap)
대부분의 daemon 들이 "D" uninterruptable sleep 상태에 빠졌습니다.
alloc_page 나 ex3 파일시스템 관련 call 에서 멈추어 있더군요
kernel 의 buddy info 를 보니 아래와 같습니다.
DMA free:9252kB min:468kB low:1404kB high:1872kB active:0kB inactive:80kB present:16256kB pages_scanned:795060 all_unreclaimable? yes
lowmem_reserve[]: 0 2270 33512 33512
Normal free:25040kB min:67112kB low:201336kB high:268448kB active:132828kB inactive:80896kB present:2324608kB pages_scanned:24013581 all_unreclaimable? yes
lowmem_reserve[]: 0 0 249936 249936
HighMem free:14155620kB min:512kB low:1847808kB high:2771456kB active:12154272kB inactive:1538700kB present:31991808kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
DMA: 9*4kB 12*8kB 8*16kB 5*32kB 6*64kB 2*128kB 4*256kB 2*512kB 2*1024kB 0*2048kB 1*4096kB = 9252kB
Normal: 70*4kB 11*8kB 4*16kB 1*32kB 2*64kB 1*128kB 1*256kB 1*512kB 1*1024kB 1*2048kB 5*4096kB = 25040kB
HighMem: 1519061*4kB 697232*8kB 106405*16kB 8242*32kB 850*64kB 1385*128kB 268*256kB 423*512kB 14*1024kB 0*2048kB 1*4096kB = 14155620kB
이와 같다면 normal 메모리가 부족하다고 보는게 맞나요?
normal 메모리가 4096kb 가 5개 나 있는데 왜 저걸 사용 못하죠?
다른 zone 의 page 들이 다 회수 불가능이라고 보았을 때, 5*4096kB 이 덩어리를 그냥 쪼개서 사용하면 되지 않나요?
어떤 것 때문에 시스템이 멈추는지.. 이 문제를 어떤식으로 풀어야 하는지 감이 잘 안잡힙니다.
고수님들의 조언 부탁드립니다.
댓글 달기