Re: [RFC] mlock/stack guard interaction fixup

Darren Hart
2010-08-23T18:43:16Z

On 08/23/2010 10:59 AM, Peter Zijlstra wrote:
> On Mon, 2010-08-23 at 10:34 -0700, Linus Torvalds wrote:
>> I suspect that if you use mlock for _any_ other reason than protecting
>> a particular very sensitive piece of information, you should use
>> mlockall(MCL_FUTURE). IOW, if you use mlock because you have realtime
>> issues, there is no excuse to ever use anything else, imho. And even
>> then, I guarantee that things like copy-on-write is going to be
>> "interesting".
>>
>> I realize that people hate mlockall() (and particularly MCL_FUTURE),
>> and yes, it's a bloated thing that you can't reasonably use on a large
>> process. But dammit, if you have RT issues, you shouldn't _have_ some
>> big bloated process. You should have a small statically linked server
>> that is RT, and nothing else.
>
> Us real-time people have been telling people to not use mlockall() at
> all.

Well, we have at least two camps of people here I guess. When people
come to me with unexplainable latencies, paging is one of the things we
check for, and mlockall() is a good way to test if avoiding that paging
will help them - so I have been known to recommend it on occasion.

> While small !glibc statically linked RT components using shared memory
> interfaces to !RT apps could work its not how people actually write
> their apps. They write big monolithic threaded apps where some threads
> are RT.
>
> [ in part because there doesn't seem to be a usable !glibc
> libpthread/librt implementation out there, in part because people use
> crap like Java-RT ]

Which is also missing some performance and functionality due to the lack
of complete pthread support for priority inheritance (and the complete
disinterest in fixing it by certain maintainers).

--
Darren Hart
IBM Linux Technology Center
Real-Time Linux Team