# Copyright (C) 2022-present MongoDB, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the Server Side Public License, version 1, # as published by MongoDB, Inc. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # Server Side Public License for more details. # # You should have received a copy of the Server Side Public License # along with this program. If not, see # . # # As a special exception, the copyright holders give permission to link the # code of portions of this program with the OpenSSL library under certain # conditions as described in each individual source file and distribute # linked combinations including the program with the OpenSSL library. You # must comply with the Server Side Public License in all respects for # all of the code used other than as permitted herein. If you modify file(s) # with this exception, you may extend this exception to your version of the # file(s), but you are not obligated to do so. If you do not wish to do so, # delete this exception statement from your version. If you delete this # exception statement from all source files in the program, then also delete # it in the license file. # global: cpp_namespace: "mongo" cpp_includes: - "mongo/db/admission/ticketholder_manager.h" - "mongo/db/admission/concurrency_adjustment_validator.h" enums: StorageEngineConcurrencyAdjustmentAlgorithm: description: "Algorithm for adjusting the number of concurrent storage engine transactions" type: string # 'kFixedConcurrentTransactions': Number of concurrent transactions are controlled by # storageEngineConcurrentWriteTransactions/storageEngineConcurrentReadTransactions and will # not be adjusted automatically based on overall system throughput. # # 'kThroughputProbing': Number of concurrent transactions are dynamically adjusted, either # increasing or decreasing concurrency in the storage engine, based on system throughput. values: kFixedConcurrentTransactions: "fixedConcurrentTransactions" kThroughputProbing: "throughputProbing" server_parameters: storageEngineConcurrentWriteTransactions: description: "Storage Engine Concurrent Write Transactions" set_at: [ startup, runtime ] cpp_vartype: AtomicWord cpp_varname: gConcurrentWriteTransactions on_update: "admission::TicketHolderManager::updateConcurrentWriteTransactions" deprecated_name: - wiredTigerConcurrentWriteTransactions # Default value being 0 on startup means we're allowing the underlying storage engines # to use their default values. Updating it to 0 again after startup does not use the default value. # This parameter is only compatible with the 'kFixedConcurrentTransactions' option for # storageEngineConcurrencyAdjustmentAlgorithm. default: 0 validator: callback: "admission::TicketHolderManager::validateConcurrentWriteTransactions" redact: false storageEngineConcurrentReadTransactions: description: "Storage Engine Concurrent Read Transactions" set_at: [ startup, runtime ] cpp_vartype: AtomicWord cpp_varname: gConcurrentReadTransactions on_update: "admission::TicketHolderManager::updateConcurrentReadTransactions" deprecated_name: - wiredTigerConcurrentReadTransactions # Default value being 0 on startup means we're allowing the underlying storage engines # to use their default values. Updating it to 0 again after startup does not use the default value. # This parameter is only compatible with the 'kFixedConcurrentTransactions' option for # storageEngineConcurrencyAdjustmentAlgorithm. default: 0 validator: callback: "admission::TicketHolderManager::validateConcurrentReadTransactions" redact: false lowPriorityAdmissionBypassThreshold: description: >- Only applicable when Deprioritization is enabled for global lock ticket admission. Limits the number of consecutive times a queue of low-priority operations is bypassed in favor of waking normal-priority operations for ticket admission. Once the threshold is met, an operation from the low-priority queue will be woken for ticket admission. set_at: [ startup, runtime ] cpp_vartype: AtomicWord cpp_varname: gLowPriorityAdmissionBypassThreshold on_update: "admission::TicketHolderManager::updateLowPriorityAdmissionBypassThreshold" # 0 means low priority operations will never be admitted when there are normal priority # operations waiting for ticket admission. default: 5000 validator: gte: 0 redact: false storageEngineConcurrencyAdjustmentAlgorithm: description: >- The algorithm to be used for adjusting the number of concurrent storage engine transactions. set_at: startup cpp_vartype: std::string cpp_varname: gStorageEngineConcurrencyAdjustmentAlgorithm default: "throughputProbing" validator: callback: validateConcurrencyAdjustmentAlgorithm redact: false storageEngineConcurrencyAdjustmentIntervalMillis: description: >- The interval in milliseconds in which to run the concurrency adjustment algorithm, if it is not set to fixedConcurrentTransactions. set_at: startup cpp_vartype: int32_t cpp_varname: gStorageEngineConcurrencyAdjustmentIntervalMillis default: 100 validator: gte: 10 redact: false