[lkml]   [1996]   [Nov]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: Please don't beat me up (was Re: Bugs and wishes in memory management area)

In, article <>,
Ingo Molnar <> writes:
> i dont get it [it must be me]. How would you allocate 2 consecutive pages
> in this 5-page pool which has 3 free pages? :
> page 1 -------> free
> page 2 -------> used by the Ethernet driver
> page 3 -------> free
> page 4 -------> used by the SCSI driver
> page 5 -------> free
You don't. But then you don't need to. The problem is that under the
current system, things like

page 0 -------> used by the Ethernet driver
page 1 -------> free
page 2 -------> free
page 3 -------> used by the SCSI driver
page 4 -------> free

can't be used either. Neither can page three of

page 0 -------> used by
page 1 -------> a big
page 2 -------> network buffer
page 3 -------> would be free if kmalloc didn't use power-of-two
page 4 -------> free

So the new system instantly allows you to allocate a lot more pages. That
might be enough, statistically, if you always reserve a certain percentage
of pages for GPF_ATOMIC (or was that GFP_ATOMIC?) allocations.

An interrupt-safe vmalloc wouldn't exactly be a bad idea either, of course.
Idea: Collect a few of the reserved pages into a reserved memory map,
allocate bigger chunks from the front of the map, and create a kernel
daemon to auto-enlarge the thing if it gets too small, and to really free
the chunks which were only marked free by vfree() because it got called
from an interrupt.

Shouldn't be _too_ difficult.
Enough research will tend to confirm your conclusions.
Matthias Urlichs \ noris network GmbH / Xlink-POP Nürnberg
Schleiermacherstraße 12 \ Linux+Internet / EMail:
90491 Nürnberg (Germany) \ Consulting+Programming+Networking+etc'ing
PGP: 1024/4F578875 1B 89 E2 1C 43 EA 80 44 15 D2 29 CF C6 C7 E0 DE
Click <A HREF="">here</A>. 42

 \ /
  Last update: 2005-03-22 13:38    [W:0.132 / U:0.912 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site