diff --git a/lib/fluent/supervisor.rb b/lib/fluent/supervisor.rb index 854e53cb12..9584019de7 100644 --- a/lib/fluent/supervisor.rb +++ b/lib/fluent/supervisor.rb @@ -1104,6 +1104,11 @@ def build_spawn_command fluentd_spawn_cmd << '-Eascii-8bit:ascii-8bit' end + if @system_config.enable_jit + $log.info "enable Ruby JIT for workers (--jit)" + fluentd_spawn_cmd << '--jit' + end + # Adding `-h` so that it can avoid ruby's command blocking # e.g. `ruby -Eascii-8bit:ascii-8bit` will block. but `ruby -Eascii-8bit:ascii-8bit -h` won't. _, e, s = Open3.capture3(*fluentd_spawn_cmd, "-h") diff --git a/lib/fluent/system_config.rb b/lib/fluent/system_config.rb index df2f2387a7..5fb781d72b 100644 --- a/lib/fluent/system_config.rb +++ b/lib/fluent/system_config.rb @@ -28,7 +28,7 @@ class SystemConfig :without_source, :rpc_endpoint, :enable_get_dump, :process_name, :file_permission, :dir_permission, :counter_server, :counter_client, :strict_config_value, :enable_msgpack_time_support, :disable_shared_socket, - :metrics, :enable_input_metrics, :enable_size_metrics + :metrics, :enable_input_metrics, :enable_size_metrics, :enable_jit ] config_param :workers, :integer, default: 1 @@ -50,6 +50,7 @@ class SystemConfig config_param :disable_shared_socket, :bool, default: nil config_param :enable_input_metrics, :bool, default: nil config_param :enable_size_metrics, :bool, default: nil + config_param :enable_jit, :bool, default: false config_param :file_permission, default: nil do |v| v.to_i(8) end diff --git a/test/config/test_system_config.rb b/test/config/test_system_config.rb index d347bbe828..7b18cb3dd1 100644 --- a/test/config/test_system_config.rb +++ b/test/config/test_system_config.rb @@ -84,6 +84,7 @@ def parse_text(text) assert_nil(sc.enable_input_metrics) assert_nil(sc.enable_size_metrics) assert_nil(sc.enable_msgpack_time_support) + assert(!sc.enable_jit) assert_equal(:text, sc.log.format) assert_equal('%Y-%m-%d %H:%M:%S %z', sc.log.time_format) end @@ -102,6 +103,7 @@ def parse_text(text) 'enable_msgpack_time_support' => ['enable_msgpack_time_support', true], 'enable_input_metrics' => ['enable_input_metrics', true], 'enable_size_metrics' => ['enable_size_metrics', true], + 'enable_jit' => ['enable_jit', true], ) test "accepts parameters" do |(k, v)| conf = parse_text(<<-EOS)