From 2f9d52f76e95506233e62966aa9ce05f3ecbfb3d Mon Sep 17 00:00:00 2001 From: Alex Zhuravlev Date: Fri, 28 Jul 2023 10:18:04 +0300 Subject: [PATCH] EX-7989 utils: lpurge to dump empty slots empty time slots may still have detailed stats explaining slot's emptiness: how many objects were scanned, how many had no pfid, no mirror, etc. Test-Parameters: trivial testlist=hot-pools Signed-off-by: Alex Zhuravlev Change-Id: I7e8f594d8615a5e964c01ec1baf2a2b5d3e9cce3 Reviewed-on: https://review.whamcloud.com/c/ex/lustre-release/+/51796 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Colin Faber Reviewed-by: Alexandre Ioffe --- lipe/src/lpurge.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lipe/src/lpurge.c b/lipe/src/lpurge.c index 2a4e823..cd86269 100644 --- a/lipe/src/lpurge.c +++ b/lipe/src/lpurge.c @@ -88,6 +88,7 @@ struct lpurge_slot { time_t ls_max_utime; unsigned long ls_age; unsigned long ls_found; + unsigned long ls_scanned; unsigned long ls_used_kb; unsigned long ls_stored; /* FIDs stored */ unsigned int ls_scan; @@ -216,6 +217,7 @@ static void lpurge_init_result(void) lpurge_hist[i].ls_min_utime = ~0UL; lpurge_hist[i].ls_max_utime = 0; lpurge_hist[i].ls_found = 0; + lpurge_hist[i].ls_scanned = 0; lpurge_hist[i].ls_used_kb = 0; lpurge_hist[i].ls_stored = 0; LIPE_INIT_LIST_HEAD(&lpurge_hist[i].ls_obj_list); @@ -231,6 +233,7 @@ static void lpurge_reset_result(void) for (i = 0; i < LPURGE_HIST_MAX; i++) { lpurge_hist[i].ls_found = 0; + lpurge_hist[i].ls_scanned = 0; lpurge_hist[i].ls_used_kb = 0; lpurge_hist[i].ls_stored = 0; lpurge_hist[i].ls_scan = 1; @@ -548,6 +551,7 @@ static void lpurge_reclaim_slot(unsigned int index) &ls_1->ls_obj_list); ls_1->ls_stored = ls_2->ls_stored; ls_1->ls_found = ls_2->ls_found; + ls_1->ls_scanned = ls_2->ls_scanned; ls_1->ls_used_kb = ls_2->ls_used_kb; ls_1->ls_age = ls_2->ls_age; ls_1->ls_max_utime = ls_2->ls_max_utime; @@ -564,6 +568,7 @@ static void lpurge_reclaim_slot(unsigned int index) pthread_mutex_lock(&lpurge_hist[index].ls_mutex); lpurge_hist[index].ls_stored = 0; lpurge_hist[index].ls_found = 0; + lpurge_hist[index].ls_scanned = 0; lpurge_hist[index].ls_used_kb = 0; lpurge_hist[index].ls_min_utime = ~0UL; lpurge_hist[index].ls_max_utime = 0; @@ -728,6 +733,7 @@ static int lpurge_lipe_callback(struct lipe_instance *instance, pthread_mutex_lock(&ls->ls_mutex); + ls->ls_scanned++; if (is_mdt) rc = lpurge_check_mdt_object(ls, attrs); else @@ -1777,17 +1783,17 @@ static void lpurge_usr1_handle(int sig) total_kb); #define HIST_FMT \ - " hist%u: { age: %lu, found: %lu, space: %lu, stored: %lu, nomirror_cnt: %lu, nomirror_used_kb: %lu, nopfid_cnt: %lu, nopfid_used_kb: %lu, notfirst_cnt: %lu, notfirst_used_kb: %lu }\n" + " hist%u: { age: %lu, scanned: %lu, found: %lu, space: %lu, stored: %lu, nomirror_cnt: %lu, nomirror_used_kb: %lu, nopfid_cnt: %lu, nopfid_used_kb: %lu, notfirst_cnt: %lu, notfirst_used_kb: %lu }\n" fprintf(f, "hlists:\n"); for (i = LPURGE_HIST_MAX - 1; i >= 0; i--) { struct lpurge_slot *ls = lpurge_hist + i; - if (ls->ls_found == 0) + if (ls->ls_scanned == 0) continue; - fprintf(f, HIST_FMT, i, ls->ls_age, ls->ls_found, - ls->ls_used_kb, ls->ls_stored, + fprintf(f, HIST_FMT, i, ls->ls_age, ls->ls_scanned, + ls->ls_found, ls->ls_used_kb, ls->ls_stored, ls->ls_nomirror_objs, ls->ls_nomirror_used_kb, ls->ls_nopfid_objs, ls->ls_nopfid_used_kb, ls->ls_notfirst_objs, ls->ls_notfirst_used_kb); -- 1.8.3.1