default: 64_K
with_legacy: true
# rocksdb options that will be used for omap(if omap_backend is rocksdb)
-- name: filestore_rocksdb_options
- type: str
- level: dev
- desc: Options to pass through when RocksDB is used as the KeyValueDB for (deprecated) Filestore.
- default: max_background_jobs=10,compaction_readahead_size=2097152,compression=kNoCompression
- with_legacy: true
-- name: filestore_omap_backend
- type: str
- level: dev
- desc: The KeyValueDB to use for Filestore metadata (that is, omaps) (deprecated).
- default: rocksdb
- enum_values:
- - leveldb
- - rocksdb
- with_legacy: true
-- name: filestore_omap_backend_path
- type: str
- level: dev
- desc: The path where the Filestore KeyValueDB should store its database(s) (deprecated)
- with_legacy: true
-# filestore wb throttle limits
-- name: filestore_wbthrottle_enable
- type: bool
- level: advanced
- desc: Enabling throttling of operations to backing file system (deprecated)
- default: true
- with_legacy: true
-- name: filestore_wbthrottle_btrfs_bytes_start_flusher
- type: size
- level: advanced
- desc: Start flushing (fsyncing) when this many bytes are written (btrfs, deprecated)
- default: 40_M
- with_legacy: true
-- name: filestore_wbthrottle_btrfs_bytes_hard_limit
- type: size
- level: advanced
- desc: Block writes when this many bytes haven't been flushed (fsynced) (btrfs, deprecated)
- default: 400_M
- with_legacy: true
-- name: filestore_wbthrottle_btrfs_ios_start_flusher
- type: uint
- level: advanced
- desc: Start flushing (fsyncing) when this many IOs are written (brtrfs, deprecated)
- default: 500
- with_legacy: true
-- name: filestore_wbthrottle_btrfs_ios_hard_limit
- type: uint
- level: advanced
- desc: Block writes when this many IOs haven't been flushed (fsynced) (btrfs,deprecated)
- default: 5000
- with_legacy: true
-- name: filestore_wbthrottle_btrfs_inodes_start_flusher
- type: uint
- level: advanced
- desc: Start flushing (fsyncing) when this many distinct inodes have been modified (deprecated)
- (btrfs)
- default: 500
- with_legacy: true
-- name: filestore_wbthrottle_xfs_bytes_start_flusher
- type: size
- level: advanced
- desc: Start flushing (fsyncing) when this many bytes are written (xfs, deprecated)
- default: 40_M
- with_legacy: true
-- name: filestore_wbthrottle_xfs_bytes_hard_limit
- type: size
- level: advanced
- desc: Block writes when this many bytes haven't been flushed (fsynced) (xfs, deprecated)
- default: 400_M
- with_legacy: true
-- name: filestore_wbthrottle_xfs_ios_start_flusher
- type: uint
- level: advanced
- desc: Start flushing (fsyncing) when this many IOs are written (xfs, deprecated)
- default: 500
- with_legacy: true
-- name: filestore_wbthrottle_xfs_ios_hard_limit
- type: uint
- level: advanced
- desc: Block writes when this many IOs haven't been flushed (fsynced) (xfs, deprecated)
- default: 5000
- with_legacy: true
-- name: filestore_wbthrottle_xfs_inodes_start_flusher
- type: uint
- level: advanced
- desc: Start flushing (fsyncing) when this many distinct inodes have been modified
- (xfs, deprecated)
- default: 500
- with_legacy: true
-# These must be less than the fd limit
-- name: filestore_wbthrottle_btrfs_inodes_hard_limit
- type: uint
- level: advanced
- desc: Block writing when this many inodes have outstanding writes (btrfs, deprecated)
- default: 5000
- with_legacy: true
-- name: filestore_wbthrottle_xfs_inodes_hard_limit
- type: uint
- level: advanced
- desc: Block writing when this many inodes have outstanding writes (xfs, deprecated)
- default: 5000
- with_legacy: true
-# O_DSYNC writes to Filestore
-- name: filestore_odsync_write
- type: bool
- level: dev
- desc: Write with O_DSYNC (deprecated)
- default: false
- with_legacy: true
-# Tests index failure paths
-- name: filestore_index_retry_probability
- type: float
- level: dev
- desc: Deprecated
- default: 0
- with_legacy: true
-# Allow object read error injection
-- name: filestore_debug_inject_read_err
- type: bool
- level: dev
- desc: Deprecated
- default: false
- with_legacy: true
-- name: filestore_debug_omap_check
- type: bool
- level: dev
- desc: Deprecated
- default: false
- fmt_desc: Debugging check on synchronization. This is an expensive operation.
- with_legacy: true
-- name: filestore_omap_header_cache_size
- type: size
- level: dev
- desc: Deprecated
- default: 1_K
- with_legacy: true
-# Use omap for xattrs for attrs over
-# filestore_max_inline_xattr_size or
-- name: filestore_max_inline_xattr_size
- type: size
- level: dev
- desc: Deprecated
- default: 0
- with_legacy: true
-- name: filestore_max_inline_xattr_size_xfs
- type: size
- level: dev
- desc: Deprecated
- default: 64_K
- with_legacy: true
-- name: filestore_max_inline_xattr_size_btrfs
- type: size
- level: dev
- desc: Deprecated
- default: 2_K
- with_legacy: true
-- name: filestore_max_inline_xattr_size_other
- type: size
- level: dev
- desc: Deprecated
- default: 512
- with_legacy: true
-# for more than filestore_max_inline_xattrs attrs
-- name: filestore_max_inline_xattrs
- type: uint
- level: dev
- desc: Deprecated
- default: 0
- with_legacy: true
-- name: filestore_max_inline_xattrs_xfs
- type: uint
- level: dev
- desc: Deprecated
- default: 10
- with_legacy: true
-- name: filestore_max_inline_xattrs_btrfs
- type: uint
- level: dev
- desc: Deprecated
- default: 10
- with_legacy: true
-- name: filestore_max_inline_xattrs_other
- type: uint
- level: dev
- desc: Deprecated
- default: 2
- with_legacy: true
-- name: filestore_max_xattr_value_size
- type: size
- level: dev
- desc: Deprecated
- default: 0
- with_legacy: true
-- name: filestore_max_xattr_value_size_xfs
- type: size
- level: dev
- desc: Deprecated
- default: 64_K
- with_legacy: true
-- name: filestore_max_xattr_value_size_btrfs
- type: size
- level: dev
- desc: Deprecated
- default: 64_K
- with_legacy: true
-# ext4 allows 4k xattrs total including some smallish extra fields and the
-# keys. We're allowing 2 512 inline attrs in addition some some filestore
-# replay attrs. After accounting for those, we still need to fit up to
-# two attrs of this value. That means we need this value to be around 1k
-# to be safe. This is hacky, but it's not worth complicating the code
-# to work around ext4's total xattr limit.
-- name: filestore_max_xattr_value_size_other
- type: size
- level: dev
- desc: Deprecated
- default: 1_K
- with_legacy: true
-# track sloppy crcs
-- name: filestore_sloppy_crc
- type: bool
- level: dev
- desc: Deprecated
- default: false
- with_legacy: true
-- name: filestore_sloppy_crc_block_size
- type: size
- level: dev
- desc: Deprecated
- default: 64_K
- with_legacy: true
-- name: filestore_max_alloc_hint_size
- type: size
- level: dev
- desc: Deprecated
- default: 1_M
- with_legacy: true
-# seconds
-- name: filestore_max_sync_interval
- type: float
- level: advanced
- desc: Period between calls to syncfs(2) and journal trims (seconds)(Deprecated)
- default: 5
- with_legacy: true
-# seconds
-- name: filestore_min_sync_interval
- type: float
- level: dev
- desc: Minimum period between calls to syncfs(2) (deprecated)
- default: 0.01
- with_legacy: true
-- name: filestore_btrfs_snap
- type: bool
- level: dev
- desc: Deprecated
- default: true
- with_legacy: true
-- name: filestore_btrfs_clone_range
- type: bool
- level: advanced
- desc: Use btrfs clone_range ioctl to efficiently duplicate objects (deprecated)
- default: true
- with_legacy: true
-# zfsonlinux is still unstable
-- name: filestore_zfs_snap
- type: bool
- level: dev
- desc: Deprecated
- default: false
- with_legacy: true
-- name: filestore_fsync_flushes_journal_data
- type: bool
- level: dev
- desc: Deprecated
- default: false
- with_legacy: true
-# (try to) use fiemap
-- name: filestore_fiemap
- type: bool
- level: advanced
- desc: Use fiemap ioctl(2) to determine which parts of objects are sparse (deprecated)
- default: false
- with_legacy: true
-- name: filestore_punch_hole
- type: bool
- level: advanced
- desc: Use fallocate(2) FALLOC_FL_PUNCH_HOLE to efficiently zero ranges of objects (deprecated)
- default: false
- with_legacy: true
-# (try to) use seek_data/hole
-- name: filestore_seek_data_hole
- type: bool
- level: advanced
- desc: Use lseek(2) SEEK_HOLE and SEEK_DATA to determine which parts of objects are
- sparse (deprecated)
- default: false
- with_legacy: true
-- name: filestore_splice
- type: bool
- level: advanced
- desc: Use splice(2) to more efficiently copy data between files (deprecated)
- default: false
- with_legacy: true
-- name: filestore_fadvise
- type: bool
- level: advanced
- desc: Use posix_fadvise(2) to pass hints to file system (deprecated)
- default: true
- with_legacy: true
-# collect device partition information for management application to use
-- name: filestore_collect_device_partition_information
- type: bool
- level: advanced
- desc: Collect metadata about the backing file system on OSD startup (deprecated)
- default: true
- with_legacy: true
-# (try to) use extsize for alloc hint NOTE: extsize seems to trigger
-# data corruption in xfs prior to kernel 3.5. filestore will
-# implicitly disable this if it cannot confirm the kernel is newer
-# than that.
-# NOTE: This option involves a tradeoff: When disabled, fragmentation is
-# worse, but large sequential writes are faster. When enabled, large
-# sequential writes are slower, but fragmentation is reduced.
-- name: filestore_xfs_extsize
- type: bool
- level: advanced
- desc: Use XFS extsize ioctl(2) to hint allocator about expected write sizes (deprecated)
- default: false
- with_legacy: true
-- name: filestore_journal_parallel
- type: bool
- level: dev
- desc: Deprecated
- default: false
- with_legacy: true
-- name: filestore_journal_writeahead
- type: bool
- level: dev
- desc: Deprecated
- default: false
- with_legacy: true
-- name: filestore_journal_trailing
- type: bool
- level: dev
- desc: Deprecated
- default: false
- with_legacy: true
-- name: filestore_queue_max_ops
- type: uint
- level: advanced
- desc: Max IO operations in flight (deprecated)
- default: 50
- with_legacy: true
-- name: filestore_queue_max_bytes
- type: size
- level: advanced
- desc: Max (written) bytes in flight (deprecated)
- default: 100_M
- with_legacy: true
-- name: filestore_caller_concurrency
- type: int
- level: dev
- desc: Deprecated
- default: 10
- with_legacy: true
-# Expected filestore throughput in B/s
-- name: filestore_expected_throughput_bytes
- type: float
- level: advanced
- desc: Expected throughput of backend device (aids throttling calculations) (deprecated)
- default: 209715200
- with_legacy: true
-# Expected filestore throughput in ops/s
-- name: filestore_expected_throughput_ops
- type: float
- level: advanced
- desc: Expected through of backend device in IOPS (aids throttling calculations) (deprecated)
- default: 200
- with_legacy: true
-# Filestore max delay multiple. Defaults to 0 (disabled)
-- name: filestore_queue_max_delay_multiple
- type: float
- level: dev
- desc: Deprecated
- default: 0
- with_legacy: true
-# Filestore high delay multiple. Defaults to 0 (disabled)
-- name: filestore_queue_high_delay_multiple
- type: float
- level: dev
- desc: Deprecated
- default: 0
- with_legacy: true
-# Filestore max delay multiple ops. Defaults to 0 (disabled)
-- name: filestore_queue_max_delay_multiple_bytes
- type: float
- level: dev
- desc: Deprecated
- default: 0
- with_legacy: true
-# Filestore high delay multiple bytes. Defaults to 0 (disabled)
-- name: filestore_queue_high_delay_multiple_bytes
- type: float
- level: dev
- desc: Deprecated
- default: 0
- with_legacy: true
-# Filestore max delay multiple ops. Defaults to 0 (disabled)
-- name: filestore_queue_max_delay_multiple_ops
- type: float
- level: dev
- desc: Deprecated
- default: 0
- with_legacy: true
-# Filestore high delay multiple ops. Defaults to 0 (disabled)
-- name: filestore_queue_high_delay_multiple_ops
- type: float
- level: dev
- desc: Deprecated
- default: 0
- with_legacy: true
-- name: filestore_queue_low_threshhold
- type: float
- level: dev
- desc: Deprecated
- default: 0.3
- with_legacy: true
-- name: filestore_queue_high_threshhold
- type: float
- level: dev
- desc: Deprecated
- with_legacy: true
- default: 0.9
-- name: filestore_op_threads
- type: int
- level: advanced
- desc: Threads used to apply changes to backing file system (deprecated)
- default: 2
- with_legacy: true
-- name: filestore_op_thread_timeout
- type: int
- level: advanced
- desc: Seconds before a worker thread is considered stalled (deprecated)
- default: 1_min
- with_legacy: true
-- name: filestore_op_thread_suicide_timeout
- type: int
- level: advanced
- desc: Seconds before a worker thread is considered dead (deprecated)
- default: 3_min
- with_legacy: true
-- name: filestore_commit_timeout
- type: float
- level: advanced
- desc: Seconds before backing file system is considered hung (deprecated)
- default: 10_min
- with_legacy: true
-- name: filestore_fiemap_threshold
- type: size
- level: dev
- desc: Deprecated
- default: 4_K
- with_legacy: true
-- name: filestore_merge_threshold
- type: int
- level: dev
- desc: Deprecated
- default: -10
- with_legacy: true
-- name: filestore_split_multiple
- type: int
- level: dev
- desc: Deprecated
- default: 2
- with_legacy: true
-- name: filestore_split_rand_factor
- type: uint
- level: dev
- desc: Deprecated
- default: 20
- with_legacy: true
-- name: filestore_update_to
- type: int
- level: dev
- desc: Deprecated
- default: 1000
- with_legacy: true
-- name: filestore_blackhole
- type: bool
- level: dev
- desc: Deprecated
- default: false
- with_legacy: true
-- name: filestore_fd_cache_size
- type: int
- level: dev
- desc: Deprecated
- default: 128
- with_legacy: true
-- name: filestore_fd_cache_shards
- type: int
- desc: Deprecated
- level: dev
- default: 16
- with_legacy: true
-- name: filestore_ondisk_finisher_threads
- type: int
- desc: Deprecated
- level: dev
- default: 1
- with_legacy: true
-- name: filestore_apply_finisher_threads
- type: int
- desc: Deprecated
- level: dev
- default: 1
- with_legacy: true
-# file onto which store transaction dumps
-- name: filestore_dump_file
- type: str
- level: dev
- desc: Deprecated
- with_legacy: true
-# inject a failure at the n'th opportunity
-- name: filestore_kill_at
- type: int
- level: dev
- desc: Deprecated
- default: 0
- with_legacy: true
-# artificially stall for N seconds in op queue thread
-- name: filestore_inject_stall
- type: int
- level: dev
- desc: Deprecated
- default: 0
- with_legacy: true
-# fail/crash on EIO
-- name: filestore_fail_eio
- type: bool
- level: dev
- desc: Deprecated
- default: true
- with_legacy: true
-- name: filestore_debug_verify_split
- type: bool
- level: dev
- desc: Deprecated
- default: false
- with_legacy: true
- name: journal_dio
type: bool
level: dev
TEST(WorkQueue, Resize)
{
- ThreadPool tp(g_ceph_context, "bar", "tp_bar", 2, "filestore_op_threads");
+ ThreadPool tp(g_ceph_context, "bar", "tp_bar", 2, "osd_op_num_threads_per_shard");
tp.start();
sleep(1);
ASSERT_EQ(2, tp.get_num_threads());
- g_conf().set_val("filestore op threads", "5");
+ g_conf().set_val("osd_op_num_threads_per_shard", "5");
g_conf().apply_changes(&cout);
sleep(1);
ASSERT_EQ(5, tp.get_num_threads());
- g_conf().set_val("filestore op threads", "3");
+ g_conf().set_val("osd_op_num_threads_per_shard", "3");
g_conf().apply_changes(&cout);
sleep(1);
ASSERT_EQ(3, tp.get_num_threads());
- g_conf().set_val("filestore op threads", "0");
+ g_conf().set_val("osd_op_num_threads_per_shard", "0");
g_conf().apply_changes(&cout);
sleep(1);
ASSERT_EQ(0, tp.get_num_threads());
- g_conf().set_val("filestore op threads", "15");
+ g_conf().set_val("osd_op_num_threads_per_shard", "15");
g_conf().apply_changes(&cout);
sleep(1);
ASSERT_EQ(15, tp.get_num_threads());
- g_conf().set_val("filestore op threads", "-1");
+ g_conf().set_val("osd_op_num_threads_per_shard", "-1");
g_conf().apply_changes(&cout);
sleep(1);
ASSERT_EQ(15, tp.get_num_threads());
};
TEST(WorkQueue, change_timeout){
- ThreadPool tp(g_ceph_context, "bar", "tp_bar", 2, "filestore_op_threads");
+ ThreadPool tp(g_ceph_context, "bar", "tp_bar", 2, "osd_op_num_threads_per_shard");
tp.start();
twq wq(2, 20, &tp);
// check timeout and suicide