Closed kimhanbeom closed 4 months ago
좋은 것 같은데요, 혹시 "tokio async runtime이 사용하는 multithread 갯수" < "config에서 설정한 db thread 갯수" 인 경우에는 문제 없을까요?
그리고 issue가 있다면 링크 / 없다면 생성 부탁드립니다.
@sophie-cluml
compaction의 경우 자주 발생하는 이벤트가 아니기 때문에 thread가 항상 활성화 되지 않을 것입니다. 또한 발생한 경우에도 config에서 설정한 갯수의 병렬thread 내에서 subcompaction의 thread들이 concurrently 하게 동작할 것이므로 기존 giganto에서 동작되는 tokio async runtime multithread
에 큰 영향은 없을 것입니다.
현재 전체 동작에 영향을 최소화 하기 위해서 increase_parallelism와 set_max_subcompactions의 default 설정을 각각 서버 cpu의 core 갯수의 1/3 값과 2를 기본값으로 생각 중이고, 각 프로젝트별 환경(traffic/hw spec)에 따라서 해당 값들을 추가 조절 할 예정입니다.
@kimhanbeom 이 PR은 관련 이슈가 없나요?
@sehkone rocksdb 설정에 대한 기존 이슈 #280 가 존재하나 해당 이슈의 목표(write시의 sst파일 생성 및 관련 튜닝)와 현재 튜닝의 목표(compaction 성능 개선)가 달라서 참조로 두지 않았습니다.
@kimhanbeom 소통 규칙을 꼭 지켜 주세요. 이슈 없는 PR은 이제 없는 겁니다. 참조할 이슈가 없다면 새로 이슈를 만들고 그걸 프로젝트에도 등록해야죠. 규칙 2번, 7번, 9번, 10번을 위반했습니다.
@syncpark 리뷰할 때에는 코드 자체도 리뷰하는 것이지만 우리 규칙을 잘 지키고 있는지도 함께 봐 주세요.
@kimhanbeom 규칙에 맞도록 이슈 새로 만들어 주세요.
@kimhanbeom 규칙에 맞도록 이슈 새로 만들어 주세요.
@kimhanbeom 이 옵션을 찾게된 계기가 Giganto가 Compaction하는 도중에 DB가 깨지는 현상이 발견되었던 문제때문이니 그 내용으로 이슈를 정리해주세요. 그래서 Compaction 시간을 단축하기 위한 방법으로 parallelism을 검토하게되었으니까요.
PR 설명
increase_parallelism
/set_max_subcompactions
옵션을 추가하였습니다.increase_parallelism
옵션은 rocksdb의 flush/ compaction 을 위한 thread 갯수를 설정 합니다. (기본: flush/compaction 각각 1 thread만 사용)set_max_subcompactions
옵션은 rocksdb compaction시 해당 작업을 여러개로 분할하여 concurrently 하게 수행할 최대 thread 수를 설정합니다.(기본: 1 로 subcompaction 미사용을 의미)increase_parallelism
/set_max_subcompactions
옵션을 적절히 줄 경우, compaction을 위한 background thread/ job이 증가하고, compaction 작업을 분할해서 처리하게 되므로 compaction의 성능이 향상 될 것입니다.Close: #732