From dbc579778f7a1e0fafc9a237df583e8645d79c8e Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Wed, 21 Dec 2016 17:47:32 +0800 Subject: [PATCH] mds: limit number of pending exports when thash exports is enabled Signed-off-by: Yan, Zheng --- src/mds/MDSRank.cc | 5 ++++- src/mds/Migrator.h | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index 3b66fc9833e..e440d528f9e 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 7ef984441ca..75170f5fe3d 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 { -- 2.39.5