diff options
author | Yehuda Sadeh <yehuda@hq.newdream.net> | 2011-08-09 17:12:23 -0700 |
---|---|---|
committer | Yehuda Sadeh <yehuda@hq.newdream.net> | 2011-08-09 17:12:23 -0700 |
commit | d48bebeed74e584268b81d169e3c8f69d79d7005 (patch) | |
tree | 0ec1c5d3181ba30b4f26b164ec6cefbb8d687198 /src/rados.cc | |
parent | 5e9bdf897715781a9bdad3ac68eab25f0395e889 (diff) | |
download | ceph-d48bebeed74e584268b81d169e3c8f69d79d7005.tar.gz |
librados, rgw: integrate stats categories
Diffstat (limited to 'src/rados.cc')
-rw-r--r-- | src/rados.cc | 51 |
1 files changed, 35 insertions, 16 deletions
diff --git a/src/rados.cc b/src/rados.cc index a5368a76de3..db19c173219 100644 --- a/src/rados.cc +++ b/src/rados.cc @@ -561,6 +561,7 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts, const char *snapname = NULL; snap_t snapid = CEPH_NOSNAP; std::map<std::string, std::string>::const_iterator i; + std::string category; uint64_t min_obj_len = 0; uint64_t max_obj_len = 0; @@ -580,6 +581,10 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts, if (i != opts.end()) { pool_name = i->second.c_str(); } + i = opts.find("category"); + if (i != opts.end()) { + category = i->second; + } i = opts.find("concurrent-ios"); if (i != opts.end()) { concurrent_ios = strtol(i->second.c_str(), NULL, 10); @@ -705,29 +710,41 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts, else if (strcmp(nargs[0], "df") == 0) { // pools list<string> vec; - rados.pool_list(vec); - map<string,pool_stat_t> stats; - rados.get_pool_stats(vec, stats); + if (!pool_name) + rados.pool_list(vec); + else + vec.push_back(pool_name); + + map<string, map<string, pool_stat_t> > stats; + rados.get_pool_stats(vec, category, stats); - printf("%-15s " + printf("%-15s %-15s" "%12s %12s %12s %12s " "%12s %12s %12s %12s %12s\n", "pool name", + "category", "KB", "objects", "clones", "degraded", "unfound", "rd", "rd KB", "wr", "wr KB"); - for (map<string,pool_stat_t>::iterator i = stats.begin(); i != stats.end(); ++i) { - printf("%-15s " - "%12lld %12lld %12lld %12lld" - "%12lld %12lld %12lld %12lld %12lld\n", - i->first.c_str(), - (long long)i->second.num_kb, - (long long)i->second.num_objects, - (long long)i->second.num_object_clones, - (long long)i->second.num_objects_degraded, - (long long)i->second.num_objects_unfound, - (long long)i->second.num_rd, (long long)i->second.num_rd_kb, - (long long)i->second.num_wr, (long long)i->second.num_wr_kb); + for (map<string, librados::stats_map>::iterator c = stats.begin(); c != stats.end(); ++c) { + const string& pool_name = c->first; + stats_map& m = c->second; + for (stats_map::iterator i = m.begin(); i != m.end(); ++i) { + const char *category = (i->first.size() ? i->first.c_str() : "-"); + printf("%-15s " + "%-15s " + "%12lld %12lld %12lld %12lld" + "%12lld %12lld %12lld %12lld %12lld\n", + pool_name.c_str(), + category, + (long long)i->second.num_kb, + (long long)i->second.num_objects, + (long long)i->second.num_object_clones, + (long long)i->second.num_objects_degraded, + (long long)i->second.num_objects_unfound, + (long long)i->second.num_rd, (long long)i->second.num_rd_kb, + (long long)i->second.num_wr, (long long)i->second.num_wr_kb); + } } // total @@ -1170,6 +1187,8 @@ int main(int argc, const char **argv) opts["create"] = "true"; } else if (ceph_argparse_witharg(args, i, &val, "-p", "--pool", (char*)NULL)) { opts["pool"] = val; + } else if (ceph_argparse_witharg(args, i, &val, "--category", (char*)NULL)) { + opts["category"] = val; } else if (ceph_argparse_witharg(args, i, &val, "-t", "--concurrent-ios", (char*)NULL)) { opts["concurrent-ios"] = val; } else if (ceph_argparse_witharg(args, i, &val, "--block-size", (char*)NULL)) { |