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

Reply via email to