limit 1Gib 직전으로 메모리 사용률이 조절된다. OSD당 최소 4Gib 할당, 메모리 사용량은 공식 사용
요약
1. ceph osd 메모리가 tera 단위로 올라감
2. cluster.yaml에서 resource limit 수정함
설명
1. ceph osd 메모리가 tera 단위로 올라감
> 결론부터 말하면 어떻게 얼마를 적용해라라는 기준이 아직 없음. 권고만 있음
관련 글을 하나씩 보기로하자. 나와 비슷한 고민을 한 사람이 있음
참고: https://github.com/rook/rook/issues/5821
1-1. 공식 문서
참고 : https://github.com/rook/rook/blob/master/design/ceph/resource-constraints.md
* request와 limit을 똑같이하는게 좋다고 함
- BestEffort - No requests and limits are set (for testing). -> 이거로 했다가 메모리가 올라감
- Burstable - Only requests requirements are set.
- Guaranteed - requests and limits are set to be equal.
1-2. 개인 블로그
참고 : https://documentation.suse.com/sbp/all/html/SBP-rook-ceph-kubernetes/index.html
8.3 Resource Requests - OSD RAM REPORT DOCUMENTATION BUG#EDIT SOURCE
There are node hardware recommendations for OSD RAM usage, and this needs to be translated to RAM requests on a per-OSD basis. The node-level recommendation below describes osd_memory_target. This is a Ceph configuration that is described in detail further on.
Total RAM required = [number of OSDs] x (1 GB + osd_memory_target) + 16 GB
heap memory는 osd_memory_taget 이하로 유지됨 : Ceph OSDs will attempt to keep heap memory usage under a designated target size set via the osd_memory_target configuration option.
For example, a node hosting 8 OSDs, memory Requests would be calculated as such:
8 OSDs x (1GB + 4GB) + 16GB = 56GB per node
56GB / 8 OSDs = 7GB
rook OSD requst 설정시, 알아서 osd_memory_target을 설정함 : Ceph has a feature that allows it to set osd_memory_target automatically when a Rook OSD Resource Request is set.
오버헤드 고려 없음, osd_memory_taget 보다 최소 1GB 크게 osd memory 잡기 :
However, Ceph sets this value 1:1 and does not leave overhead for waiting for the kernel to free memory. Therefore, we recommend setting osd_memory_target in Ceph explicitly, even if you wish to use the default value. Set Rook’s OSD resource requests accordingly and to a higher value than osd_memory_target by at least an additional 1GB. This is so Kubernetes does not schedule more applications or Ceph daemons onto a node than the node is likely to have RAM available for.
CPU도 동일함 : OSD RAM Resource Requests come with the same cluster-wide Resource Requests note as for OSD CPU. Use the highest Requests for a cluster consisting of multiple different configurations of OSDs.
1-3. 기타 논의글
참고: https://www.spinics.net/lists/dev-ceph/msg01698.html
아래는 비슷한 고민을 하는 게시글
'osd_memory_target' will be = min(REQUEST, LIMIT*ratio)
(limit을 거는 것은 좋은 예시가 아님. limit 도달하면 daemon을 죽이기 때문) -> 무한정 올라가면 더 안되는거 아닌가?
- In Rook/Kubernetes,
Ceph OSDs will read the POD_MEMORY_REQUEST and POD_MEMORY_LIMIT
env vars to infer a new default value for 'osd_memory_target'
- POD_MEMORY_REQUEST translates directly to 'osd_memory_target' 1:1
- POD_MEMORY_LIMIT (if REQUEST is unset) will set 'osd_memory_target' using the formula
( LIMIT x osd_memory_target_cgroup_limit_ratio )
- the default 'osd_memory_target' will be = min(REQUEST, LIMIT*ratio)
k8s의 리소스 best practice에 대한 글은 인터넷에서도 갑론을박.
1-4. github 논의
출처 : https://github.com/rook/rook/issues/5811
request는 최소 1G : I'd suggest setting request to 4 GiB and limit to 6 GiB (i.e. don't OOM kill it until it gets to the limit), and watch what happens to osd_memory_target.
2. cluster.yaml에서 resource limit 수정함
내부적으로 논의를 거쳐, 최적의 메모리 할당량을 적용해보기로 함
예를 들어, 아래는 단순한 예시
vi cluster.yaml resources: osd: limits: cpu: "2000m" memory: "20Gi" requests: cpu: "500m" memory: "4Gi" |
streaming 데이터 중지하고 실행하니, 1분 정도 10개 넘는 OSD가 restart 되었고
memory는 계속 올라가는 중, limit을 찍었을 때 어떤 현상이 나오는지 모니터링이 필요함
+ 일주일 사용 후기
limit 직전 1Gib 찍으면 다시 내려간다. 무조건 우상향이 아니었다.
나머지 OSD들도 limit-1Gib가 되면 동시에 죽는게 아닐까 약간 걱정된다.
내가 예상한 시나리오는 limit을 찍고 하나씩 재시작되는건데..
+ 열흘 사용후기
드디어 limit 근처로 갔는데, 메모리가 내려간다.
우상향만 하던 것이 내려갔다. 느낌이 좋다.
'limit - 1Gib' 까지 메모리가 사용되고 pod가 재시작될 걱정도 없다.
굿 만족스럽다,
'Storage > Ceph' 카테고리의 다른 글
Ceph) ceph-dashboard object-storage ui 보이게 설정 (0) | 2022.04.21 |
---|---|
Ceph)rgw instance 늘리기_ephemeral storage (0) | 2022.04.04 |
Ceph) ceph 상태 확인 명령어 (0) | 2022.03.14 |
kubernetes) rook-ceph dashboard orch 설정 (0) | 2022.03.14 |
kubernetes)rook-ceph mgr 2 설정_안됨 (0) | 2022.03.14 |