aboutsummaryrefslogtreecommitdiffstats
path: root/configdefinitions/src/vespa/stor-filestor.def
blob: c7ac1472d30d60145ab75b46c090b7f5b4c6af0b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content

## DETECT FAILURE PARAMETERS

## Deprecated and unused - will soon go away
fail_disk_after_error_count int default=1 restart

## Deprecated and unused - will soon go away
disk_operation_timeout int default=0 restart

## 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

## When merging, if we find more than this number of documents that exist on all
## of the same copies, send a separate apply bucket diff with these entries
## to an optimized merge chain that guarantuees minimum data transfer.
common_merge_chain_optimalization_minimum_size int default=64 restart

## Chunksize to use while merging buckets between nodes.
##
## Should follow stor-distributormanager:splitsize (16MB).
bucket_merge_chunk_size int default=16772216 restart

## When merging, it is possible to send more metadata than needed in order to
## let local nodes in merge decide which entries fits best to add this time
## based on disk location. Toggle this option on to use it. Note that memory
## consumption might increase in a 4.1 to 4.2 upgrade due to this, as 4.1
## dont support to only fill in part of the metadata provided and will always
## fill all.
## NB unused and will be removed shortly.
enable_merge_local_node_choose_docs_optimalization bool default=true 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.
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
## If true, each put/remove contained within a merge is individually throttled as if it
## were a put/remove from a client. If false, merges are throttled at a persistence thread
## level, i.e. per ApplyBucketDiff message, regardless of how many document operations
## are contained within.
async_operation_throttler.throttle_individual_merge_feed_ops bool default=true

## 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).
##
## TODO deprecate in favor of the async_operation_throttler struct instead.
async_operation_throttler_type enum { UNLIMITED, DYNAMIC } default=DYNAMIC

## Specifies the extent the throttling window is increased by when the async throttle
## policy has decided that more concurrent operations are desirable. Also affects the
## _minimum_ size of the throttling window; its size is implicitly set to max(this config
## value, number of threads).
##
## Only applies if async_operation_throttler_type == DYNAMIC.
## DEPRECATED! use the async_operation_throttler struct instead
async_operation_dynamic_throttling_window_increment int default=20 restart