diff --git a/pytools/log.py b/pytools/log.py
index 6f484d7969da8a37075814d93f689d23a234cb9e..d45c6ca1d0c0c5b65013e80a6f3dc6c2200b6301 100644
--- a/pytools/log.py
+++ b/pytools/log.py
@@ -253,6 +253,8 @@ class LogManager(object):
 
         self.constants = {}
 
+        self.last_save_time = time()
+
         # self-timing
         self.start_time = time()
         self.t_log = 0
@@ -483,6 +485,9 @@ class LogManager(object):
                     insert_datapoint(gd.quantity.name, q_value)
         self.tick_count += 1
 
+        if start_time > self.last_save_time + 15:
+            self.save()
+
         end_time = time()
 
         # print watches
@@ -496,6 +501,8 @@ class LogManager(object):
             # then, to disk
             self.db_conn.commit()
 
+        self.last_save_time = time()
+
     def add_quantity(self, quantity, interval=1):
         """Add an object derived from L{LogQuantity} to this manager."""
         def add_internal(name, unit, description, def_agg):