로컬 파일 시스템 읽기 관련 설정
로컬 파일 시스템 읽기 관련 설정
로컬 파일 시스템에서 데이터를 읽는 방법과 프리페치 여부를 제어하는 설정들이에요. read, pread, mmap, io_uring, pread_threadpool 중 하나를 선택할 수 있답니다. 이 설정들은 system.settings 테이블에서 확인할 수 있고 소스 코드에서 자동 생성된 값들이에요.
출처: 문서
본문
이 설정들은 system.settings에서 확인할 수 있고, 소스 코드에서 자동 생성된 값들이에요.
local_filesystem_read_method
로컬 파일 시스템에서 데이터를 읽는 방법으로, 다음 중 하나예요: read, pread, mmap, io_uring, pread_threadpool.
'pread_threadpool' 메서드는 데이터가 이미 페이지 캐시에 없으면 읽기를 스레드 풀에 넘겨요. 이는 preadv2 시스템 콜과 RWF_NOWAIT 플래그로 확인돼요. 그 확인은 Linux 5.11 이상이 필요하고, 시스템 콜이 컨테이너 런타임의 seccomp 프로파일에 거부되지 않아야 해요. 시작 시 시스템 콜을 사용할 수 있는지 확인되고, 사용할 수 없으면 페이지 캐시에서 제공되는 읽기를 포함한 모든 읽기에 대해 스레드 풀로 넘기는 것이 비싸므로 이 설정의 기본값이 'pread'로 전환돼요. 그 이유는 서버 로그에 보고돼요. seccomp 프로파일이 시스템 콜을 오류 코드로 거부할 때만 감지되는데, 이것이 컨테이너 런타임이 하는 방식이에요. 대신 프로세스를 종료시키는 프로파일은 감지할 수 없어요. 구성이나 SET으로 명시적으로 설정된 값은 전환되지 않아요.
'io_uring' 메서드는 실험적이며 동시 읽기/쓰기가 있을 때 Log, TinyLog, StripeLog, File, Set, Join 및 기타 append-able 파일이 있는 테이블에서 작동하지 않아요.
인터넷에서 'io_uring'에 대한 다양한 글을 읽었다면 그것에 현혹되지 마세요. 그것은 파일을 읽는 더 나은 방법이 아니에요. ClickHouse의 경우처럼 많은 양의 작은 IO 요청이 있는 경우를 제외하면 말이죠. 'io_uring'을 활성화할 이유는 없어요.
local_filesystem_read_prefetch
로컬 파일 시스템에서 데이터를 읽을 때 프리페칭을 사용해야 하는지 여부예요.