Re: [patch 1/2] x86_64 page fault NMI-safe
From: Avi Kivity
Date: Sun Aug 15 2010 - 13:10:38 EST
On 08/15/2010 07:44 PM, Mathieu Desnoyers wrote:
* Avi Kivity (avi@xxxxxxxxxx) wrote:
On 08/11/2010 05:34 PM, Steven Rostedt wrote:
So, I want to allocate a 10Meg buffer. I need to make sure the kernel
has 10megs of memory available. If the memory is quite fragmented, then
too bad, I lose out.
With memory compaction, the cpu churns for a while, then you have your
buffer. Of course there's still no guarantee, just a significantly
higher probability of success.
The bigger the buffers, the lower the probabilities of success are. My users
often allocate buffers as large as a few GB per cpu. Relying on compaction does
not seem like a viable solution in this case.
Wow. Even if you could compact that much memory, it would take quite a
bit of time.
Oh wait, I could also use vmalloc. But then again, now I'm blasting
valuable TLB entries for a tracing utility, thus making the tracer have
a even bigger impact on the entire system.
Most trace entries will occupy much less than a page, and are accessed
sequentially, so I don't think this will have a large impact.
You seem to underestimate the frequency at which trace events can be generated.
E.g., by the time you run the scheduler once (which we can consider a very hot
kernel path), some tracing modes will generate thousands of events, which will
touch a very significant amount of TLB entries.
Let's say a trace entry occupies 40 bytes and a TLB miss costs 200
cycles on average. So we have 100 entries per page costing 200 cycles;
amortized each entry costs 2 cycles.
There's an additional cost caused by the need to re-fill the TLB later,
but you incur that anyway if the scheduler caused a context switch.
Of course, my assumptions may be completely off (likely larger entries
but smaller miss costs). Has a vmalloc based implementation been
tested? It seems so much easier than the other alternatives.
--
error compiling committee.c: too many arguments to function
--
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/