All of lore.kernel.org
 help / color / mirror / Atom feed
* Can on-demand loading of user-space executables be disabled ?
@ 2006-01-30 10:12 P.O. Gaillard
  2006-01-31  8:43 ` Helge Hafting
  0 siblings, 1 reply; 5+ messages in thread
From: P.O. Gaillard @ 2006-01-30 10:12 UTC (permalink / raw)
  To: linux-kernel; +Cc: Ingo Molnar

Hello,

As far as I understand what happens when I start a Linux program, the executable 
file is mmaped into memory and the execution of the code itself prompts Linux to 
load the required pages of the program.

I expect that this could cause unwanted delays during program execution when a 
function that has never been used (nor loaded into memory) is called. This delay 
could be bigger than 10ms while the 2.6 kernel is usually quite predictable 
thanks to Ingo Molnar and others' work.

Is Linux really using on-demand loading ?
Is it very different from what I described in the first paragraph ?
Can on-demand loading be disabled ? (This would seem convenient for my 
applications since I generally start a program that is meant to run as 
predictably as possible for months.)

    thanks for your help,


   P.O. Gaillard


^ permalink raw reply	[flat|nested] 5+ messages in thread
* Re: Can on-demand loading of user-space executables be disabled ?
@ 2006-01-30 12:00 linux
  0 siblings, 0 replies; 5+ messages in thread
From: linux @ 2006-01-30 12:00 UTC (permalink / raw)
  To: pierre-olivier.gaillard; +Cc: linux-kernel

> As far as I understand what happens when I start a Linux program, the
> executable file is mmaped into memory and the execution of the code
> itself prompts Linux to load the required pages of the program.
> 
> I expect that this could cause unwanted delays during program execution
> when a function that has never been used (nor loaded into memory) is
> called. This delay could be bigger than 10ms while the 2.6 kernel is
> usually quite predictable thanks to Ingo Molnar and others' work.
> 
> Is Linux really using on-demand loading ?

Yes.

> Is it very different from what I described in the first paragraph ?

No, not really (it's not different).  The pages are mapped, and brought
in via page faults.  There is read-ahead code, so if you start hitting
sequential pages, it'll read more than is immediately necessary in the
hope of keeping up.

> Can on-demand loading be disabled ? (This would seem convenient for my 
> applications since I generally start a program that is meant to run as 
> predictably as possible for months.)

Well, the easy way to disable on-demand loading is munmap().
Then the data won't be loaded and you'll get SIGSEGV.

However, I don't think that's what you mean.
If you want to keep code in memory, so it can't suffer a page
fault, either on initial load or by being swapped out to make
room for something else, use mlock() or mlockall().

If you just want to encourage (but not *insist*) code to be in memory,
I think Linux implements madvise(MADV_WILLNEED) sensibly.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2006-02-07 16:45 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-01-30 10:12 Can on-demand loading of user-space executables be disabled ? P.O. Gaillard
2006-01-31  8:43 ` Helge Hafting
2006-01-31 10:28   ` Antonio Vargas
2006-02-07 16:45     ` P.O. Gaillard
  -- strict thread matches above, loose matches on Subject: below --
2006-01-30 12:00 linux

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.