iAdd some stats - dedup - deduplicating backup program Err bitreich.org 70 hgit clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ URL:git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ bitreich.org 70 1Log /scm/dedup/log.gph bitreich.org 70 1Files /scm/dedup/files.gph bitreich.org 70 1Refs /scm/dedup/refs.gph bitreich.org 70 1Tags /scm/dedup/tag bitreich.org 70 1README /scm/dedup/file/README.gph bitreich.org 70 1LICENSE /scm/dedup/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 83352fb988f55b3ea3fea53b984b8233f817d08e /scm/dedup/commit/83352fb988f55b3ea3fea53b984b8233f817d08e.gph bitreich.org 70 1parent f2671211f99e5dba4d6e3f26cace0984c4826557 /scm/dedup/commit/f2671211f99e5dba4d6e3f26cace0984c4826557.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Mon, 18 Feb 2019 13:10:35 +0000 Err bitreich.org 70 i Err bitreich.org 70 iAdd some stats Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M dedup.c | 37 ++++++++++++++++++++++++++++--- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 34 insertions(+), 3 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/dedup.c b/dedup.c /scm/dedup/file/dedup.c.gph bitreich.org 70 i@@ -30,11 +30,19 @@ enum { Err bitreich.org 70 i WALK_STOP Err bitreich.org 70 i }; Err bitreich.org 70 i Err bitreich.org 70 i+struct stats { Err bitreich.org 70 i+ uint64_t total_bytes; Err bitreich.org 70 i+ uint64_t actual_bytes; Err bitreich.org 70 i+ uint64_t cache_hits; Err bitreich.org 70 i+ uint64_t cache_misses; Err bitreich.org 70 i+}; Err bitreich.org 70 i+ Err bitreich.org 70 i /* index file header */ Err bitreich.org 70 i struct enthdr { Err bitreich.org 70 i uint64_t flags; Err bitreich.org 70 i uint64_t nents; Err bitreich.org 70 i uint64_t store_size; Err bitreich.org 70 i+ struct stats st; Err bitreich.org 70 i }; Err bitreich.org 70 i Err bitreich.org 70 i /* block descriptor */ Err bitreich.org 70 i@@ -408,6 +416,8 @@ dedup(int fd, char *msg) Err bitreich.org 70 i uint8_t *inp = buf[0]; /* input buf */ Err bitreich.org 70 i uint8_t *outp = buf[1]; /* compressed buf */ Err bitreich.org 70 i Err bitreich.org 70 i+ enthdr.st.total_bytes += n; Err bitreich.org 70 i+ Err bitreich.org 70 i /* Split input buffer in chunks */ Err bitreich.org 70 i while (n > 0) { Err bitreich.org 70 i uint8_t md[MDSIZE]; Err bitreich.org 70 i@@ -417,6 +427,8 @@ dedup(int fd, char *msg) Err bitreich.org 70 i blksize = chunk_blk(inp, n); Err bitreich.org 70 i csize = comp(inp, outp, blksize, comp_size(BLKSIZE)); Err bitreich.org 70 i Err bitreich.org 70 i+ enthdr.st.actual_bytes += csize; Err bitreich.org 70 i+ Err bitreich.org 70 i memcpy(bdescr.md, md, sizeof(bdescr)); Err bitreich.org 70 i bdescr.offset = enthdr.store_size; Err bitreich.org 70 i bdescr.size = csize; Err bitreich.org 70 i@@ -441,8 +453,11 @@ dedup(int fd, char *msg) Err bitreich.org 70 i cent = alloc_cent(); Err bitreich.org 70 i cent->bdescr = bdescr; Err bitreich.org 70 i add_cent(cent); Err bitreich.org 70 i+ Err bitreich.org 70 i+ enthdr.st.cache_misses++; Err bitreich.org 70 i } else { Err bitreich.org 70 i ent->bdescr[ent->nblks++] = bdescr; Err bitreich.org 70 i+ enthdr.st.cache_hits++; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i inp += blksize; Err bitreich.org 70 i@@ -655,9 +670,25 @@ init(void) Err bitreich.org 70 i err(1, "fstat %s", INDEXF); Err bitreich.org 70 i if (sb.st_size != 0) Err bitreich.org 70 i xread(ifd, &enthdr, sizeof(enthdr)); Err bitreich.org 70 i- if (verbose) Err bitreich.org 70 i- fprintf(stderr, "store size: %llu bytes\n", Err bitreich.org 70 i- (unsigned long long)enthdr.store_size); Err bitreich.org 70 i+ if (verbose) { Err bitreich.org 70 i+ float ratio; Err bitreich.org 70 i+ Err bitreich.org 70 i+ fprintf(stderr, "total bytes: %llu bytes\n", Err bitreich.org 70 i+ (unsigned long long)enthdr.st.total_bytes); Err bitreich.org 70 i+ fprintf(stderr, "actual bytes: %llu bytes\n", Err bitreich.org 70 i+ (unsigned long long)enthdr.st.actual_bytes); Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (enthdr.st.total_bytes) { Err bitreich.org 70 i+ ratio = enthdr.st.actual_bytes * 100; Err bitreich.org 70 i+ ratio /= enthdr.st.total_bytes; Err bitreich.org 70 i+ fprintf(stderr, "dedup ratio: %f\n", ratio); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ fprintf(stderr, "cache hits: %llu\n", Err bitreich.org 70 i+ (unsigned long long)enthdr.st.cache_hits); Err bitreich.org 70 i+ fprintf(stderr, "cache misses: %llu\n", Err bitreich.org 70 i+ (unsigned long long)enthdr.st.cache_misses); Err bitreich.org 70 i+ } Err bitreich.org 70 i Err bitreich.org 70 i if (cache_nents() != 0) Err bitreich.org 70 i init_cache(); Err bitreich.org 70 .