# Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. namespace=vespa.config.content ## PERFORMANCE PARAMETERS ## Number of threads to use for each mountpoint. num_threads int default=8 restart ## Number of threads for response processing and delivery ## 0 will give legacy sync behavior. ## Negative number will choose a good number based on # cores. num_response_threads int default=2 restart ## Number of handler objects that might be created by visitor threads ## This is a temporary setting that only skilled vespa developers should modify ## This must be kept in line with stor-visitor:visitorthreads num_visitor_threads int default=16 restart ## Number of handler objects that might be created by network threads ## This is a temporary setting that only skilled vespa developers should modify ## This must be kept in line with stor-communicationmanager:rpc.num_network_threads num_network_threads int default=2 restart ## Type of sequenced thread executor use for persistence replies. response_sequencer_type enum {LATENCY, THROUGHPUT, ADAPTIVE} default=ADAPTIVE restart ## Chunksize to use while merging buckets between nodes. ## ## Should follow stor-distributormanager:splitsize (16MB). bucket_merge_chunk_size int default=16772216 restart ## Whether or not to enable the multibit split optimalization. This is useful ## if splitting is expensive, but listing document identifiers is fairly cheap. ## This is true for memfile persistence layer, but not for vespa search. ## TODO verify its usage enable_multibit_split_optimalization bool default=true restart ## Whether or not to use async message handling when scheduling storage messages from FileStorManager. ## ## When turned on, the calling thread (e.g. FNET network thread when using Storage API RPC) ## gets the next async message to handle (if any) as part of scheduling a storage message. ## This async message is then handled by the calling thread immediately, ## instead of going via a persistence thread. use_async_message_handling_on_schedule bool default=false restart ## The noise level used when deciding whether a resource usage sample should be reported to the cluster controller. ## ## If one of the resource categories (e.g. disk or memory) has a usage delta that is larger than the noise level, ## the entire resource usage sample is immediately reported to the cluster controller (via host info). ## This config can be live updated (doesn't require restart). resource_usage_reporter_noise_level double default=0.001 ## Specify throttling used for async persistence operations. This throttling takes place ## before operations are dispatched to Proton and serves as a limiter for how many ## operations may be in flight in Proton's internal queues. ## ## - UNLIMITED is, as it says on the tin, unlimited. Offers no actual throttling, but ## has near zero overhead and never blocks. ## - DYNAMIC uses DynamicThrottlePolicy under the hood and will block if the window ## is full (if a blocking throttler API call is invoked). ## async_operation_throttler.type enum { UNLIMITED, DYNAMIC } default=DYNAMIC ## Internal throttler tuning parameters that only apply when type == DYNAMIC: async_operation_throttler.window_size_increment int default=20 async_operation_throttler.window_size_decrement_factor double default=1.2 async_operation_throttler.window_size_backoff double default=0.95 async_operation_throttler.min_window_size int default=20 async_operation_throttler.max_window_size int default=-1 # < 0 implies INT_MAX async_operation_throttler.resize_rate double default=3.0