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
Quoted 10 lines · Hua Zhong
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
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
Quoted 5 lines · Hua Zhong
Quoted 4 lines
Hi all:
If I run a program from a RAM disk, will Linux be able to run it
directly
Quoted 2 lines
Quoted 2 lines
from
the disk itself (as the image is already in memory), or do it the same
way
Quoted 19 lines
Quoted 5 lines
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 JohnsonPenguin : Linux version 2.4.1 on an i686 machine (797.90 BogoMips).
111,111,111 * 111,111,111 = 12,345,678,987,654,321
Quoted 3 lines · Hua Zhong
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
Signature · 4 lines
Scott Murray SOMA Networks, Inc. Toronto, Ontario e-mail: [email protected]
Quoted 5 lines · Hua Zhong
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
Followup to: <[email protected]> By author: "Hua Zhong" <[email protected]> In newsgroup: linux.dev.kernel
Quoted 5 lines
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
Signature · 3 lines
<[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]>