// drop mutex for duration of call
client_lock.Unlock();
timepair_t start = g_clock.gettimepair();
+
+
+ bool nojournal = false;
+ if (req->get_op() == MDS_OP_STAT ||
+ req->get_op() == MDS_OP_LSTAT ||
+ req->get_op() == MDS_OP_READDIR ||
+ req->get_op() == MDS_OP_OPEN || // not quite true! a lie actually!
+ req->get_op() == MDS_OP_CLOSE)
+ nojournal = true;
+
MClientReply *reply = (MClientReply*)messenger->sendrecv(req,
MSG_ADDR_MDS(mds),
MDS_PORT_SERVER);
+
+
if (client_logger) {
timepair_t end = g_clock.gettimepair();
timepair_t lat = end - start;
client_logger->finc("lsum",timepair_to_double(lat));
client_logger->inc("lnum");
+
+ if (nojournal) {
+ client_logger->finc("lrsum",timepair_to_double(lat));
+ client_logger->inc("lrnum");
+ } else {
+ client_logger->finc("lwsum",timepair_to_double(lat));
+ client_logger->inc("lwnum");
+ }
}
+
client_lock.Lock();
return reply;
}
client->mkdir(prefix.c_str(), 0755);
for (int i=0; i<iarg1; i++) {
+ timepair_t start = g_clock.gettimepair();
+
if (time_to_stop()) break;
play_trace(t, prefix);
if (time_to_stop()) break;
clean_dir(prefix);
+
+ timepair_t end = g_clock.gettimepair();
+ timepair_t lat = end-start;
+
+ dout(1) << " trace loop " << i << " in " << timepair_to_double(lat) << " seconds" << endl;
+ if (client_logger
+ && i > 0
+ && i < iarg1-1
+ ) {
+ client_logger->finc("trsum", timepair_to_double(lat));
+ client_logger->inc("trnum");
+ }
}
}
break;
play_trace(t, prefix);
if (time_to_stop()) break;
clean_dir(prefix);
+ cerr << "LOOP" << endl;
}
}
break;
dout(4) << "play trace" << endl;
t.start();
+ timepair_t start = g_clock.gettimepair();
+
const char *p = prefix.c_str();
map<__int64_t, __int64_t> open_files;
fi != open_files.end();
fi++) {
dout(1) << "leftover close " << fi->second << endl;
- client->close(fi->second);
+ if (fi->second > 0) client->close(fi->second);
}
+
}
(long long)100000000LL * (mds->get_nodeid()+2) - 1);
//free[ID_INO].dump();
- free[ID_FH].map_insert(1000000LL * (mds->get_nodeid()+1),
- 1000000LL * (mds->get_nodeid()+2) - 1);
+ free[ID_FH].map_insert(10000000LL * (mds->get_nodeid()+1),
+ 10000000LL * (mds->get_nodeid()+2) - 1);
//free[ID_FH].dump();
opened = true;
if (!dir->is_rep() &&
dir_pop >= g_conf.mds_bal_replicate_threshold) {
// replicate
- dout(5) << "replicating dir " << *dir << " pop " << dir_pop << endl;
+ dout(1) << "replicating dir " << *dir << " pop " << dir_pop << endl;
dir->dir_rep = CDIR_REP_ALL;
mds->mdcache->send_dir_updates(dir, true);
if (dir->is_rep() &&
dir_pop < g_conf.mds_bal_unreplicate_threshold) {
// unreplicate
- dout(5) << "unreplicating dir " << *dir << " pop " << dir_pop << endl;
+ dout(1) << "unreplicating dir " << *dir << " pop " << dir_pop << endl;
dir->dir_rep = CDIR_REP_NONE;
mds->mdcache->send_dir_updates(dir);
my $n = 0;
for my $k (sort {$a <=> $b} keys %sum) {
if ($avgrows) {
- print join("\t",$k, map int, map { $sum{$k}->{$col{$_}}/$tcount{$k} } @c ) . "\n";
+ print join("\t",$k, #map int,
+ map { $sum{$k}->{$col{$_}}/$tcount{$k} } @c ) . "\n";
} else {
print join("\t",$k, map { $sum{$k}->{$col{$_}} } @c ) . "\n";
}
my $files = $tcount{$starttime};
print "\n";
-print join("\t", 'minval', map { $min{$col{$_}} } @c ) . "\n";
-print join("\t", 'maxval', map { $max{$col{$_}} } @c ) . "\n";
-print join("\t", 'rows', map { $rows } @c) . "\n";
-print join("\t", 'files', map { $files } @c) . "\n";
-print join("\t", 'avgval', map int, map { $_ / ($rows*$files) } map { $avg{$col{$_}} } @c ) . "\n";
-print join("\t", 'avgsum', map int, map { $_ / $rows } map { $avg{$col{$_}} } @c ) . "\n";
+print join("\t", '#minval', map { $min{$col{$_}} } @c ) . "\n";
+print join("\t", '#maxval', map { $max{$col{$_}} } @c ) . "\n";
+print join("\t", '#rows', map { $rows } @c) . "\n";
+print join("\t", '#files', map { $files } @c) . "\n";
+print join("\t", '#avgval', #map int,
+ map { $_ / ($rows*$files) } map { $avg{$col{$_}} } @c ) . "\n";
+print join("\t", '#avgsum', #map int,
+ map { $_ / $rows } map { $avg{$col{$_}} } @c ) . "\n";