Changeset: f5dca3c801ef for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/f5dca3c801ef Modified Files: gdk/gdk_bbp.c gdk/gdk_logger.c sql/backends/monet5/sql_scenario.c sql/storage/sql_storage.h sql/storage/store.c Branch: Dec2023 Log Message:
Do a bit of locking + some rearrangement of USR1 code. diffs (140 lines): diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -4618,47 +4618,47 @@ BBPtmunlock(void) void BBPprintinfo(void) { - if (MT_lock_try(&GDKtmLock)) { - BBPtmlockFinish(); - size_t tmem = 0, tvm = 0; - size_t pmem = 0, pvm = 0; - int tn = 0; - int pn = 0; - int nh = 0; - - for (bat i = 1, sz = (bat) ATOMIC_GET(&BBPsize); i < sz; i++) { - if (BBP_refs(i) == 0 && BBP_lrefs(i) == 0) - continue; + size_t tmem = 0, tvm = 0; + size_t pmem = 0, pvm = 0; + int tn = 0; + int pn = 0; + int nh = 0; + + BBPtmlock(); + for (bat i = 1, sz = (bat) ATOMIC_GET(&BBPsize); i < sz; i++) { + MT_lock_set(&GDKswapLock(i)); + if (BBP_refs(i) > 0 || BBP_lrefs(i) > 0) { BAT *b = BBP_desc(i); - if (b == NULL) - continue; - ATOMIC_BASE_TYPE status = BBP_status(i); - nh += (status & BBPHOT) != 0; - if (status & BBPPERSISTENT) { - pn++; - pmem += HEAPmemsize(b->theap); - pvm += HEAPvmsize(b->theap); - pmem += HEAPmemsize(b->tvheap); - pvm += HEAPvmsize(b->tvheap); - } else { - tn++; - if (b->theap && - b->theap->parentid == b->batCacheid) { - tmem += HEAPmemsize(b->theap); - tvm += HEAPvmsize(b->theap); + if (b != NULL) { + ATOMIC_BASE_TYPE status = BBP_status(i); + nh += (status & BBPHOT) != 0; + MT_lock_set(&b->theaplock); + if (status & BBPPERSISTENT) { + pn++; + pmem += HEAPmemsize(b->theap); + pvm += HEAPvmsize(b->theap); + pmem += HEAPmemsize(b->tvheap); + pvm += HEAPvmsize(b->tvheap); + } else { + tn++; + if (b->theap && + b->theap->parentid == b->batCacheid) { + tmem += HEAPmemsize(b->theap); + tvm += HEAPvmsize(b->theap); + } + if (b->tvheap && + b->tvheap->parentid == b->batCacheid) { + tmem += HEAPmemsize(b->tvheap); + tvm += HEAPvmsize(b->tvheap); + } } - if (b->tvheap && - b->tvheap->parentid == b->batCacheid) { - tmem += HEAPmemsize(b->tvheap); - tvm += HEAPvmsize(b->tvheap); - } + MT_lock_unset(&b->theaplock); } } - BBPtmunlock(); - printf("%d persistent bats using %zu virtual memory (%zu malloced)\n", pn, pvm, pmem); - printf("%d transient bats using %zu virtual memory (%zu malloced)\n", tn, tvm, tmem); - printf("%d bats are \"hot\" (i.e. currently or recently used)\n", nh); - } else { - printf("BBP currently locked, so no information available\n"); + MT_lock_unset(&GDKswapLock(i)); } + BBPtmunlock(); + printf("%d persistent bats using %zu virtual memory (%zu malloced)\n", pn, pvm, pmem); + printf("%d transient bats using %zu virtual memory (%zu malloced)\n", tn, tvm, tmem); + printf("%d bats are \"hot\" (i.e. currently or recently used)\n", nh); } diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -3377,8 +3377,10 @@ void log_printinfo(logger *lg) { printf("logger %s:\n", lg->fn); + rotation_lock(lg); printf("current log file "ULLFMT", last handled log file "ULLFMT"\n", lg->id, lg->saved_id); + rotation_unlock(lg); printf("current transaction id %d, saved transaction id %d\n", lg->tid, lg->saved_tid); printf("number of flushers: %d, number of open files %d\n", diff --git a/sql/backends/monet5/sql_scenario.c b/sql/backends/monet5/sql_scenario.c --- a/sql/backends/monet5/sql_scenario.c +++ b/sql/backends/monet5/sql_scenario.c @@ -89,7 +89,7 @@ static void SQLprintinfo(void) { /* we need to start printing SQL info here... */ - log_printinfo(((sqlstore *) SQLstore)->logger); + store_printinfo(SQLstore); } str diff --git a/sql/storage/sql_storage.h b/sql/storage/sql_storage.h --- a/sql/storage/sql_storage.h +++ b/sql/storage/sql_storage.h @@ -564,4 +564,6 @@ extern BAT *FORdecompress_(BAT *o, lng m extern int FORprepare4append(BAT **noffsets, BAT *vals, lng minval, int tt); extern int FORprepare4append_vals(void **noffsets, void *vals, BUN cnt, lng minval, int vtype, int ft); +extern void store_printinfo(sqlstore *store); + #endif /*SQL_STORAGE_H */ diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -7387,3 +7387,11 @@ sql_trans_convert_partitions(sql_trans * } return 0; } + +void +store_printinfo(sqlstore *store) +{ + MT_lock_set(&store->commit); + log_printinfo(store->logger); + MT_lock_unset(&store->commit); +} _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org