티스토리 뷰

CentOS6.3 64bit 환경에서 서비스 운영 중 아래와 같은 로그가 확인 되어 구글링 해봤다.

서비스 데몬 : page allocation failure. order:4, mode:0x8020  
kernel: Pid: 7036, comm: *** Not tainted 2.6.32-358.6.2.el6.x86_64 #1  
kernel: Call Trace:  
kernel: [<ffffffff8112c207>] ? __alloc_pages_nodemask+0x757/0x8d0  
kernel: [<ffffffff81010ff6>] ? dma_generic_alloc_coherent+0xa6/0x160  
kernel: [<ffffffff8103c8f1>] ? x86_swiotlb_alloc_coherent+0x31/0x70  
kernel: [<ffffffffa002e74a>] ? pci_alloc_consistent+0x5a/0xc0 [mpt2sas]  
kernel: [<ffffffffa0030155>] ? _ctl_do_mpt_command+0x7c5/0xcb0 [mpt2sas]  
kernel: [<ffffffff8119abe7>] ? __d_lookup+0xa7/0x150  
kernel: [<ffffffffa0030762>] ? _ctl_compat_mpt_command+0x122/0x160 [mpt2sas]  
kernel: [<ffffffff8150f026>] ? mutex_lock_interruptible+0x16/0x50  
kernel: [<ffffffffa003167b>] ? _ctl_ioctl_main+0x5cb/0x1070 [mpt2sas]  
kernel: [<ffffffff81193010>] ? do_filp_open+0x7d0/0xdd0  
kernel: [<ffffffff8104757c>] ? __do_page_fault+0x1ec/0x480  
kernel: [<ffffffffa0032133>] ? _ctl_ioctl_compat+0x13/0x20 [mpt2sas]  
kernel: [<ffffffff811d6bbd>] ? compat_sys_ioctl+0xed/0x510  
kernel: [<ffffffff8104dc73>] ? ia32_sysret+0x0/0x5   

page allocation error는 RHEL6.4/CentOS6.4이하에 많이 발견되는 버그라고 한다...
(swapper가 아닌 일반 프로세스에서도 page allocation error 발생)

해결 방안
page allocation failure 메시지를 제거하는 2가지 방법 이다.

1. THP 비활성화
별도의 바이너리 패치 작업 없이 Disable설정 후 리부팅만 진행하면된다. 리부팅을 안해도 되는 경우도 있지만 이미 AnonHugePages가 많이 사용되고 있는 시스템(cat /proc/meminfo로 확인하자)에서는 리부팅을 해야 효과가 있다.

/sys 파일 시스템 설정으로 비활성화
echo never > /sys/kernel/mm/transparent_hugepage/enabled  
echo never > /sys/kernel/mm/transparent_hugepage/defrag

위 방법은 리부팅 후에도 적용해줘야 하기 때문에 보통 /etc/rc.d/rc.local파일에 아래와 같이 추가 입력한다.
# Disable THP
if [[ -f "/sys/kernel/mm/transparent_hugepage/enabled" ]]; then  
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi  
if [[ -f "/sys/kernel/mm/transparent_hugepage/defrag" ]]; then  
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi  

커널 파라미터 비활성화
grub.conf파일을 수정하여 비활성화 할 수 있다.
transparent_hugepage=never 

2. RHEL6.5/CentOS6.5 커널로 패치
커널 패치는 REHL6/CentOS6.5릴리즈 기준 커널인 2.6.32-431.el6이상으로 설치하면 된다.

yum install kernel

 

[출처]http://blog.rubi.kr/swapper-page-allocation-failure-swapper-not-tainted/


반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함