2002-02-28 19:58:15

by Hua Zhong (hzhong)

[permalink] [raw]
Subject: question about running program from a RAM disk

Hi all:

If I run a program from a RAM disk, will Linux be able to run it directly
from
the disk itself (as the image is already in memory), or do it the same way
as running from a disk?

Thanks.

Hua


2002-02-28 22:32:03

by Hua Zhong (hzhong)

[permalink] [raw]
Subject: Re: question about running program from a RAM disk

In the final system we are going to turn off swap. I had dreamed that Linux
could directly use the page frame on the RAM disk instead of doing another
copy :-)

Thanks for the reply

Hua

----- Original Message -----
From: "Richard B. Johnson" <[email protected]>
To: "Hua Zhong" <[email protected]>
Cc: "Linux Kernel Mailing List" <[email protected]>
Sent: Thursday, February 28, 2002 2:12 PM
Subject: Re: question about running program from a RAM disk


> On Thu, 28 Feb 2002, Hua Zhong wrote:
>
> > Hi all:
> >
> > If I run a program from a RAM disk, will Linux be able to run it
directly
> > from
> > the disk itself (as the image is already in memory), or do it the same
way
> > as running from a disk?
> >
> > Thanks.
> >
> > Hua
>
> It does it the same was as from a mechanical disk. If it uses
> dynamic linking, the default, the runtime libraries are
> memory-mapped and shared. In a perfect system, a very large
> program is not read into user's virtual address space all at
> once. Page-faults bring in, or discard, pages as required.
>
> Cheers,
> Dick Johnson
>
> Penguin : Linux version 2.4.1 on an i686 machine (797.90 BogoMips).
>
> 111,111,111 * 111,111,111 = 12,345,678,987,654,321
>

2002-02-28 22:14:00

by Richard B. Johnson

[permalink] [raw]
Subject: Re: question about running program from a RAM disk

On Thu, 28 Feb 2002, Hua Zhong wrote:

> Hi all:
>
> If I run a program from a RAM disk, will Linux be able to run it directly
> from
> the disk itself (as the image is already in memory), or do it the same way
> as running from a disk?
>
> Thanks.
>
> Hua

It does it the same was as from a mechanical disk. If it uses
dynamic linking, the default, the runtime libraries are
memory-mapped and shared. In a perfect system, a very large
program is not read into user's virtual address space all at
once. Page-faults bring in, or discard, pages as required.

Cheers,
Dick Johnson

Penguin : Linux version 2.4.1 on an i686 machine (797.90 BogoMips).

111,111,111 * 111,111,111 = 12,345,678,987,654,321

2002-02-28 23:30:56

by Oliver Neukum

[permalink] [raw]
Subject: Re: question about running program from a RAM disk

On Thursday 28 February 2002 23:24, Hua Zhong wrote:
> In the final system we are going to turn off swap. I had dreamed that Linux
> could directly use the page frame on the RAM disk instead of doing another
> copy :-)
>
> Thanks for the reply

You could use ramfs, which does so for sure.
I am actually not sure about the ramdisk code.

Regards
Oliver

2002-03-01 01:48:02

by Scott Murray

[permalink] [raw]
Subject: Re: question about running program from a RAM disk

On Thu, 28 Feb 2002, Hua Zhong wrote:

> In the final system we are going to turn off swap. I had dreamed that Linux
> could directly use the page frame on the RAM disk instead of doing another
> copy :-)

Both ramfs and tmpfs do what you're asking for. If you are booting
from an initial ramdisk, it's possible to copy the contents of your
ramdisk into a ramfs or tmpfs filesystem at boot time, change roots
with the pivot_root utility, and then throw away the ramdisk. See
Documentation/initrd.txt for more information on this.

Scott


--
Scott Murray
SOMA Networks, Inc.
Toronto, Ontario
e-mail: [email protected]


2002-02-28 23:53:17

by H. Peter Anvin

[permalink] [raw]
Subject: Re: question about running program from a RAM disk

Followup to: <[email protected]>
By author: "Hua Zhong" <[email protected]>
In newsgroup: linux.dev.kernel
>
> In the final system we are going to turn off swap. I had dreamed that Linux
> could directly use the page frame on the RAM disk instead of doing another
> copy :-)
>

However, the reply you got was completely irrelevant; he didn't answer
your question at all (even though he probably thought.)

The answer to your question is that a ramdisk lives directly in the
block cache and does not have to be copied.

You may want to consider migrating to a ramfs or tmpfs, which lives
directly in the *page* cache and therefore reduces overhead further.

-hpa
--
<[email protected]> at work, <[email protected]> in private!
"Unix gives you enough rope to shoot yourself in the foot."
http://www.zytor.com/~hpa/puzzle.txt <[email protected]>