Changeset: f9527ac5535b for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/f9527ac5535b Modified Files: gdk/gdk_bbp.c Branch: Dec2023 Log Message:
Quicker check to see if trim may need to do anything. diffs (53 lines): diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -1721,27 +1721,21 @@ BBPtrim(bool aggressive, bat nbat) int n = 0; int waitctr = 0; bool changed = false; - bool locked = false; unsigned flag = BBPUNLOADING | BBPSYNCING | BBPSAVING; if (!aggressive) flag |= BBPHOT; lng t0 = GDKusec(); for (bat bid = 1; bid < nbat && !GDKexiting(); bid++) { + /* quick check to see if we might possibly have to do + * work (includes free bats) */ + if ((BBP_status(bid) & BBPLOADED) == 0) + continue; /* don't do this during a (sub)commit */ - if (!locked) { - BBPtmlock(); - locked = true; - } + BBPtmlock(); MT_lock_set(&GDKswapLock(bid)); BAT *b = NULL; bool swap = false; - unsigned status = BBP_status(bid); - if (status == 0) { - /* quickly skip free bats */ - MT_lock_unset(&GDKswapLock(bid)); - continue; - } - if (!(status & flag) && + if (!(BBP_status(bid) & flag) && BBP_refs(bid) == 0 && BBP_lrefs(bid) != 0 && (b = BBP_cache(bid)) != NULL) { @@ -1765,15 +1759,12 @@ BBPtrim(bool aggressive, bat nbat) changed = true; } BBPtmunlock(); - locked = false; /* every once in a while, give others a chance */ if (++waitctr >= 1000) { waitctr = 0; MT_sleep_ms(2); } } - if (locked) - BBPtmunlock(); if (n > 0) TRC_INFO(BAT_, "unloaded %d bats in "LLFMT" usec%s\n", n, GDKusec() - t0, aggressive ? " (also hot)" : ""); return changed; _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org