--- /dev/null
+roles:
+- [mon.a, mgr.x, osd.0, client.0]
+tasks:
+- install:
+- ceph:
+ pre-mgr-commands:
+ - sudo ceph config set mgr mgr_pool false --force
+ conf:
+ osd:
+# we may land on ext4
+ osd max object name len: 400
+ osd max object namespace len: 64
+ log-ignorelist:
+ - DISPATCH_QUEUE_THROTTLE
+- workunit:
+ clients:
+ all:
+ - rados/test_dispatch_queue_throttle_warnings.sh
self.run_ceph_cmd('tell', 'cephfs.c', 'something')
self.assertEqual(ce.exception.exitstatus, 1)
+ def test_dispatch_queue_throttle_cluster_log(self):
+ """
+ That cluster log a warning when the Dispatch Queue Throttle Limit hits.
+ """
+ self.config_set('global', 'ms_dispatch_throttle_bytes', 500)
+ self.config_set('global', 'ms_dispatch_throttle_log_interval', 5)
+ # Create files & split across 10 directories, 1000 each.
+ with self.assert_cluster_log("DISPATCH_QUEUE_THROTTLE",
+ invert_match=False, watch_channel="cluster"):
+ for i in range(0, 10):
+ self.mount_a.create_n_files("dir{0}/file".format(i), 1000, sync=False)
+
+ def test_dispatch_queue_throttle_health_warn(self):
+ """
+ That a health warning is generated when the Dispatch Queue Throttle Limit hits.
+ """
+ self.config_set('global', 'ms_dispatch_throttle_bytes', 10)
+ self.config_set('global', 'ms_dispatch_throttle_log_interval', 1)
+ # Create files & split across 10 directories, 1000 each.
+ for i in range(0, 10):
+ self.mount_a.create_n_files("dir{0}/file".format(i), 1000, sync=False)
+ self.wait_for_health("DISPATCH_QUEUE_THROTTLE", 120)
@classhook('_add_session_client_evictions')
class TestSessionClientEvict(CephFSTestCase):
--- /dev/null
+#!/usr/bin/env bash
+
+set -uex
+
+# number of osds = 1
+crushtool -o crushmap --build --num_osds 1 host straw 2 rack straw 2 row straw 2 root straw 0
+ceph osd setcrushmap -i crushmap
+ceph osd tree
+ceph tell osd.* injectargs --osd_max_markdown_count 1024 --osd_max_markdown_period 1
+ceph osd set noout
+
+wait_for_healthy() {
+ while ceph health detail | grep "DISPATCH_QUEUE_THROTTLE"
+ do
+ sleep 1
+ done
+}
+
+test_dispatch_queue_throttle() {
+ ceph config set global ms_dispatch_throttle_bytes 10
+ ceph config set global ms_dispatch_throttle_log_interval 1
+ ceph health detail
+ ceph health | grep "Dispatch Queue Throttling"
+ ceph health detail | grep "DISPATCH_QUEUE_THROTTLE"
+ ceph config set global ms_dispatch_throttle_bytes 104857600 # default: 100_M
+ ceph config set global ms_dispatch_throttle_log_interval 30
+ wait_for_healthy
+}
+
+test_dispatch_queue_throttle
+
+exit 0