From: Yan, Zheng Date: Wed, 21 Dec 2016 09:47:32 +0000 (+0800) Subject: mds: limit number of pending exports when thash exports is enabled X-Git-Tag: v12.0.0~220^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=dbc579778f7a1e0fafc9a237df583e8645d79c8e;p=ceph.git mds: limit number of pending exports when thash exports is enabled Signed-off-by: Yan, Zheng --- diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index 3b66fc9833e1a..e440d528f9e07 100644 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@ -478,6 +478,9 @@ bool MDSRank::_dispatch(Message *m, bool new_msg) mdsmap->get_mds_set(s, MDSMap::STATE_ACTIVE); if (s.size() < 2 || mdcache->get_num_inodes() < 10) break; // need peers for this to work. + if (mdcache->migrator->get_num_exporting() > g_conf->mds_thrash_exports * 5 || + mdcache->migrator->get_export_queue_size() > g_conf->mds_thrash_exports * 10) + break; dout(7) << "mds thrashing exports pass " << (i+1) << "/" << g_conf->mds_thrash_exports << dendl; @@ -508,7 +511,7 @@ bool MDSRank::_dispatch(Message *m, bool new_msg) // hack: thrash fragments for (int i=0; imds_thrash_fragments; i++) { if (!is_active()) break; - if (mdcache->get_num_fragmenting_dirs() > 5) break; + if (mdcache->get_num_fragmenting_dirs() > 5 * g_conf->mds_thrash_fragments) break; dout(7) << "mds thrashing fragments pass " << (i+1) << "/" << g_conf->mds_thrash_fragments << dendl; // pick a random dir inode diff --git a/src/mds/Migrator.h b/src/mds/Migrator.h index 7ef984441ca78..75170f5fe3d11 100644 --- a/src/mds/Migrator.h +++ b/src/mds/Migrator.h @@ -153,6 +153,9 @@ public: void show_importing(); void show_exporting(); + + int get_num_exporting() const { return export_state.size(); } + int get_export_queue_size() const { return export_queue.size(); } // -- status -- int is_exporting(CDir *dir) const {