From: Adrian Bunk <bunk@stusta.de>
To: "Jörn Engel" <joern@wohnheim.fh-wedel.de>
Cc: Yum Rayan <yum.rayan@gmail.com>,
linux-kernel@vger.kernel.org, mvw@planets.elm.net
Subject: Stack usage tasks
Date: Thu, 31 Mar 2005 22:30:10 +0200 [thread overview]
Message-ID: <20050331203010.GF3185@stusta.de> (raw)
In-Reply-To: <20050331150548.GC19294@wohnheim.fh-wedel.de>
On Thu, Mar 31, 2005 at 05:05:48PM +0200, Jörn Engel wrote:
> On Wed, 30 March 2005 23:39:40 -0800, Yum Rayan wrote:
> >
> > Before patch
> > ------------
> > check_free_space - 128
> > do_acct_process - 105
> >
> > After patch
> > -----------
> > check_free_space - 36
> > do_acct_process - 44
>
> It is always nice to see enthusiams, but in your case it might be a
> bit misguided. None of the functions you worked on appear to be real
> problems wrt. stack usage.
>
> But if you have time to tackle some of these functions, that may make
> a real difference:
>
> http://wh.fh-wedel.de/~joern/stackcheck.2.6.11
>
> In principle, all recursive paths should consume as little stack as
> possible. Or the recursion itself could be avoided, even better. And
Sometimes it's easy to prove that the recursion can't occur more than
once.
Especially with a moderate stack usage, such cases are not a problem.
But auditing the recursive paths for problematic ones is still an open
task.
> some of the call chains with ~3k of stack consumption may be
> problematic on other platforms, like the x86-64. Taking care of those
> could result in smaller stacks for the respective platform.
There's also something different that can be done:
On i386, unit-at-a-time is disabled (the only currently released version
of GNU gcc with unit-at-a-time is gcc 3.4 [1]) since gcc's stack
handling isn't very good.
With unit-at-a-time, the highest stack usage within a single function is
over 3kB.
While this is technically gcc's fault, workarounds were IMHO worth it
since unit-at-a-time gives me kernel images that are smaller by 2% [2]
and I was surprised if the speed effect wasn't positive [3].
The task I'm suggesting was therefore:
- remove the -fno-unit-at-a-time in arch/i386/Makefile in your private
kernel sources
- use gcc 3.4
- reduce the stack usages in call paths > 3kB
Note that with unit-at-a-time, gcc inline several static functions, so
the stack usage you see for a function might be accumulated from several
functions.
It's IMHO the best doing this against -mm.
I do currently not have the time for doing this, but it was something
with a real advantage for many users.
> Jörn
cu
Adrian
[1] SuSE "gcc 3.3" also supports this
[2] with -O2
[3] I do not claim it has to be measurable positive, but at least not
negative
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
next prev parent reply other threads:[~2005-03-31 20:30 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-31 7:39 [PATCH] Reduce stack usage in acct.c Yum Rayan
2005-03-31 15:05 ` Jörn Engel
2005-03-31 20:09 ` Randy.Dunlap
2005-03-31 20:40 ` Adrian Bunk
2005-03-31 20:30 ` Adrian Bunk [this message]
2005-03-31 20:43 ` Stack usage tasks Roland Dreier
2005-03-31 21:19 ` Adrian Bunk
2005-04-01 10:17 ` Jörn Engel
2005-04-01 11:16 ` Jörn Engel
2005-04-03 11:35 ` [PATCH] Reduce stack usage in acct.c Olaf Dietsche
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050331203010.GF3185@stusta.de \
--to=bunk@stusta.de \
--cc=joern@wohnheim.fh-wedel.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mvw@planets.elm.net \
--cc=yum.rayan@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox