Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

engine config 정리 #541

Open
jhpark816 opened this issue Dec 3, 2020 · 5 comments
Open

engine config 정리 #541

jhpark816 opened this issue Dec 3, 2020 · 5 comments
Assignees

Comments

@jhpark816
Copy link
Collaborator

jhpark816 commented Dec 3, 2020

engine config 관련한 잔여 작업으로 아래와 같이 정리합니다.

  • engine 설정에 관한 구동 옵션은 engine 설정으로 이전
  • 구동 옵션과 engine 설정이 중복된 경우, 구동 옵션이 우선 순위 가짐. (수정 않음)
@jhpark816

This comment was marked as off-topic.

@jhpark816
Copy link
Collaborator Author

엔진 설정이 (1) 일반 구동 옵션과 (2) 엔진 전용 설정 옵션 (-e)으로 모두 제공되는 경우,
엔진 전용 설정 옵션으로 지정한 설정이 최종 반영되도록 합니다.
엔진 설정 파일로 구동한 경우에 중복 설정 처리 (#454) 이슈를 참고 바랍니다.

@jhpark816
Copy link
Collaborator Author

jhpark816 commented Jul 6, 2022

"engine 설정에 관한 구동 옵션은 engine 설정으로 이전"에 관한 설명입니다.

  • engine 설정은 모두 -e 옵션으로 설정하도록 합니다.
    • backward compatibility 위해, 기존 설정 방식도 일정 기간 유지합니다.
  • engine 설정은 가급적 engine에서 보관하고 memcached core에서 유지하지 않도록 합니다.
    memcached core에서 engine 설정 값이 필요하면, engine API로 조회하여 사용합니다.
    • 현재 engine 설정을 engine 부분과 memcached core에서 모두 보관하고 있습니다.
    • 서로 다른 type 값으로 보관하는 이슈가 있지만 engine 쪽으로 모두 이전하면 이러한 이슈는 없어지게 됩니다.

@namsic
Copy link
Collaborator

namsic commented Aug 17, 2022

현재 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= 환경변수

@namsic
Copy link
Collaborator

namsic commented Oct 27, 2022

현재 engine_config에 대한 stats 명령 사용 시 settings에서 값을 가져옵니다.

APPEND_STAT("sticky_limit", "%llu", (unsigned long long)settings.sticky_limit);

따라서 engine_config이 변경되는 경우 settings의 값을 함께 변경해 주어야 합니다.

arcus-memcached/memcached.c

Lines 8838 to 8843 in acdd417

LOCK_SETTING();
ret = mc_engine.v1->set_config(mc_engine.v0, c, config_key, (void*)&new_sticky_limit);
if (ret == ENGINE_SUCCESS) {
settings.sticky_limit = new_sticky_limit;
}
UNLOCK_SETTING();

arcus-memcached/memcached.c

Lines 15039 to 15053 in acdd417

static void settings_reload_engine_config(void)
{
ENGINE_ERROR_CODE ret;
uint32_t maxsize;
uint32_t maxbytes;
uint32_t scrubcount;
/* Following settings are loaded by getting engine config */
ret = mc_engine.v1->get_config(mc_engine.v0, NULL, "max_list_size", (void*)&maxsize);
if (ret == ENGINE_SUCCESS) {
settings.max_list_size = maxsize;
}
ret = mc_engine.v1->get_config(mc_engine.v0, NULL, "max_set_size", (void*)&maxsize);
if (ret == ENGINE_SUCCESS) {

engine 설정은 settings에서 분리하고, get_config api를 활용해
engine config를 직접 얻어오는 형태로 변경하겠습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants