MongoDB를 실행했는데 아래와 같은 WARNING이 뜨는 경우가 있다.
2015-08-31T17:37:07.669+0900 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2015-08-31T17:37:07.669+0900 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2015-08-31T17:37:07.669+0900 I CONTROL [initandlisten]
2015-08-31T17:37:07.669+0900 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2015-08-31T17:37:07.669+0900 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2015-08-31T17:37:07.669+0900 I CONTROL [initandlisten]
Transparent Huge Pages(THP)가 적용되어 있기 때문인데,
THP가 뭐냐믄 대용량 메모리를 효율적으로 관리하기 위해 메모리 페이지 사이즈를 늘이는 방식이다.
근데 이게 database를 돌리는 시스템에선 오히려 성능의 저하가 나타나게 되는데,
메모리 접근이 연속적으로 되지 않고 여기저기 찔끔찔끔 흩어져 있기 때문이라고 한다.
그래서 MongoDB도 THP가 적용되어 있으면 실행시 끄라고 권장한다.
일단 끄는 법은 간단하다.
// 옵션이 always, madvise never 이렇게 3개인데 always가 되어 있을 것이다.
[root@localhost]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
// 끄자
[root@localhost]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@localhost]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
// 확인
[root@localhost]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
근데 이게 단발성이라 리부팅되면 다시 적용되는데, 스크립트로 만들어서 부팅될 때마다 실행될 수 있도록 해야한다.
[참조]
http://docs.mongodb.org/master/tutorial/transparent-huge-pages
'DataBase' 카테고리의 다른 글
[MongoDB] priority 설정 (0) | 2015.09.10 |
---|---|
[MongoDB] ReplicaSet의 SECONDARY 멤버를 ARBITER로 변환하기 (0) | 2015.09.10 |
[MongoDB] oplog resize (0) | 2015.08.04 |
[MongoDB] 사이즈 줄이기 (compact, repairDatabase) (0) | 2015.07.31 |
[MongoDB] chunk 이동 실패 (failed to sh.moveChunk, chunk too big to move) (0) | 2015.07.02 |