maria나 mysql swap 사용률이 높을 경우 확인해야할 항목 정리
1. vm.swappiness 확인
- 해당 항목은 보통 1 로 설정함
스왑 활용도, 스와핑 활용도, 스와피니스
리눅스 커널 속성 중 하나
스왑메모리 활용 수준 조절
스왑 사용의 적극성 수준
값의 범위: 0 ~ 100 (기본값: 60)
값 설명
------------------ --------------------
vm.swappiness = 0 스왑 사용안함[1]
vm.swappiness = 1 스왑 사용 최소화
vm.swappiness = 60 기본값
vm.swappiness = 100 적극적으로 스왑 사용
→ 메모리 여유가 충분할 때 성능향상을 위해 vm.swappiness = 10 정도를 권고하는 경우가 있음
- 설정값 확인
[root@zetawiki ~]# sysctl vm.swappiness
vm.swappiness = 60
[root@zetawiki ~]# sysctl -a | grep swappiness
vm.swappiness = 60
[root@zetawiki ~]# cat /proc/sys/vm/swappiness
60
2. 커널 파라미터 thp 비활성화 확인
THP는 기존 4KB 크기의 페이지 대신 2MB 혹은 1GB 크기의 페이지를 동적으로 할당하여 사용하는 기능이며 RHEL 6 이후 기본으로 활성화 되어있습니다.
THP가 MariaDB의 Swap 사용에 미치는 영향
1. 메모리 잠금(locking) 및 캐싱 효율성 저하
- THP는 큰 메모리 페이지를 사용하려고 시도하기 때문에, MariaDB의 버퍼 풀 또는 쿼리 캐시에서 사용하는 메모리 관리 방식과 충돌이 발생할 수 있습니다.
- MariaDB는 일반적으로 정교한 메모리 관리 기법을 사용하여 효율적으로 동작하지만, THP는 이를 방해하여 더 많은 메모리를 사용하게 하고, 필요하지 않은 경우에도 메모리를 할당하려고 시도할 수 있습니다.
- 결과적으로 스왑 사용률이 증가할 가능성이 있습니다.
2. 메모리 단편화 증가
- THP는 큰 메모리 페이지를 생성하기 위해 연속적인 메모리 블록을 요구합니다. 그러나, 시스템 메모리가 단편화되면 이러한 연속적인 메모리를 확보하기 어렵습니다.
- 이러한 상황에서, THP는 추가적인 메모리 관리 오버헤드를 발생시키고, 스왑 영역을 사용하여 메모리를 할당하려는 시도가 증가할 수 있습니다.
3. MariaDB의 I/O 지연 증가
- THP가 활성화된 상태에서는 MariaDB의 I/O 작업이 느려질 수 있습니다. 이는 THP가 메모리 페이지를 동적으로 압축하거나 확장하면서 추가적인 CPU 작업을 요구하기 때문입니다.
- 결과적으로 MariaDB의 버퍼 풀에서 디스크로의 스왑이 증가할 가능성이 있습니다.
MariaDB에서 THP 비활성화가 권장되는 이유
MariaDB는 THP가 활성화되어 있을 때 성능 저하 및 스왑 증가를 방지하기 위해 THP를 비활성화하는 것을 권장합니다. 특히, InnoDB 스토리지 엔진은 4KB 크기의 페이지를 기본 단위로 사용하는데, THP의 2MB 페이지 크기는 MariaDB의 메모리 관리 설계와 충돌합니다.
[root@host]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never -> 출력된 결과에 [always] 에 대괄호가 되어있으면 THP가 활성화 된 상태입니다.
always madvise [never] -> 출력된 결과에 [never] 에 대괄호가 되어있으면 THP가 비활성화 된 상태입니다.
[root@host]# cat /proc/meminfo
MemTotal: 1003184 kB
MemFree: 604844 kB
MemAvailable: 750616 kB
Buffers: 884 kB
Cached: 143904 kB
SwapCached: 0 kB
Active: 160624 kB
Inactive: 112368 kB
Active(anon): 128912 kB
Inactive(anon): 6356 kB
Active(file): 31712 kB
Inactive(file): 106012 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Dirty: 92 kB
Writeback: 0 kB
AnonPages: 128300 kB
Mapped: 37492 kB
Shmem: 7064 kB
Slab: 60876 kB
SReclaimable: 23024 kB
SUnreclaim: 37852 kB
KernelStack: 8480 kB
PageTables: 6220 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2598740 kB
Committed_AS: 494544 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 185924 kB
VmallocChunk: 34359535100 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 61312 kB
DirectMap2M: 987136 kB
DirectMap1G: 0 kB
여기서 아래의 모든 값이 0 이어야 THP가 완전히 비활성화 된 상태입니다.
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
3. 세션사용량
4. innodb_buffer_pool_size 적절한지 여부 확인
출처
swappiness
https://blog.naver.com/PostView.nhn?blogId=hanajava&logNo=221516060597
thp
'Mysql & Maria > admin' 카테고리의 다른 글
Innodb_buffer_pool 관련 튜닝사항 (0) | 2024.12.31 |
---|---|
Performance Schema (1) | 2024.12.13 |
SHOW SLAVE STATUS (0) | 2024.12.03 |
replication 깨진 후 bin log 복구 (2) | 2024.12.03 |
percona toolkit (pt-table-checksum) (1) | 2024.11.19 |