arcus-memcached
arcus-memcached copied to clipboard
engine config 정리
engine config 관련한 잔여 작업으로 아래와 같이 정리합니다.
- engine 설정에 관한 구동 옵션은 engine 설정으로 이전
- ~구동 옵션과 engine 설정이 중복된 경우, 구동 옵션이 우선 순위 가짐.~ (수정 않음)
2개 이상의 config file 설정이 존재하는 경우도 고려해 주세요. engine 일부 설정은 file1으로 설정하고, engine 다른(예, replication) 설정은 file2로 설정하는 경우를 말합니다.
엔진 설정이 (1) 일반 구동 옵션과 (2) 엔진 전용 설정 옵션 (-e
)으로 모두 제공되는 경우,
엔진 전용 설정 옵션으로 지정한 설정이 최종 반영되도록 합니다.
엔진 설정 파일로 구동한 경우에 중복 설정 처리 (https://github.com/naver/arcus-memcached/issues/454) 이슈를 참고 바랍니다.
"engine 설정에 관한 구동 옵션은 engine 설정으로 이전"에 관한 설명입니다.
- engine 설정은 모두
-e
옵션으로 설정하도록 합니다.- backward compatibility 위해, 기존 설정 방식도 일정 기간 유지합니다.
- engine 설정은 가급적 engine에서 보관하고 memcached core에서 유지하지 않도록 합니다.
memcached core에서 engine 설정 값이 필요하면, engine API로 조회하여 사용합니다.
- 현재 engine 설정을 engine 부분과 memcached core에서 모두 보관하고 있습니다.
- 서로 다른 type 값으로 보관하는 이슈가 있지만 engine 쪽으로 모두 이전하면 이러한 이슈는 없어지게 됩니다.
현재 memcached core에서 보관중인 engine 설정은 아래와 같습니다.
settings 구조체(기본값) | engine_config 설정 시 | 구동 옵션 |
---|---|---|
settings.maxbytes (64 * 64 * 1024) |
cache_size= |
-m |
settings.evict_to_free (1) |
eviction= |
-M |
settings.sticky_limit (0) |
sticky_limit= |
-g |
settings.factor (1.25) |
factor= |
-f |
settings.chunk_size (48) |
chunk_size= |
-n |
settings.prefix_delimiter (':') |
prefix_delimiter= |
-D |
settings.max_list_size (50000) |
max_list_size= |
환경변수 |
settings.max_set_size (50000) |
max_list_size= |
환경변수 |
settings.max_map_size (50000) |
max_list_size= |
환경변수 |
settings.max_btree_size (50000) |
max_list_size= |
환경변수 |
현재 engine_config에 대한 stats 명령 사용 시 settings에서 값을 가져옵니다.
APPEND_STAT("sticky_limit", "%llu", (unsigned long long)settings.sticky_limit);
따라서 engine_config이 변경되는 경우 settings의 값을 함께 변경해 주어야 합니다. https://github.com/naver/arcus-memcached/blob/acdd417d3247d50da5816aec744ba01d237b2324/memcached.c#L8838-L8843 https://github.com/naver/arcus-memcached/blob/acdd417d3247d50da5816aec744ba01d237b2324/memcached.c#L15039-L15053
engine 설정은 settings에서 분리하고, get_config api를 활용해 engine config를 직접 얻어오는 형태로 변경하겠습니다.