Thread (12 messages) 12 messages, 3 authors, 2005-08-29

Re: [RFC][PATCH 2/6] CART Implementation

From: Peter Zijlstra <hidden>
Date: 2005-08-29 04:15:07

On Sun, 2005-08-28 at 23:02 -0400, Rik van Riel wrote:
On Sat, 27 Aug 2005, a.p.zijlstra@chello.nl wrote:
quoted
+static void bucket_stats(struct nr_bucket * nr_bucket, int * b1, int * b2)
+{
+	unsigned int i, b[2] = {0, 0};
+	for (i = 0; i < 2; ++i) {
+		unsigned int j = nr_bucket->hand[i];
+		do
+		{
+			u32 *slot = &nr_bucket->slot[j];
+			if (!!(GET_FLAGS(*slot) & NR_list) != !!i)
+				break;
+
+			j = GET_INDEX(*slot);
+			++b[i];
+		} while (j != nr_bucket->hand[i]);
Does this properly skip empty slots ?
There are no empty slots. This thing always has B1_j + B2_j = NR_SLOTS.
I couldn't manage keeping track of two lists and empty slots. It doesn't
really matter though. I just have to start out with |B1| = 0 and |B2| =
c. I fill B2_j with zero cookies, so getting a hit there is very
unlikely, that way they just get overwritten due to old age and all is
well.
Remember that a page that got paged in leaves a zeroed
out slot in the bucket...
Yeah, I was playing aroung with that. I'll change that back because it
does indeed generate a problem elsewhere.

-- 
Peter Zijlstra [off-list ref]

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help