From: Lars Brinkhoff <lars.spam@nocrew.org>
To: Jan-Benedict Glaw <jbglaw@microdata-pos.de>
Cc: linux-kernel@vger.kernel.org
Subject: Re: Limited RAM - how to save it?
Date: 06 Nov 2001 07:58:31 +0100 [thread overview]
Message-ID: <85wv14s7vs.fsf@junk.nocrew.org> (raw)
In-Reply-To: <20011105125231.A3783@microdata-pos.de>
In-Reply-To: <20011105125231.A3783@microdata-pos.de>
Jan-Benedict Glaw <jbglaw@microdata-pos.de> writes:
> I'm working on a 4MB linux system (for a customer) which has quite
> limited resources [...] If you've got further ideas on getting the
> kernel a bit smaller, would be nice to get a mail dropped...
I started a port of Linux 2.3.99 to a MIPS device which usually has 2M
flash and 4M RAM.
To reduce the size of the text and data sections, I sorted the output
of the "size" command and investigated the files with the largest
sections.
These are the memory-saving changes I arrived at. They are not really
tested, so some of them may break some functionality. Also, I don't
know whether they apply to the current kernels.
fs/dcache.c
Changed HASH_BITS from 14 to 8. This reduces the size of the
cache from 128K to 2K.
fs/inode.c
Changed HASH_BITS from 14 to 8. This reduces the size of the
cache from 128K to 2K.
include/linux/blk.h
Changed NR_REQUEST from 256 to 16. This reduces the number of
requests that can be queued. The size of the queue is reduced
from 16K to 1K.
include/linux/major.h
Changed MAX_BLKDEV and MAX_CHRDEV from 256 to 10 and 20,
respectively. This reduces the number of block and character
devices and saves about 40K.
kernel/printk.c
Changed LOG_BUF_LEN from 16384 bytes to 2048 bytes.
include/linux/tty.h
Changed NR_PTYS and NR_LDISCS from 256 and 16, respectively,
to 16 and 4, respectively. Saved about 12K.
Warning: this change may break the pty driver, in which case
further modifications will have to be done to
drivers/char/pty.c.
kernel/panic.c
Changed a buffer from 1024 bytes to 200 bytes.
include/linux/sched.h
Changed PIDHASH_SZ from 1024 to 16, which saves 1008 bytes.
include/linux/mmzone.h
NR_GPFINDEX from 0x100 to 0x10. Saves 4800 bytes, but I'm not
sure it doesn't break anything.
net/Makefile, net/socket.c, net/nosocket.c
Replacing socket.c with nosocket.c, a file containing dummy
replacement functions for those in socket.c, saves about 24K.
Warning: this disables the socket API entirely, but it is
currently not used in the product.
mm/Makefile, mm/swapfile.c, mm/swap_state.c, mm/noswapfile.c, mm/noswap_state.c
Replacing swapfile.c with noswapfile.c, and swap_state.c with
noswap_state.c saves about 12K. The no*.c files contains
empty replacement functions.
Warning: this disables swapping of anonymous memory, which
isn't used in the product. But note that demand paging of
executables still works.
mm/Makefile, mm/mmap.c
The functions in mmap.c could probably also be replaced by
empty functions. Estimated saving: 9K (not included in the
grand total below).
*, CONFIG_MESSAGES
Applying the CONFIG_MESSAGES patch and disabling all kernel
messages saves about 80K.
The CONFIG_MESSAGES patch was written by Graham Stoney
<greyham@research.canon.com.au>.
With all of the above, and only this enabled in .config:
CONFIG_EXPERIMENTAL=y
CONFIG_CPU_R3000=y
CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_ELF_KERNEL=y
CONFIG_BINFMT_ELF=y
CONFIG_MODULES=y
CONFIG_MODVERSIONS=y
CONFIG_KMOD=y
CONFIG_CROSSCOMPILE=y
, the kernel is down to about 550K.
Here is the output of "size vmlinux". I think this is without the
CONFIG_MESSAGES patch (it was long since I worked with this).
text data bss dec hex filename
572128 41964 15860 629952 99cc0 vmlinux
--
Lars Brinkhoff http://lars.nocrew.org/ Linux, GCC, PDP-10
Brinkhoff Consulting http://www.brinkhoff.se/ programming
prev parent reply other threads:[~2001-11-06 7:03 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-11-05 11:52 Limited RAM - how to save it? Jan-Benedict Glaw
2001-11-05 13:02 ` Matt Bernstein
2001-11-06 10:58 ` szonyi calin
2001-11-06 11:23 ` Matt Bernstein
2001-11-05 20:21 ` H. Peter Anvin
2001-11-05 22:20 ` Alan Cox
2001-11-05 22:15 ` H. Peter Anvin
2001-11-06 6:58 ` Lars Brinkhoff [this message]
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=85wv14s7vs.fsf@junk.nocrew.org \
--to=lars.spam@nocrew.org \
--cc=jbglaw@microdata-pos.de \
--cc=linux-kernel@vger.kernel.org \
/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 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.