FreeBSD cache memory allocation
Heiko Wundram (Beenic)
wundram at beenic.net
Wed Nov 14 08:21:19 PST 2007
Am Mittwoch, 14. November 2007 17:04:37 schrieb icantthinkofone:
> Ivan Voras wrote:
> > icantthinkofone wrote:
> >> Someone I can't stand said this about FreeBSD. Though I know C, I don't
> >> know anything about it and would love to respond.
> >> [QUOTE]The kernel is really lacking some features. They need a method to
> >> set precise type of memory cache but BSD doesn't provide way to specify
> >> memory cache.
> >> For that reason MS has the beautiful
> >> MmAllocateContigousMemorySpecifyCache()[/QUOTE]
> > Well, I know there's contigmalloc(9) in FreeBSD but you will get a
> > better answer if you ask this question on freebsd-hackers at .
> That's what I thought but not sure if they were equivalent.
> I'm not signed up over there but I will now. Thanks.
That's not entirely true. MmAllocateContiguousMemorySpecifyCache does
something that's currently not (easily) possible with FreeBSD, namely set up
an MTRR entry (i.e. a specific caching state) specifically for the portion of
contiguous memory being allocated (normally, the driver wants to set the
memory to uncached if using this call).
This is something that the NVIDIA driver development guys have wanted to have
for a long time (for performance reasons) in the FreeBSD kernel, and there's
someone developing a patch to implement this (AFAICT from reading some
websites), but it doesn't seem like it's finished so far.
Read up on the NVIDIA requirements to develop an accelerated graphics driver
on AMD64 to get more details on this (there's a "workaround" on i386, but
that depends on the specific system's pre-setup MTRR records from the BIOS;
this one of the reasons there's an accelerated graphics driver for i386 and
not for AMD64).
Product & Application Development
More information about the freebsd-questions