From: sage Date: Wed, 15 Jun 2005 00:11:01 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: v0.1~2062 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=dbab170b714f6258bbc57d3d8b0e3863ef758c73;p=ceph.git *** empty log message *** git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@319 29311d96-e01e-0410-9327-a35deaab8ce9 --- diff --git a/ceph/include/lru.h b/ceph/include/lru.h index 3a387369d8c..343f36e7511 100644 --- a/ceph/include/lru.h +++ b/ceph/include/lru.h @@ -13,7 +13,7 @@ using namespace std; class LRUObject { private: LRUObject *lru_next, *lru_prev; - bool lru_expireable; + bool lru_pinned; class LRU *lru; class LRUList *lru_list; @@ -21,14 +21,14 @@ class LRUObject { LRUObject() { lru_next = lru_prev = NULL; lru_list = 0; - lru_expireable = true; + lru_pinned = false; lru = 0; } // pin/unpin item in cache void lru_pin(); void lru_unpin(); - bool lru_is_expireable() { return lru_expireable; } + bool lru_is_expireable() { return !lru_pinned; } friend class LRU; friend class LRUList; @@ -121,15 +121,13 @@ class LRU { lru_max = max; } - __uint32_t lru_get_size() { - return lru_num; - } - __uint32_t lru_get_max() { - return lru_max; - } - __uint32_t lru_get_num_pinned() { - return lru_num_pinned; - } + __uint32_t lru_get_size() { return lru_num; } + __uint32_t lru_get_top() { return lru_top.get_length(); } + __uint32_t lru_get_bot() { return lru_bot.get_length(); } + __uint32_t lru_get_pintail() { return lru_pintail.get_length(); } + __uint32_t lru_get_max() { return lru_max; } + __uint32_t lru_get_num_pinned() { return lru_num_pinned; } + void lru_set_max(__uint32_t m) { lru_max = m; } void lru_set_midpoint(float f) { lru_midpoint = f; } @@ -142,7 +140,7 @@ class LRU { o->lru = this; lru_top.insert_head( o ); lru_num++; - lru_num_pinned += !o->lru_expireable; + if (o->lru_pinned) lru_num_pinned++; lru_adjust(); } @@ -154,7 +152,7 @@ class LRU { o->lru = this; lru_bot.insert_head(o); lru_num++; - lru_num_pinned += !o->lru_expireable; + if (o->lru_pinned) lru_num_pinned++; } // insert at bottom of lru @@ -163,20 +161,22 @@ class LRU { o->lru = this; lru_bot.insert_tail(o); lru_num++; - lru_num_pinned += !o->lru_expireable; + if (o->lru_pinned) lru_num_pinned++; } + /* // insert at bottom of lru void lru_insert_pintail(LRUObject *o) { assert(!o->lru); o->lru = this; - assert(!o->lru_is_expireable()); + assert(o->lru_pinned); lru_pintail.insert_head(o); lru_num++; - lru_num_pinned += !o->lru_expireable; + lru_num_pinned += o->lru_pinned; } + */ @@ -186,7 +186,7 @@ class LRU { if (!lru_max) return; __uint32_t topwant = (__uint32_t)(lru_midpoint * (double)lru_max); - while (0 && lru_top.get_length() > 0 && + while (lru_top.get_length() > 0 && lru_top.get_length() > topwant) { // remove from tail of top, stick at head of bot // FIXME: this could be way more efficient by moving a whole chain of items. @@ -216,7 +216,7 @@ class LRU { assert(0); lru_num--; - lru_num_pinned -= !o->lru_expireable; + if (o->lru_pinned) lru_num_pinned--; o->lru = 0; return o; } @@ -253,20 +253,22 @@ class LRU { while (lru_bot.get_length()) { p = lru_bot.get_tail(); - if (p->lru_expireable) + if (!p->lru_pinned) return lru_remove(p); // yay. // move to pintail + lru_bot.remove(p); lru_pintail.insert_head(p); } // ok, try head then while (lru_top.get_length()) { p = lru_top.get_tail(); - if (p->lru_expireable) + if (!p->lru_pinned) return lru_remove( p ); // move to pintail + lru_top.remove(p); lru_pintail.insert_head(p); } @@ -284,15 +286,15 @@ class LRU { inline void LRUObject::lru_pin() { - lru_expireable = false; + lru_pinned = true; if (lru) lru->lru_num_pinned++; } inline void LRUObject::lru_unpin() { - lru_expireable = true; + lru_pinned = false; if (lru) { lru->lru_num_pinned--; - // move out of tail? + // move from pintail -> bot if (lru_list == &lru->lru_pintail) { lru->lru_pintail.remove(this); lru->lru_bot.insert_tail(this); diff --git a/ceph/mds/MDBalancer.cc b/ceph/mds/MDBalancer.cc index 97fceda99d0..dbeb42639eb 100644 --- a/ceph/mds/MDBalancer.cc +++ b/ceph/mds/MDBalancer.cc @@ -529,7 +529,8 @@ void MDBalancer::show_imports(bool external) { int db = 7; //debug level - if (mds->mdcache->imports.size() == 0) { + int num = mds->mdcache->imports.size(); + if (num == 0) { dout(db) << "no imports/exports" << endl; return; } diff --git a/ceph/mds/MDCache.cc b/ceph/mds/MDCache.cc index 3b4ef8339f2..1a226c0b7e0 100644 --- a/ceph/mds/MDCache.cc +++ b/ceph/mds/MDCache.cc @@ -505,6 +505,8 @@ bool MDCache::trim(__int32_t max) { export_empty_import(diri->dir); } + + mds->logger->inc("cex"); } /* hack @@ -1491,7 +1493,9 @@ void MDCache::request_cleanup(Message *req) // log some stats ***** mds->logger->set("c", lru.lru_get_size()); mds->logger->set("cpin", lru.lru_get_num_pinned()); - mds->logger->set("cmax", lru.lru_get_max()); + mds->logger->set("ctop", lru.lru_get_top()); + mds->logger->set("cbot", lru.lru_get_bot()); + mds->logger->set("cptail", lru.lru_get_pintail()); if (g_conf.log_pins) { // pin diff --git a/ceph/mds/MDS.cc b/ceph/mds/MDS.cc index 5a06c6559e3..8192a2314e8 100644 --- a/ceph/mds/MDS.cc +++ b/ceph/mds/MDS.cc @@ -130,9 +130,13 @@ MDS::MDS(MDCluster *mdc, int whoami, Messenger *m) { mds_logtype.add_inc("fw"); mds_logtype.add_inc("cfw"); + mds_logtype.add_set("cmax"); mds_logtype.add_set("c"); + mds_logtype.add_set("ctop"); + mds_logtype.add_set("cbot"); + mds_logtype.add_set("cptail"); mds_logtype.add_set("cpin"); - mds_logtype.add_set("cmax"); + mds_logtype.add_inc("cex"); mds_logtype.add_inc("dis"); mds_logtype.add_inc("cmiss"); @@ -144,6 +148,9 @@ MDS::MDS(MDCluster *mdc, int whoami, Messenger *m) { mds_logtype.add_set("nex"); mds_logtype.add_set("nim"); + mds->logger->set("cmax", lru.lru_get_max()); + + char n[80]; sprintf(n, "mds%d.cache", whoami); logger2 = new Logger(n, (LogType*)&mds_cache_logtype); @@ -168,6 +175,7 @@ MDS::~MDS() { if (messenger) { delete messenger; messenger = NULL; } if (logger) { delete logger; logger = 0; } + if (logger2) { delete logger2; logger2 = 0; } }