• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글

Proxmox ZFS 사용시 메모리(RAM) 사용량 최적화 하기.

달소 달소 2292

2

15

안녕하세요. 달소입니다.

 

이번글에서는 Proxmox 에서 핵심기능인 ZFS를 사용할때 발생하는 메모리 과다점유를 해결하는방법입니다.

물론 RAM용량을 늘리는게 가장 효율적인방법이겠지만.. 메모리를 올리기 어려운환경에서 적용하시면 되겠습니다.

 

기본적으로 ZFS에서는 ARC(Adaptive Replacement Cache)라는 기능을 통해 빠른속도를 보여주는데 이게 사용하는 램의 용량과 디스크의 용량/상황에 따라서 엄청난량의 메모리 점유율을 보여주기도합니다.
https://namu.wiki/w/ZFS

 

제가 겪은걸로는 VM으로는 약 16G만 사용하고있었는데 ARC로 32G를 먹어버리는.. 엄청난 점유율을 보여줬습니다.

 

image.png.jpg

 

실제로 쉘로가서 arcstat 명령어를 쳐보니 이렇게 31G나 먹고있더군요..하핳

 

image.png.jpg

 

해결방법은 시스템 메모리상에서 ARC로 사용되는 메모리에 제한을 두면됩니다.

제가 해당 ZFS에 대해 모르는 내용이 많아 구글링해서 제가 적용해본 내용을 그대로 사용하였습니다.

 

1. KSM 튜닝

 

SM(Kernel Same-page Merging)은 소중한 RAM을 조금 더 활용하기 위한 훌륭한 도구입니다. Proxmox에서는 기본적으로 활성화되어 있지만 기본 설정은 RAM 사용량이 급증할 수 있는 ZFS 시스템에서 사용하기에 적합하지 않습니다. 디스크를 많이 사용하는 작업이 처음 발생하는 경우(예: 한 zpool에서 다른 zpool로의 백업 또는 복제).

KSM은 중복 메모리 페이지를 단일 페이지로 줄여 작동하므로 여러 VM이 동일한 리소스를 메모리에 저장한 경우 동일한 리소스의 여러 복사본으로 RAM 공간을 낭비하는 대신 RAM에 한 번만 저장하고 공유합니다. 이는 대부분의 VM에서 동일한 운영 체제를 실행할 때 가장 잘 작동합니다.

KSM Tuning은 VM에 안전하게 할당할 수 있는 RAM의 양을 늘리지 않지만 RAM 사용률이 높은 기간 동안 추가 버퍼를 제공하므로 내가 안전하게 할 수 있는 모든 RAM을 할당하는 것이 조금 나아집니다. 

 

기본KSM의 KSM_THRES_COEF은 20이며, 이는 전체 시스템 RAM의 20% 미만이 사용 가능한 경우 KSM이 트리거됨을 의미합니다. 이 계산 공식은 다음과 같습니다.

임계값 * 총 RAM / 100

Proxmox Web GUI에 따라 총 62.83GiB의 RAM이 있으므로 내 시스템의 기본값은 다음과 같습니다.

20 * 62.83GiB / 100 = 12.566GiB

즉, KSM은 내 RAM 사용량이 50.264GiB(총 RAM 62.83GiB - 12.566GiB 여유 RAM 임계값 = 50.264GiB 트리거 포인트)에 도달한 경우에만 작동을 시작합니다.

나는 숫자를 조금 가지고 놀았고 KSM_THRES_COEF약 41GiB의 RAM 사용량에서 KSM을 트리거하기 위해 값 35를 생각해 냈습니다.

35 * 62.83GiB / 100 = 21.9905GiB 62.83GiB - 21.9905GiB = 40.8395GiB 임계값

 

수정방법

vi /etc/ksmtuned.conf 로 가서

빨간색 네모칸 안의 주석을 없애고 값을 35로 변경해준뒤에 저장해주시면됩니다.

재부팅이 필요하나 이건 아래 진행할 ARC 메모리 값 변경후에 진행할거라 일단은 두셔도 됩니다.

 

image.png.jpg

 

2. ARC 튜닝

이제 앞서 설명한 ARC의 최대값에 대한 튜닝입니다.

ARC의 경우 사용하는 총 용량의 1TB당 1G 그러니까 약 1%정도를 권장한다고하니 참고하시면 되겠습니다.

참고링크에서는 8TB정도를 사용해서 8G를 기준으로했지만 저같은경우 SSD 2TB, HDD 10TB를 사용하기때문에 총 용량 12TB를 기준으로 예시를 만들었습니다.

 

12TB인 경우 최대 램 12G 최소 6G로 설정할것인데 이걸 바이트로 표기해줘야합니다.

12GB인경우 12 * 1024 * 1024 * 1024 이므로 총 128849018888 이 되고 /2 하면 최소값이 6G가 됩니다.

아래 /etc/modprobe.d/zfs.conf 를 만들어주시면서 내용을 넣어주시면됩니다.

 

vi /etc/modprobe.d/zfs.conf

 

options zfs zfs_arc_min=6442450944
options zfs zfs_arc_max=12884901888

 

image.png.jpg

 

그리고 아래명령어들로 arc설정이 적용되도록 해주고 재부팅을한번해주세요.

 

update-initramfs -u
pve-efiboot-tool refresh

 

재부팅을하고나서 arcstat을 하면 아래처럼 값이 잘 적용되는걸 확인하실 수 있습니다.

 

image.png.jpg

 

48GB에서 10G로 줄어버리는 매직...

그래도 램은 아껴써야합니다 ㅎㅎ

image.png.jpg

참고 :  https://www.dlford.io/memory-tuning-proxmox-zfs/

How to increase the amount of RAM available to virtual machines by tuning the virtualization host.
dlford.io / 2019-08-06

 

신고공유스크랩
15
2명이 추천
profile image
하늘위의하늘 2022.05.10. 14:24
달소

램 딱히 사용 않할것 같은데요.. 혹시 옮기면 메리트가 있을까요? ㅎㅎ

그리고 OS들 모두 새로 설치하셨나요?

마이그(?) 바로 안되나요? ㅠㅠ

profile image
달소 글쓴이 2022.05.10. 14:29
하늘위의하늘

전 댓글에서도 적었는데 vmdk -> qcow2로 변환에서 바로 마운트 됩니다~

저는 이번기회에 Ubuntu 22.04로 다업그레이드 했어요 ㅎㅎ

서버 1개 제외..ㅠ

profile image 2등
펜타네스트 2022.05.10. 09:55

ZFS가 가용 램을 하마마냥 다 쳐묵쳐묵한다는 걸 글로는 미리 배웠웠는데

 

최대 램 용량이 8기가뿐이 안되는 제 환경에서

기존 plex 미디어 파일들을 ZFS위에 옮겨보려고 하니

데이터를 읽고 쓰는데만 램을 다 써버리더라구요 =_

 

그 상태 그대로 plex를 구동 시키면 어마무시한 일이 발생하겠다 싶어서

zpool 다 날리고 plex 미디어 파일들은 평범한 qcow2로 우회했습니다...ㅋㅋ

profile image
달소 글쓴이 2022.05.10. 10:00
펜타네스트

8G면..아무래도 ZFS사용하기 조금 무섭긴할듯합니다 ㅠㅠ 다른것도 돌려야하는데...

 

3등
섭린이 2022.05.14. 04:04

요거 따라했더니 proxmox가 고장이 났어요 ㅠ,,

스스디1개 하드3개인데 하드1개를 인식을 못하길래,,

보드 바이오스에서는 인식하길래 os에서 뭔가 꼬인것같아서

다시 클린 설치 해버렸습니다

다시 해보기가 두렵네요..

profile image
달소 글쓴이 2022.05.14. 12:16
섭린이

음.. zfs에서 램 가용률을 제어하는것 외에는 손댄게 없습니다.

원복했을때 해결이 됐으면.. 옵션값문제겠지만 그게아니라면 다른문제가 아닐까 싶네요..

dadami 2022.09.09. 09:28
달소

본문 따라하면 부팅 과정에서 zfs 모듈을 로드하지 못하는 문제가 발생합니다.

쉘에서 vi로 직접 수정 후 재로드 하였더니 부팅 가능했습니다

profile image
달소 글쓴이 2022.09.09. 20:06
dadami

저같은경우 위과정으로 테스트/실사용중인데 재부팅을 몇번해도 문제가없었습니다

어떤문제인지 캡처나 해결과정을 올려주시면 다른분들께도움이 될듯하네요

dealerx 2023.01.20. 10:07
문제 없이 적용 잘 되었습니다. 감사합니다.
적용 환경 : Proxmox 7.3 Linux 5.15.83
profile image
jerry80 2023.07.25. 10:30
저도 잘 적용되었습니다.
ZFS 는 512G Nvme 2개 Raid 1 에만 적용했고, 나머지 대용량 하드는 그냥 ext4 포맷했습니다.
환경은 : Proxmox 8.0.3 RAM 32G 입니다.
꿀꿀 2023.10.09. 21:55

image.png.jpg

적용한 화면 모습닙니다.

 

Proxmox 7.4-16 사용중 입니다.

총 4대중 2대 적용 했고, 2대는 성능 이슈 발생이 있는지 확인 하고 적용 하려 합니다

댓글 쓰기 권한이 없습니다. 로그인

취소 댓글 등록

cmt alert

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story

본 게시판은 서버구축 게시판과 통합되었습니다.

서버구축 게시판 이동하기
분류 제목 글쓴이 날짜 조회 추천
공지 서버OS(ESXi/Linux/Router 등) 게시판 이용안내. 달소 21.11.16.17:43 585 +1
ESXi 공지 ESXi 관련 추천글 모음 5 달소 21.04.23.12:19 3755 +6
ESXi USB LAN으로 ESXi8 설치하기.(Feat. Realtek LAN) 15 달소 23.01.01.18:51 2182 +2
Assistant OS 당신이 알아야할 새로운 스탠다드 Matter란 무엇인가 5 DarkAcid 22.12.30.02:38 738 +1
Proxmox 인텔 igpu는 gvt-g를 이용해 두개 이상의 가상머신에 패스스루 해줄 수 있네요. 13 니즛 22.12.23.02:19 1373 +1
질문
normal
초코코알라 23.05.06.18:14 666 0
Proxmox
image
굿럭 23.01.05.12:59 1431 0
Linux
image
달소 23.01.05.10:23 362 0
질문
image
swift89 23.01.04.14:05 379 0
질문
image
DarkAcid 23.01.04.12:34 442 0
Linux
image
콜라 23.01.03.23:07 622 0
질문
normal
ENTJ도플랜 23.01.03.13:15 307 0
Proxmox
image
eyeball 23.01.02.14:42 1232 0
ESXi
image
달소 23.01.01.18:51 2182 +2
질문
normal
누구냐 23.01.01.00:06 464 0