Re: Active Memory Defragmentation: Our implementation & problems

From: Timothy Miller
Date: Wed Feb 04 2004 - 14:34:41 EST




Richard B. Johnson wrote:

If this is an Intel x86 machine, it is impossible for pages
to get fragmented in the first place. The hardware allows any
page, from anywhere in memory, to be concatenated into linear
virtual address space. Even the kernel address space is virtual.
The only time you need physically-adjacent pages is if you
are doing DMA that is more than a page-length at a time. The
kernel keeps a bunch of those pages around for just that
purpose.

So, if you are making a "memory defragmenter", it is a CPU time-sink.
That's all.

Would memory fragmentation have any appreciable impact on L2 cache line collisions?

Would defragmenting it help?

In the case of the Opteron, there is a 1M cache that is (I forget) N-way set associative, and it's physically indexed. If a bunch of pages were located such that there were a disproportionately large number of lines which hit the same tag, you could be thrashing the cache.

There are two ways to deal with this: (1) intelligently locates pages in physical memory; (2) hope that natural entropy keeps things random enough that it doesn't matter.


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/