서버 관리 이슈 기록

XFS: 5 possible memory allocation deadlock in kmem_zone_alloc (mode: 0x8250) : 이슈

monkeydev 2019. 9. 10. 10:23

사내에서 관리하는 서버에 ssh 접근과, 관리하는 서비스들로도 접근이 안되서, 서버실에 올라가서 직접 보니 위와 같은 로그를 터미널에 계속해서 찍고 있었다.

아래와 같은 로그를 계속 발생시키고 있었다.

커널 메모리 에러 로그


위와 관련하여 아래의 url을 참고하면 정보를 얻을 수 있다. 
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=884938 

얻을 수 있는 주요 정보는 아래와 같다.

Writing a large number of files to an XFS system with a larger
directory block size causes slow performance and kernel log errors re:
memory allocation deadlocks.



즉 XFS 파일시스템을 갖는 디스크에서, block size가 큰 디렉토리에 대해 많은 양의 파일을 write 할 때, 위의 이미지와 같은 에러로그가 발생한다고 한다. 따라서 smaller directory block size를 이용하도록 해서 해결한다고 한다.


위의 설명처럼 block size를 줄여야 하는 이유를 아래의 url에서 찾을 수 있었다.
https://www.suse.com/support/kb/doc/?id=7023344

위 문서에서는 커널 메모리 오류의 원인을 아래와 같이 정의한다.

kmem_zone_alloc 이슈에 대한 원인


fragmentation이 점점 커져서 4MB 이상의 contiguous memory를 할당할 수 없을 때 위의 문제가 발생한다고 한다.
즉, fragmentation을 줄이기 위해서 위와 같이 block size를 줄여야 하는 것으로 보인다.

위에 대해 임시적인 해결방법과 xfs_db 명령어를 활용한 fragmentation 조회 방법을 설명한 url이 있다.
https://blog.codecentric.de/en/2017/04/xfs-possible-memory-allocation-deadlock-kmem_alloc/