On Tue, 29 Aug 2017, zengran zhang wrote: > hi Sage, > I want to ask when will the bluefs log be compacted? I only sure > it will be compacted when umount the bluefs... > I see the log be compact when rocksdb call Dir.Fsync(), but want to > know how to trigger this... There is a heuristic for when it gets "too big": bool BlueFS::_should_compact_log() { uint64_t current = log_writer->file->fnode.size; uint64_t expected = _estimate_log_size(); float ratio = (float)current / (float)expected; dout(10) << __func__ << " current 0x" << std::hex << current << " expected " << expected << std::dec << " ratio " << ratio << (new_log ? " (async compaction in progress)" : "") << dendl; if (new_log || current < cct->_conf->bluefs_log_compact_min_size || ratio < cct->_conf->bluefs_log_compact_min_ratio) { return false; } return true; } and the estimate for the (compacted) size is uint64_t BlueFS::_estimate_log_size() { int avg_dir_size = 40; // fixme int avg_file_size = 12; uint64_t size = 4096 * 2; size += file_map.size() * (1 + sizeof(bluefs_fnode_t)); for (auto& p : block_all) size += p.num_intervals() * (1 + 1 + sizeof(uint64_t) * 2); size += dir_map.size() + (1 + avg_dir_size); size += file_map.size() * (1 + avg_dir_size + avg_file_size); return ROUND_UP_TO(size, super.block_size); } The default min_ratio is 5... so we compact when it's ~5x bigger than it needs to be. sage -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html