Friday, June 22, 2007

Optimizing Linux Kernel Boot times for embedded devices II

Συνεχίζοντας το προηγούμενο post σε συνάρτηση με το καινούριο podcast απο την timesys, γράφω εδώ τις σημειώσεις που κράτησα. Δεν είναι τα πάντα, απλώς αυτά που βρήκα ενδιαφέροντα.

Το podcast μπορείτε να το ακούσετε εδώ ενώ η ιστοσελίδα είναι εδώ. Θα βρείτε επίσης και κάποια links που είναι αρκετά ενδιαφέροντα.

Πάμε λοιπόν.

Reducing boot times (cont.)
  • Generally a small memory footprint ensures a faster boot time
  • By using CONFIG_EMBEDDED inlining is turned-off, and performance is improved
  • Another thing that CONFIG_EMBEDDED does is to reduce kernel static buffer sizes
  • Prelinking executables saves a lot of time, since the linker does NOT need to find where all the symbols are. You must use prelink
  • Profiling is also a nice way for performance debugging
A note on flash file systems
There are 2 widely used flash filesystems, jffs2 and yffs2. The first (jffs2) is very hard on compression while yffs2 is not. Depending on the trade off between speed and size, a decision must be made on which to use.
Finally bare in mind that when flash storage is reaching its limits the wear algorithms used might make writes take a long time. RAM caching and flushing might be a good idea for non critical data.

Execute in place (XIP)
XIP means that apps are NOT first copied to RAM and then executed, they are executed in place (dhaaaa). In place being usually the flash filesystem. Especially for apps that do not need to be run frequently this might be a big improvement. I wonder what happens when an app 'lives' on a ramdisk? Is it copied to RAM again, or is it run in place anyway?

That's it.

1 comment:

sudhakar said...

Thanks for the usefull info..