Re: [RFC] mlock/stack guard interaction fixup

From: Darren Hart
Date: Mon Aug 23 2010 - 14:43:20 EST


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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/