MCPcopy Create free account
hub / github.com/F-Stack/f-stack / update_gap_stats

Function update_gap_stats

freebsd/kern/subr_blist.c:449–490  ·  view source on GitHub ↗

* update_gap_stats() - update stats on gap sizes */

Source from the content-addressed store, hash-verified

447 * update_gap_stats() - update stats on gap sizes
448 */
449static void
450update_gap_stats(struct gap_stats *stats, daddr_t posn)
451{
452 daddr_t size;
453 int hi, lo, mid;
454
455 if (!gap_stats_counting(stats)) {
456 stats->start = posn;
457 return;
458 }
459 size = posn - stats->start;
460 stats->start = SWAPBLK_NONE;
461 if (size > stats->max)
462 stats->max = size;
463
464 /*
465 * Find the fibonacci range that contains size,
466 * expecting to find it in an early range.
467 */
468 lo = 0;
469 hi = 1;
470 while (hi < nitems(fib) && fib[hi] <= size) {
471 lo = hi;
472 hi *= 2;
473 }
474 if (hi >= nitems(fib))
475 hi = nitems(fib);
476 while (lo + 1 != hi) {
477 mid = (lo + hi) >> 1;
478 if (fib[mid] <= size)
479 lo = mid;
480 else
481 hi = mid;
482 }
483 stats->histo[lo]++;
484 if (lo > stats->max_bucket)
485 stats->max_bucket = lo;
486 stats->err += size - stats->avg;
487 stats->num++;
488 stats->avg += stats->err / stats->num;
489 stats->err %= stats->num;
490}
491
492/*
493 * dump_gap_stats() - print stats on gap sizes

Callers 1

blist_statsFunction · 0.85

Calls 1

gap_stats_countingFunction · 0.85

Tested by

no test coverage detected