On Monday 24 January 2005 11:02, Henrik Nordstrom wrote:
> On Sun, 23 Jan 2005, Rob Landley wrote:
> > The client kernel's highmem suport is unlikely to do much, I'd think.
> > Not unless it's unmapping and remapping multiple mmaps.
It does this, indeed and sadly (that's why it's so slow).
> > (There's large 
> > file support, but trying to mmap a 5 gig chunk out of a large file can't
> > work: what would that mean?  How could you generate an offset into the
> > last meg? What would the pointer _be_?)

> off_t is 64 bits in 64-bit file pointer mode, so there is no problem to
> mmap portions of an multi-gigabyte "ram" file within a 32-bit address
> space.

Offset can sure be 64-bit wide, but he refers to mmaping a 5G-wide chunk of 
memory, and to a "pointer offset"... you cannot mmap more than 4G in memory 
even with 4G/4G. Yes, you can do it like he says (i.e. mmapping back and 
forth).

> > The parent kernel's highmem support still doesn't provide more than 4
> > gigabytes per application, and the UML kernel is one application.

> Yes, but with HIGHMEM UML in theory can provide as as much ram to each
> single process running below it as it can for a single process. So yes,
> each process in the UML would still be limited, but the total RAM usage of
> UML would be practically unlimited. And in addition a very good
> environment for debugging HIGHMEM in general as you could set up things to
> only provide a very limited directly addressible address space with the
> rest remapped by HIGHMEM.

This point holds actually.

I think however that Henrik will agree that this is not yet implemented, and 
(maybe) nor in sight... about this, I would add somebody suggested 
using /proc/mm to this aim: since a single address space is not enough to map 
all the 64 Giga on a PAE system, he suggested using multiple address spaces 
and switching between them to use memory as cache for MySQL (IIRC)... this 
was also posted on this list.

Also, since x86_64 systems are so cheap (I'm writing from one of them), x86_64 
UML is going to be a reality soon, and we're in short of manpower, the 
logical conclusion is that this is unlikely to be implemented... unless it's 
very simple; do you think that making sure the offset inside /tmp/vm_file-*** 
is 64-bit wide would be enough?

> With HIGHMEM the host process size limitations has an direct effect on the
> maximum process size possible within the UML, but not on the RAM size of
> UML. In addition running an UML with HIGHMEM support does not depend on
> the host HIGHMEM support, but performance will obviously suffer if UML
> needs to swap..

> > (And that's with the 4 gig kernel/4 gig user patches from...  Ingo
> > Molnar, I think.)
I confirm
> > Highmem lets the system as a whole use PAE (up to 64 
> > gigs physical memory), but the kernel is basically doing something very
> > like the old DOS expanded memory behind the scenes, swapping around page
> > tables so each process sees a different set of physical memory. pages
> > (The overhead isn't quite so bad since it's doing that anyway as part of
> > protecting process's memory from each other...)

> Exctaly, and UML can do something very similar with the help of mmap().
Which is too slow, though...
-- 
Paolo Giarrusso, aka Blaisorblade
Linux registered user n. 292729
http://www.user-mode-linux.org/~blaisorblade


-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

Reply via email to