X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=cleaner%2Fcleaner;h=b018d0ddccf3f0c3bda24e20a5ce77a558e8b874;hb=2f883084c4393dc7b730df2e778b9f2fc14f70e0;hp=445bdeb4cd59e5e246e9824d35de272fa323a285;hpb=885814beba8d6191c042d56e7734bda0e680ac6a;p=bluesky.git diff --git a/cleaner/cleaner b/cleaner/cleaner index 445bdeb..b018d0d 100755 --- a/cleaner/cleaner +++ b/cleaner/cleaner @@ -49,6 +49,9 @@ class FileBackend: fp.write(data) fp.close() + def delete(self, filename): + os.unlink(os.path.join(self.path, filename)) + def loc_to_name(self, location): return "log-%08d-%08d" % (location) @@ -268,8 +271,10 @@ class InodeMap: print print "Segment utilizations:" for (s, u) in sorted(util.segments.items()): - #if u[1] > 0: print "%s: %s %s" % (s, u, float(u[1]) / u[0]) + if u[1] == 0: + print "Deleting..." + backend.delete(s) self.inodes = inodes self.util = util @@ -341,7 +346,7 @@ def run_cleaner(backend, inode_map, log): # Determine which segments are poorly utilized and should be cleaned. We # need better heuristics here. for (s, u) in sorted(inode_map.util.segments.items()): - if float(u[1]) / u[0] < 0.95 and u[1] > 0: + if float(u[1]) / u[0] < 0.6 and u[1] > 0: print "Should clean segment", s loc = backend.name_to_loc(s) if s: inode_map.obsolete_segments.add(loc) @@ -381,7 +386,7 @@ if __name__ == '__main__': imap.build(backend, chkpt) print chkpt - log_dir = LogDirectory(backend, 1) + log_dir = LogDirectory(backend, 0) run_cleaner(backend, imap, log_dir) imap.write(backend, log_dir) log_dir.close_all()