WebAssembly UDF 세션 설정
WebAssembly UDF 세션 설정 (webassembly_udf_*)
이 페이지에서는 WebAssembly UDF와 관련된 webassembly_udf_* 세션 설정들을 다뤄요. 입력 분할 메모리 비율, 연료(fuel) 제한, 입력 블록 크기, 최대 인스턴스 수, 메모리 제한을 제어해요. 이 설정들은 system.settings 테이블에서 확인할 수 있으며 ClickHouse 소스에서 자동 생성돼요.
출처: 문서
본문
이 설정들은 system.settings에서 확인할 수 있으며 소스에서 자동 생성돼요.
webassembly_udf_input_split_memory_ratio
WebAssembly UDF 인스턴스의 선형 메모리 중 한 번의 호출 직렬화 입력이 차지할 수 있는 비율이에요. 최소 0, 최대 1이어야 하며, 기본값은 인풋 버퍼 옆에 게스트 자신의 작업 집합으로 남은 절반을 남겨둬요.
1 아래의 여유분이 배칭을 안전하게 만드는 이유예요: 게스트 자신의 데이터, 스택, 할당기는 그 메모리를 공유하며 호스트에 보이지 않아요. 1에 가까운 비율은 그들을 위한 공간을 남기지 않으므로, 그것에 맞춰 크기가 정해진 호출도 게스트의 할당기 내부에서 실패할 수 있어요.
ABI BUFFERED_V1에 대해서만 읽히며, webassembly_udf_max_input_block_size가 0인 동안에만 호출 크기를 정해요. 0이 아닌 블록 크기는 호출당 행 수를 대신 제한해요.
배치는 단일 행 아래로는 절대 내려가지 않으므로, 자신의 직렬화 크기가 예산을 넘는 행은 단독으로 전달되고, 모듈의 선형 메모리에 비해 너무 큰 행은 게스트의 할당기 내부에서 실패해요.
0으로 설정하면 입력을 분할하지 않아요: 파이프라인 블록 전체가 한 번의 호출로 전달돼요.
webassembly_udf_max_fuel
WebAssembly UDF 인스턴스 실행당 연료 제한이에요. 각 WebAssembly 명령은 일정 양의 연료를 소비해요. 값은 런타임에 전달되기 전에 1024배 축소되므로, webassembly_udf_max_fuel = 1은 약 1024 연료 단위에 해당해요. 유한 제한이 없게 하려면 0으로 설정해요. 함수별 설정 webassembly_udf_enable_fuel이 true인 함수에만 적용되며, 이것이 기본값이에요.
webassembly_udf_max_input_block_size
단일 호출로 WebAssembly UDF에 전달되는 최대 행 수예요. 0이 아닌 값은 호출당 행 수를 제한하고 모든 ABI에 적용돼요.
0으로 설정하면 대신 직렬화된 입력으로 호출 크기를 정해요. 이는 ABI BUFFERED_V1에만 적용되는데, 전체 입력 블록을 게스트 메모리로 직렬화하는 유일한 ABI이기 때문이에요: 그 블록은 호출의 입력이 모듈 선형 메모리의 webassembly_udf_input_split_memory_ratio 이내에 머물도록 분할돼요. ROW_DIRECT는 인자를 WebAssembly 값으로 전달하고 ASSEMBLYSCRIPT는 행마다 하나의 객체를 만들므로, 둘 다 호출 크기를 정할 직렬화 입력이 없어 0이면 파이프라인 블록을 그대로 둬요.
webassembly_udf_max_instances
함수당 병렬로 실행할 수 있는 최대 WebAssembly UDF 인스턴스 수예요.
webassembly_udf_max_memory
WebAssembly UDF 인스턴스당 메모리 제한(바이트)이에요.