]>
git.proxmox.com Git - ceph.git/blob - ceph/qa/tasks/cephfs/test_openfiletable.py
3 from tasks
.cephfs
.cephfs_test_case
import CephFSTestCase
5 log
= logging
.getLogger(__name__
)
7 class OpenFileTable(CephFSTestCase
):
11 def _check_oft_counter(self
, name
, count
):
12 perf_dump
= self
.fs
.mds_asok(['perf', 'dump'])
13 if perf_dump
['oft'][name
] == count
:
17 def test_max_items_per_obj(self
):
19 The maximum number of openfiles omap objects keys are now equal to
20 osd_deep_scrub_large_omap_object_key_threshold option.
22 self
.set_conf("mds", "osd_deep_scrub_large_omap_object_key_threshold", "5")
25 self
.fs
.wait_for_daemons()
27 # Write some bytes to a file
32 for i
in range(0, file_count
):
33 filename
= "open_file{}".format(i
)
34 p
= self
.mount_a
.open_background(filename
)
35 self
.mount_a
.write_n_mb(filename
, size_mb
)
40 With osd_deep_scrub_large_omap_object_key_threshold value as 5 and
41 opening 8 files we should have a new rados object with name
42 mds0_openfiles.1 to hold the extra keys.
45 self
.fs
.radosm(["stat", "mds0_openfiles.1"])
48 self
.mount_a
.kill_background(p
)
50 def test_perf_counters(self
):
52 Opening a file should increment omap_total_updates by 1.
55 self
.set_conf("mds", "osd_deep_scrub_large_omap_object_key_threshold", "1")
57 self
.fs
.wait_for_daemons()
59 perf_dump
= self
.fs
.mds_asok(['perf', 'dump'])
60 omap_total_updates_0
= perf_dump
['oft']['omap_total_updates']
61 log
.info("omap_total_updates_0:{}".format(omap_total_updates_0
))
64 p
= self
.mount_a
.open_background("omap_counter_test_file")
65 self
.wait_until_true(lambda: self
._check
_oft
_counter
('omap_total_updates', 2), timeout
=120)
67 perf_dump
= self
.fs
.mds_asok(['perf', 'dump'])
68 omap_total_updates_1
= perf_dump
['oft']['omap_total_updates']
69 log
.info("omap_total_updates_1:{}".format(omap_total_updates_1
))
71 self
.assertTrue((omap_total_updates_1
- omap_total_updates_0
) == 2)
74 self
.mount_a
.kill_background(p
)
75 # Ensure that the file does not exist any more
76 self
.wait_until_true(lambda: self
._check
_oft
_counter
('omap_total_removes', 1), timeout
=120)
77 self
.wait_until_true(lambda: self
._check
_oft
_counter
('omap_total_kv_pairs', 1), timeout
=120)
79 perf_dump
= self
.fs
.mds_asok(['perf', 'dump'])
80 omap_total_removes
= perf_dump
['oft']['omap_total_removes']
81 omap_total_kv_pairs
= perf_dump
['oft']['omap_total_kv_pairs']
82 log
.info("omap_total_removes:{}".format(omap_total_removes
))
83 log
.info("omap_total_kv_pairs:{}".format(omap_total_kv_pairs
))
84 self
.assertTrue(omap_total_removes
== 1)
85 self
.assertTrue(omap_total_kv_pairs
== 1)