From: Jianpeng Ma Date: Fri, 7 Dec 2018 03:13:09 +0000 (+0800) Subject: osd/OSD: preallocate for _get_pgs/_get_pgids to avoid reallocate. X-Git-Tag: v14.1.0~674^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F25434%2Fhead;p=ceph.git osd/OSD: preallocate for _get_pgs/_get_pgids to avoid reallocate. num_pgs is the most accurate value fore reserve when call _get_pgs & _get_pgids. Signed-off-by: Jianpeng Ma --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 3bdf8938fb2b..c172fef223ee 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -3983,6 +3983,7 @@ PG* OSD::_make_pg( void OSD::_get_pgs(vector *v, bool clear_too) { v->clear(); + v->reserve(get_num_pgs()); for (auto& s : shards) { std::lock_guard l(s->shard_lock); for (auto& j : s->pg_slots) { @@ -4000,6 +4001,7 @@ void OSD::_get_pgs(vector *v, bool clear_too) void OSD::_get_pgids(vector *v) { v->clear(); + v->reserve(get_num_pgs()); for (auto& s : shards) { std::lock_guard l(s->shard_lock); for (auto& j : s->pg_slots) {