public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Tim Bird <tim.bird@am.sony.com>
To: colin <colin@realtek.com.tw>
Cc: David Woodhouse <dwmw2@infradead.org>,
	Paulo Marques <pmarques@grupopie.com>,
	linux-kernel@vger.kernel.org
Subject: Re: What File System supports Application XIP
Date: Thu, 09 Sep 2004 09:35:38 -0700	[thread overview]
Message-ID: <4140865A.5030304@am.sony.com> (raw)
In-Reply-To: <1094722976.4083.1550.camel@hades.cambridge.redhat.com>

David Woodhouse wrote:
> On Thu, 2004-09-09 at 10:19 +0100, Paulo Marques wrote:
>> colin wrote:
>> > 
>> > Hi there,
>> > We are developing embedded Linux system. Performance is our consideration.
>> > We hope some applications can run as fast as possible,
>> > and are think if they can be put in a filesystem image, which resides in
>> > RAM, and run in XIP (eXecute In Place)  manners.
>> > I know that Cramfs has supported Application XIP. Is there any other FS that
>> > also supports it? Ramdisk? Ramfs? Romfs?
>> 
>> Obvisously cramfs can not support XIP, because the "in-place" image
>> is compressed (unless you have a processor that can execute compressed
>> code :)
> 
> Actually there are hacks floating around which do let you use XIP with
> cramfs -- obviously you have to dispense with compression for the files
> you want to access that way.

The patches I've seen require setting the CRAMFS_LINEAR option, to turn on
linear addressing for cramfs, and CRAMFS_LINEAR_XIP.  The result of these
is to dispense with compression.

> 
> You won't gain at runtime by using XIP though. Your code and data will
> end up in RAM _whatever_ file system you use, and you'll be running from
> page cache.

Really?  I thought that when you XIPed from flash, the page was mapped
directly back to the flash memory address.  There shouldn't be a RAM
copy of the page at all.

Greg Ungerer (uClinux maintainer) once wrote:
> [Application XIP provides a] win of keeping the application code in
> flash even when that is shared. Can make a difference on small memory
> systems.
>  
> It also helps alleviate the contiguous memory problem (or memory 
> fragmentation if you prefer) when you don't have an MMU. We need to 
> be able to allocate a big enough contigous memory region to load 
> the text into. Can be a problem on systems that have been running 
> for a while and free memory is fragmented. If the application can 
> be run XIP from flash then you at least don't need to worry about 
> that. (This is a very real problem on small RAM systems). 

In the CE Linux Forum, we've been investigating Application XIP for
two purposes: reduction in RAM footprint, and faster startup time.
However, those both come at the sacrifice of runtime performance
(as David says below).  Running XIP from a RAM-based filesystem,
as originally proposed, might solve the performance problem,
but it wouldn't improve space utilization, and since you have to
populate the RAM from somewhere on startup anyway, I don't think
it will improve your bootup time.  It _might_ improve per-application
startup time, once the system is running, but I think a regular
RAM disk suffices for that.

> You may get a _slightly_ faster startup time after reboot if you use XIP
> from flash, because it doesn't have to be loaded into RAM first. But
> that comes at the cost of making it all a low slower during normal
> operation -- it's a lot slower to fetch icache lines from flash than it
> is from RAM.

FYI - Here are some rough numbers:
Time to run shell script which starts TinyX X server and "xsetroot -solid red",
then shuts down:

First invocation: Non-XIP 3.195 seconds, XIP 2.035 seconds
Second invocation: Non-XIP 1.744 seconds, XIP 1.765 seconds

I think this was on a 133 MHz PPC, but I'm not positive.  In both cases
the filesystem was in flash.  Note that once the application pages are
in RAM in the page cache, the Non-XIP case beats the XIP case (probably
due to the penalty to access flash memory).

So the only performance win is on the first invocation of the application.

I'm just now starting to put together a wiki page of information about
Application XIP, for those interested. (It has nothing now, so don't get
excited.)  But contributions are welcome at:
http://tree.celinuxforum.org/pubwiki/moin.cgi/ApplicationXIP
(Maybe when someone googles this message a year from now, there will be
something interesting there... ;-)

=============================
Tim Bird
Architecture Group Co-Chair, CE Linux Forum
Senior Staff Engineer, Sony Electronics
E-mail: tim.bird@am.sony.com
=============================

  reply	other threads:[~2004-09-09 16:41 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-09-09  8:55 What File System supports Application XIP colin
2004-09-09  9:18 ` Arjan van de Ven
2004-09-09  9:45   ` colin
2004-09-09  9:53     ` Arjan van de Ven
2004-09-09 16:56       ` Tim Bird
2004-09-09 17:17         ` Arjan van de Ven
2004-09-09 17:38         ` Robert Love
2004-09-10  2:12           ` colin
2004-09-10  2:15             ` Robert Love
2004-09-09  9:19 ` Paulo Marques
2004-09-09  9:42   ` David Woodhouse
2004-09-09 16:35     ` Tim Bird [this message]
2004-09-11  0:06       ` Todd Poynor
2004-09-09  9:58   ` ¡@[*©U§£¶l¥ó*] " colin
2004-09-09 10:43 ` Arnd Bergmann

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=4140865A.5030304@am.sony.com \
    --to=tim.bird@am.sony.com \
    --cc=colin@realtek.com.tw \
    --cc=dwmw2@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pmarques@grupopie.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