Re: x86: 4kstacks default

From: Helge Hafting
Date: Wed Apr 23 2008 - 05:09:15 EST


Alexander E. Patrakov wrote:
Adrian Bunk wrote:
On Sun, Apr 20, 2008 at 08:41:27AM -0700, Arjan van de Ven wrote:
...
yes. Adrian is waay off in the weeds on this one. Nobody but him is suggesting to remove
8Kb stacks. I think everyone else agrees that having both options is valuable; and there
are better ways to find+fix stack bloat than removing this config option.

I'm not arguing for removing the option immediately, but long-term we shouldn't need it.

This comes from my experience of removing obsolete drivers for hardware for which also a more recent driver exists:
As long as there is some workaround (e.g. using an older driver or
8k stacks) the workaround will be used instead of the getting proper bug reports and fixes.

As far as I know all problems that are known with 4k stacks are some nested things with XFS in the trace.

This "as far as I know" is a problem itself. Is it possible to implement (e.g., using some form of memory protection in hardware, but I am not an expert here) an option with 8k stacks that, however, spams the log if the actual usage goes above 4k, and have this as a default for some time? If 4k stacks are the goal that is almost achieved, then this debugging option should have zero impact on performance.
Shouldn't be hard. Use the 8k stack, and have the system mark the second page as "not present"
If it ever gets used you get a page fault. The page fault handler then have to mark the page
present before returning, as well as queue up some spam (the call chain perhaps) for the log.

A less intrusive way is to use 8k stacks as-is, but put a signature in the second page.
When the process quits, examine the second stack page to see if the signature
got overwritten. This approach will only show that a problem exists, it won't
pinpoint exactly what does it.

Helge Hafting

--
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/