[Zodb-checkins] CVS: ZODB3/ZEO - simul.py:1.12.8.2.18.2
Jeremy Hylton
cvs-admin at zope.org
Wed Nov 26 16:44:41 EST 2003
Update of /cvs-repository/ZODB3/ZEO
In directory cvs.zope.org:/tmp/cvs-serv9588
Modified Files:
Tag: Zope-2_6-branch
simul.py
Log Message:
Assume that the 2Q cache is persistent. Don't clear it on restart.
=== ZODB3/ZEO/simul.py 1.12.8.2.18.1 => 1.12.8.2.18.2 ===
--- ZODB3/ZEO/simul.py:1.12.8.2.18.1 Wed Nov 26 15:19:01 2003
+++ ZODB3/ZEO/simul.py Wed Nov 26 16:44:39 2003
@@ -449,6 +449,20 @@
self.total_evicts = 0
self.a1out_limit = outlen
+ # An LRU queue of hot objects
+ self.am = Node2Q(None, None, am)
+ self.am.linkbefore(self.am)
+ # A FIFO queue of recently referenced objects. It's purpose
+ # is to absorb references to objects that are accessed a few
+ # times in short order, then forgotten about.
+ self.a1in = Node2Q(None, None, a1in)
+ self.a1in.linkbefore(self.a1in)
+ # A FIFO queue of recently reference oids.
+ # This queue only stores the oids, not any data. If we get a
+ # hit in this queue, promote the object to am.
+ self.a1out = Node2Q(None, None, a1out)
+ self.a1out.linkbefore(self.a1out)
+
def makespace(self, size):
for space in 0, size:
if self.enoughspace(size):
@@ -506,12 +520,14 @@
self.am_size = self.am_size - node.size + size
node.size = size
if self.am_size > self.am_limit:
- print "write exceeded limit", self.am_size - self.am_limit
+ pass
+## print "write exceeded limit", self.am_size - self.am_limit
else:
self.a1in_size = self.a1in_size - node.size + size
node.size = size
if self.a1in_size > self.a1in_limit:
- print "write exceeded limit", self.a1in_size - self.a1in_limit
+ pass
+## print "write exceeded limit", self.a1in_size - self.a1in_limit
def load(self, oid, size):
node = self.cache.get(oid)
@@ -534,6 +550,7 @@
node = Node2Q(oid, size, a1in)
node.linkbefore(self.a1in)
self.cache[oid] = node
+ self.a1in_size += node.size
def inval(self, oid):
# The original 2Q algorithm didn't have to deal with
@@ -564,20 +581,6 @@
self.am_size = 0
self.a1in_size = 0
self.a1out_size = 0
-
- # An LRU queue of hot objects
- self.am = Node2Q(None, None, am)
- self.am.linkbefore(self.am)
- # A FIFO queue of recently referenced objects. It's purpose
- # is to absorb references to objects that are accessed a few
- # times in short order, then forgotten about.
- self.a1in = Node2Q(None, None, a1in)
- self.a1in.linkbefore(self.a1in)
- # A FIFO queue of recently reference oids.
- # This queue only stores the oids, not any data. If we get a
- # hit in this queue, promote the object to am.
- self.a1out = Node2Q(None, None, a1out)
- self.a1out.linkbefore(self.a1out)
class Node2Q(Node):
More information about the Zodb-checkins
mailing list