fake_clock: false,
fakemessenger_serialize: true,
- debug: 15,
+ debug: 5,
debug_mds_balancer: 1,
debug_mds_log: 1,
mds_bal_replicate_threshold: 500,
mds_bal_unreplicate_threshold: 200,
- mds_bal_interval: 500,
+ mds_bal_interval: 10000,
mds_commit_on_shutdown: true,
size_t size = g_conf.mds_log_read_inc;
if (tail + size > sync_pos) {
size = sync_pos - tail;
+ dout(15) << "wait_for_next_event ugh.. read_pos is " << read_pos << ", tail is " << tail << ", sync_pos only " << sync_pos << ", flush_pos " << flush_pos << ", append_pos " << append_pos << endl;
assert(size > 0); // bleh, wait for sync, etc.
}
reading = false;
}
+ off_t get_read_pos() { return read_pos; }
+ off_t get_append_pos() { return append_pos; }
+
// write (append to end)
off_t append(LogEvent *e); // returns offset it will be written to
void _append_2(off_t off);
if (c) trim_waiters.push_back(c);
// trim!
- while (num_events - trimming.size() > max_events) {
- dout(5) << "trim: num_events " << num_events << " - trimming " << trimming.size() << " > max " << max_events << endl;
+ while (num_events > max_events) {
+ off_t gap = logstream->get_append_pos() - logstream->get_read_pos();
+ dout(5) << "trim: num_events " << num_events << " - trimming " << trimming.size() << " > max " << max_events << " .. gap " << gap << endl;
LogEvent *le = logstream->get_next_event();
if (le) {
+ num_events--;
+
// we just read an event.
if (le->obsolete(mds) == true) {
// obsolete
dout(7) << " obsolete " << le << endl;
delete le;
- num_events--;
logger->inc("obs");
} else {
if (trimming.size() < g_conf.mds_log_max_trimming) {
}
}
- // done!
+ // trimmed!
list<Context*> finished;
finished.splice(finished.begin(), trim_waiters);
dout(7) << " trimmed " << le << endl;
trimming.erase(le);
delete le;
- num_events--;
trim(0);
}
logger = new Logger(name, (LogType*)&mds_logtype);
+ mds_logtype.add_inc("req");
+ mds_logtype.add_inc("reply");
+ mds_logtype.add_inc("fw");
+ mds_logtype.add_inc("cfw");
+
+ mds_logtype.add_set("c");
+ mds_logtype.add_set("cmax");
+ mds_logtype.add_inc("dis");
+ mds_logtype.add_inc("cmiss");
+
+ mds_logtype.add_inc("iex");
+ mds_logtype.add_inc("iim");
+ mds_logtype.add_inc("ex");
+ mds_logtype.add_inc("im");
+ mds_logtype.add_inc("imex");
+ mds_logtype.add_set("nex");
+ mds_logtype.add_set("nim");
+
+
// alloc
idalloc = new IdAllocator(this);