Mysql & Maria/admin

maria, mysql swap 사용

dbavayne 2025. 1. 9. 16:37

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

https://atl.kr/dokuwiki/doku.php/thp_transparent_huge_pages_%EA%B8%B0%EB%8A%A5%EA%B3%BC_%EC%84%A4%EC%A0%95_%EB%B0%A9%EB%B2%95

https://hoing.io/archives/809

 

'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