ceph-volume: decrease number of pvs calls in lvm list
This commit is contained in:
parent
e38a529796
commit
ec05ef512b
@ -0,0 +1,66 @@
|
|||||||
|
From 1a38ea3b96dbe8fd2f2fca8ee9a501ef1423027f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Guillaume Abrioux <gabrioux@redhat.com>
|
||||||
|
Date: Mon, 20 Jun 2022 13:43:43 +0200
|
||||||
|
Subject: [PATCH] ceph-volume: decrease number of `pvs` calls in `lvm list`
|
||||||
|
|
||||||
|
current implementation of `List.create_report()` implies a lot of calls
|
||||||
|
to `pvs` process. This could be avoided.
|
||||||
|
|
||||||
|
current implementation:
|
||||||
|
```
|
||||||
|
>>> import timeit
|
||||||
|
>>> from ceph_volume.devices.lvm.listing import List
|
||||||
|
>>> timeit.timeit(List([]).main, number=1000)
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
93.03700458299136
|
||||||
|
```
|
||||||
|
|
||||||
|
new implementation:
|
||||||
|
|
||||||
|
```
|
||||||
|
>>> import timeit
|
||||||
|
>>> from ceph_volume.devices.lvm.listing import List
|
||||||
|
>>> timeit.timeit(List([]).main, number=1000)
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
62.16391600697534
|
||||||
|
```
|
||||||
|
|
||||||
|
In this example, it improves performance by ~30%
|
||||||
|
|
||||||
|
Fixes: https://tracker.ceph.com/issues/56127
|
||||||
|
|
||||||
|
Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
|
||||||
|
---
|
||||||
|
src/ceph-volume/ceph_volume/devices/lvm/listing.py | 5 +++--
|
||||||
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/ceph-volume/ceph_volume/devices/lvm/listing.py b/src/ceph-volume/ceph_volume/devices/lvm/listing.py
|
||||||
|
index 44d5063ce37..c16afdaa767 100644
|
||||||
|
--- a/src/ceph-volume/ceph_volume/devices/lvm/listing.py
|
||||||
|
+++ b/src/ceph-volume/ceph_volume/devices/lvm/listing.py
|
||||||
|
@@ -101,6 +101,8 @@ class List(object):
|
||||||
|
|
||||||
|
report = {}
|
||||||
|
|
||||||
|
+ pvs = api.get_pvs()
|
||||||
|
+
|
||||||
|
for lv in lvs:
|
||||||
|
if not api.is_ceph_device(lv):
|
||||||
|
continue
|
||||||
|
@@ -109,8 +111,7 @@ class List(object):
|
||||||
|
report.setdefault(osd_id, [])
|
||||||
|
lv_report = lv.as_dict()
|
||||||
|
|
||||||
|
- pvs = api.get_pvs(filters={'lv_uuid': lv.lv_uuid})
|
||||||
|
- lv_report['devices'] = [pv.name for pv in pvs] if pvs else []
|
||||||
|
+ lv_report['devices'] = [pv.name for pv in pvs if pv.lv_uuid == lv.lv_uuid] if pvs else []
|
||||||
|
report[osd_id].append(lv_report)
|
||||||
|
|
||||||
|
phys_devs = self.create_report_non_lv_device(lv)
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
@ -125,7 +125,7 @@
|
|||||||
#################################################################################
|
#################################################################################
|
||||||
Name: ceph
|
Name: ceph
|
||||||
Version: 16.2.7
|
Version: 16.2.7
|
||||||
Release: 4
|
Release: 5
|
||||||
%if 0%{?fedora} || 0%{?rhel} || 0%{?openEuler}
|
%if 0%{?fedora} || 0%{?rhel} || 0%{?openEuler}
|
||||||
Epoch: 2
|
Epoch: 2
|
||||||
%endif
|
%endif
|
||||||
@ -148,6 +148,7 @@ Patch2: 0002-enable-install-deps-in-openEuler.patch
|
|||||||
Patch3: 0003-isa-l-update.patch
|
Patch3: 0003-isa-l-update.patch
|
||||||
Patch4: 0004-cmake-add-support-python-3.10.patch
|
Patch4: 0004-cmake-add-support-python-3.10.patch
|
||||||
Patch5: 0005-ceph-volume-lvm-api-function-no-undefined.patch
|
Patch5: 0005-ceph-volume-lvm-api-function-no-undefined.patch
|
||||||
|
Patch6: 0006-ceph-volume-decrease-number-of-pvs-calls-in-lvm-list.patch
|
||||||
%if 0%{?suse_version}
|
%if 0%{?suse_version}
|
||||||
# _insert_obs_source_lines_here
|
# _insert_obs_source_lines_here
|
||||||
ExclusiveArch: x86_64 aarch64 ppc64le s390x
|
ExclusiveArch: x86_64 aarch64 ppc64le s390x
|
||||||
@ -2486,6 +2487,9 @@ exit 0
|
|||||||
%config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml
|
%config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Aug 25 2022 yangxiaoliang <yangxiaoliang07@163.com> - 2:16.2.7-5
|
||||||
|
- fix ceph-volume lvm list calls many times pvs
|
||||||
|
|
||||||
* Mon Jul 18 2022 yangxiaoliang <yangxiaoliang07@163.com> - 2:16.2.7-4
|
* Mon Jul 18 2022 yangxiaoliang <yangxiaoliang07@163.com> - 2:16.2.7-4
|
||||||
- fix ceph-volume lvm api function undefined error
|
- fix ceph-volume lvm api function undefined error
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user