https://elinux.org/index.php?title=Kernel_Size_Tuning_Guide_Config_Option_Impact&feed=atom&action=history
Kernel Size Tuning Guide Config Option Impact - Revision history
2024-03-28T21:05:38Z
Revision history for this page on the wiki
MediaWiki 1.31.0
https://elinux.org/index.php?title=Kernel_Size_Tuning_Guide_Config_Option_Impact&diff=72589&oldid=prev
Cschalle: Add category
2011-10-27T22:37:53Z
<p>Add category</p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Revision as of 22:37, 27 October 2011</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l622" >Line 622:</td>
<td colspan="2" class="diff-lineno">Line 622:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* '''CONFIG_PRINTK''' syslogd needs PRINTK=y. You shouldn't launch syslogd on kernel configured as PRINTK=n.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* '''CONFIG_PRINTK''' syslogd needs PRINTK=y. You shouldn't launch syslogd on kernel configured as PRINTK=n.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">[[Category:Kernel]]</ins></div></td></tr>
<!-- diff cache key elinux:diff::1.12:old-16538:rev-72589 -->
</table>
Cschalle
https://elinux.org/index.php?title=Kernel_Size_Tuning_Guide_Config_Option_Impact&diff=16538&oldid=prev
Wmat: Fixing broken links
2010-01-28T00:43:16Z
<p>Fixing broken links</p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Revision as of 00:43, 28 January 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l594" >Line 594:</td>
<td colspan="2" class="diff-lineno">Line 594:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|  small</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|  small</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|  Based on "default" configuration, but set config items listed in "Impact of config items" to make kernel size smaller.This configuration is used only for size measurement because it is not bootable for our platform for RAM usage measurement.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|  Based on "default" configuration, but set config items listed in "Impact of config items" to make kernel size smaller.This configuration is used only for size measurement because it is not bootable for our platform for RAM usage measurement.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>|  [[Media:2.6.16.19-vanilla-small.config]]  [[Media:2.6.16.19-<del class="diffchange diffchange-inline">tiny</del>-small.config]]  </div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|  [[Media:2.6.16.19-vanilla-small.config]]  [[Media:2.6.16.19-<ins class="diffchange diffchange-inline">vanilla</ins>-small.config]]  </div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|-  </div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|-  </div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|  small(+)</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|  small(+)</div></td></tr>
<!-- diff cache key elinux:diff::1.12:old-2010:rev-16538 -->
</table>
Wmat
https://elinux.org/index.php?title=Kernel_Size_Tuning_Guide_Config_Option_Impact&diff=2010&oldid=prev
RBot: Bot (Edward's framework)
2007-03-06T03:34:09Z
<p>Bot (Edward's framework)</p>
<p><b>New page</b></p><div>Table Of Contents:<br />
<br />
<br />
== Overview ==<br />
This page describes examination result which tries to make clear how much impact each config item has for kernel size and RAM usage.<br />
Examined config items are basically ones listed in the table in "4.3 Kernel Configuration Options" of [[Kernel Size Tuning Guide]].<br />
This result was presented at [[Japan Technical Jamboree 11|Japan Technical Jamboree 11]]] , titled "Difference of the Kernel size between "default" and "small" ". Presentation slides are available on the [[Japan Technical Jamboree 11]] page.<br />
<br />
== Examination Result ==<br />
=== Impact of config items ===<br />
The table below shows kernel size and RAM usage difference between when config item is set as "from" and "to".<br />
Most of items are same as listed in "4.3 Kernel Configuration Options" of [[Kernel Size Tuning Guide]], but some were not examined, and several items are added. Please see "note" cell about the reason to be omitted or added.<br />
The data were taken from kernel 2.6.16.19 for i386. More detail of measurement conditions are described in "Examination Detail" later.<br />
<br />
Column "avail on" means whether the config item is available for vanilla kernel, or for only Linux-Tiny applied kernel.<br />
{| <br />
|- bgcolor="#80cccc"<br />
| align="center" | '''config option'''<br />
| align="center" | '''avail on'''<br />
| align="center" | '''setting'''<br />
| align="center" | '''difference[byte]'''<br />
| align="center" | '''note'''<br />
|- bgcolor="#80cccc"<br />
| align="center" | '''from'''<br />
| align="center" | '''to'''<br />
| align="center" | '''vmlinux'''<br />
| align="center" | '''bzImage'''<br />
| align="center" | '''used mem'''<br />
|- <br />
| CONFIG_BASE_FULL<br />
| tiny<br />
| Y<br />
| N<br />
| align="right" | -4096<br />
| align="right" | -32<br />
| align="right" | -16384<br />
| changed from CONFIG_CORE_SMALL(which was for 2.6.10 in core-small.patch)<br />
|- <br />
| CONFIG_NET_SMALL<br />
| tiny<br />
| N<br />
| Y<br />
| align="right" | 0<br />
| align="right" | 32<br />
| align="right" | 16384<br />
| <br />
|- <br />
| CONFIG_KMALLOC_ACCOUNTING<br />
| tiny<br />
| N<br />
| N<br />
| align="center" | -<br />
| align="center" | -<br />
| align="center" | -<br />
| compilation failure when enabled(mm/slab.c : __do_kmalloc() kmem_cache has no member of "cs_size")<br />
|- <br />
| CONFIG_AUDIT_BOOTMEM<br />
| tiny<br />
| Y<br />
| N<br />
| align="right" | 0<br />
| align="right" | -128<br />
| align="right" | -135168<br />
| <br />
|- <br />
| CONFIG_MEASURE_INLINES<br />
| tiny<br />
| Y<br />
| N<br />
| align="right" | 0<br />
| align="right" | 0<br />
| align="right" | 0<br />
| changed from CONFIG_DEPRECATE_INLINES (typo?)<br />
|- <br />
| CONFIG_PRINTK<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -365530<br />
| align="right" | -142176<br />
| align="center" | -<br />
| mem measurement uses printk<br />
|- <br />
| CONFIG_BUG<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -43287<br />
| align="right" | -14848<br />
| align="right" | 12288<br />
| <br />
|- <br />
| CONFIG_ELF_CORE<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -4424<br />
| align="right" | -2880<br />
| align="right" | -8192<br />
| <br />
|- <br />
| CONFIG_PROC_KCORE<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -4467<br />
| align="right" | -3328<br />
| align="right" | 20480<br />
| <br />
|- <br />
| CONFIG_AIO<br />
| tiny<br />
| Y<br />
| N<br />
| align="right" | -9329<br />
| align="right" | -7328<br />
| align="right" | -16384<br />
| <br />
|- <br />
| CONFIG_XATTR<br />
| tiny<br />
| Y<br />
| N<br />
| align="right" | -21517<br />
| align="right" | -10816<br />
| align="right" | 77824<br />
| see "Tips"<br />
|- <br />
| CONFIG_FILE_LOCKING<br />
| tiny<br />
| Y<br />
| Y<br />
| align="center" | -<br />
| align="center" | -<br />
| align="center" | -<br />
| compilation failure (see "Tips")<br />
|- <br />
| /\ CONFIG_DIRECTIO <br />
| align="center" | -<br />
| -<br />
| align="center" | -<br />
| align="center" | -<br />
| align="center" | -<br />
| align="center" | -<br />
| obsolete (was 2.6.10 in direct-io-core.patch)<br />
|- <br />
| CONFIG_MAX_SWAPFILES_SHIFT<br />
| tiny<br />
| 5<br />
| 0<br />
| align="right" | 0<br />
| align="right" | -96<br />
| align="right" | -4096<br />
| <br />
|- <br />
| CONFIG_NR_LDISCS<br />
| tiny<br />
| 16<br />
| 2<br />
| align="right" | 0<br />
| align="right" | -64<br />
| align="right" | -163840<br />
| <br />
|- <br />
| CONFIG_MAX_USER_RT_PRIO<br />
| tiny<br />
| 100<br />
| 5<br />
| align="right" | 0<br />
| align="right" | -96<br />
| align="right" | -143360<br />
| <br />
|- <br />
| CONFIG_KALLSYMS<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -235189<br />
| align="right" | -130592<br />
| align="right" | -4096<br />
| <br />
|- <br />
| CONFIG_SHMEM<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -14233<br />
| align="right" | -7360<br />
| align="right" | -12288<br />
| <br />
|- <br />
| CONFIG_SWAP<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -19266<br />
| align="right" | -11136<br />
| align="right" | 8192<br />
| <br />
|- <br />
| CONFIG_SYSVIPC<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -27365<br />
| align="right" | -12640<br />
| align="right" | -4096<br />
| changed from CONFIG_SYSV_IPC (typo?)<br />
|- <br />
| CONFIG_POSIX_MQUEUE<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -9681<br />
| align="right" | -3936<br />
| align="right" | -4096<br />
| <br />
|- <br />
| CONFIG_SYSCTL<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -84593<br />
| align="right" | -28000<br />
| align="right" | -57344<br />
| <br />
|- <br />
| CONFIG_LOG_BUF_SHIFT<br />
| vanilla<br />
| 15<br />
| 12<br />
| align="right" | 0<br />
| align="right" | 32<br />
| align="right" | 20480<br />
| see "Tips"<br />
|- <br />
| CONFIG_UID16<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -4408<br />
| align="right" | -3040<br />
| align="right" | -163840<br />
| <br />
|- <br />
| CONFIG_CC_OPTIMIZE_FOR_SIZE<br />
| vanilla<br />
| N<br />
| Y<br />
| align="right" | -487424<br />
| align="right" | -167904<br />
| align="right" | 12288<br />
| <br />
|- <br />
| CONFIG_MODULES<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -369445<br />
| align="right" | -44608<br />
| align="right" | -147456<br />
| <br />
|- <br />
| CONFIG_KMOD<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -4959<br />
| align="right" | -4128<br />
| align="right" | -159744<br />
| <br />
|- <br />
| CONFIG_PCI<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -1217753<br />
| align="right" | -463200<br />
| align="right" | -249856<br />
| <br />
|- <br />
| /\ CONFIG_XIP_KERNEL <br />
| align="center" | -<br />
| align="center" | -<br />
| align="center" | -<br />
| align="center" | -<br />
| align="center" | -<br />
| align="center" | -<br />
| not supported for i386 (arch depend)<br />
|- <br />
| /\ CONFIG_MAX_RESERVE_AREA <br />
| align="center" | -<br />
| align="center" | -<br />
| align="center" | -<br />
| align="center" | -<br />
| align="center" | -<br />
| align="center" | -<br />
| ?? (arch depend?)<br />
|- <br />
| CONFIG_BLK_DEV_LOOP<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -14292<br />
| align="right" | -7488<br />
| align="right" | -163840<br />
| <br />
|- <br />
| CONFIG_BLK_DEV_RAM<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -10237<br />
| align="right" | -4512<br />
| align="right" | -40960<br />
| <br />
|- <br />
| CONFIG_BLK_DEV_RAM_COUNT<br />
| vanilla<br />
| 16<br />
| 2<br />
| align="right" | 0<br />
| align="right" | -32<br />
| align="right" | -28672<br />
| <br />
|- <br />
| CONFIG_BLK_DEV_RAM_SIZE<br />
| vanilla<br />
| 4096<br />
| 1024<br />
| align="right" | 0<br />
| align="right" | 0<br />
| align="right" | -16384<br />
| <br />
|- <br />
| CONFIG_IOSCHED_AS<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -10982<br />
| align="right" | -7680<br />
| align="right" | -8192<br />
| <br />
|- <br />
| CONFIG_IOSCHED_DEADLINE<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -6107<br />
| align="right" | -3008<br />
| align="right" | -147456<br />
| <br />
|- <br />
| CONFIG_IOSCHED_CFQ<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -12393<br />
| align="right" | -6880<br />
| align="right" | -28672<br />
| <br />
|- <br />
| CONFIG_IP_PNP<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -14156<br />
| align="right" | -7168<br />
| align="right" | -16384<br />
| <br />
|- <br />
| CONFIG_IP_PNP_DHCP<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -101<br />
| align="right" | -224<br />
| align="right" | -4096<br />
| <br />
|- <br />
| CONFIG_IP_PNP_BOOTP<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | 0<br />
| align="right" | 0<br />
| align="right" | -20480<br />
| Added to contrast with IP_PNP_DHCP<br />
|- <br />
| CONFIG_IP_PNP_RARP<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -4190<br />
| align="right" | -2784<br />
| align="right" | -135168<br />
| Added to contrast with IP_PNP_DHCP<br />
|- <br />
| CONFIG_IDE<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -175576<br />
| align="right" | -69568<br />
| align="center" | -<br />
| mem measurement environment uses IDE as a root device<br />
|- <br />
| CONFIG_SCSI<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -284965<br />
| align="right" | -114720<br />
| align="right" | -315392<br />
| <br />
|- <br />
| CONFIG_SMP<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -177845<br />
| align="right" | -64064<br />
| align="right" | -61440<br />
| Added 'cause probably effective<br />
|- <br />
| CONFIG_NFS_FS<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -63186<br />
| align="right" | -28384<br />
| align="right" | -86016<br />
| Added 'cause probably effective<br />
|- <br />
| CONFIG_NFSD<br />
| vanilla<br />
| Y<br />
| N<br />
| align="right" | -56816<br />
| align="right" | -24256<br />
| align="right" | -454656<br />
| Added 'cause probably effective<br />
|}<br />
<br />
=== Kernel Overall Size and RAM Usage ===<br />
The table below shows static size of kernel configured as "default" and "small". The difference of them means overall impact of config items listed in the table "Impact of config items" above.<br />
Please see "Examination detail" about detail of "default" and "small" configurations.<br />
{| <br />
|- <br />
| Kernel static size[BYTE]<br />
|- bgcolor="#80cccc"<br />
| align="center" | '''kernel source'''<br />
| align="center" | '''configuration'''<br />
| align="center" | '''vmlinux'''<br />
| align="center" | '''bzImage'''<br />
| align="center" | '''$(size vmlinux)'''<br />
|- bgcolor="#80cccc"<br />
| align="center" | '''text'''<br />
| align="center" | '''data'''<br />
| align="center" | '''bss'''<br />
|- <br />
| vanilla<br />
| "default"<br />
| align="right" | 5267762<br />
| align="right" | 2019678<br />
| align="right" | 3606842<br />
| align="right" | 561724<br />
| align="right" | 186972<br />
|- <br />
| "small"<br />
| align="right" | 2190346<br />
| align="right" | 903209<br />
| align="right" | 1547095<br />
| align="right" | 159976<br />
| align="right" | 64276<br />
|- <br />
| tiny<br />
| "default"<br />
| align="right" | 5267871<br />
| align="right" | 2014684<br />
| align="right" | 3603061<br />
| align="right" | 562236<br />
| align="right" | 185788<br />
|- <br />
| "small"<br />
| align="right" | 2112179<br />
| align="right" | 863484<br />
| align="right" | 1478058<br />
| align="right" | 159836<br />
| align="right" | 57844<br />
|}<br />
<br />
And the table below shows RAM usage of kernel configured as "default" and "small(+)".<br />
Please see "Examination detail" about detail of "default" and "small(+)" configurations.<br />
{| <br />
|- <br />
| RAM usage [BYTE]<br />
|- bgcolor="#80cccc"<br />
| align="center" | '''kernel source'''<br />
| align="center" | '''configuration'''<br />
| align="center" | '''used'''<br />
| align="center" | '''free'''<br />
| align="center" | '''total'''<br />
|- <br />
| vanilla<br />
| "default"<br />
| align="right" | 3829760<br />
| align="right" | 124260352<br />
| align="right" | 128090112<br />
|- <br />
| "small(+)"<br />
| align="right" | 2920448<br />
| align="right" | 127713280<br />
| align="right" | 130633728<br />
|- <br />
| tiny<br />
| "default"<br />
| align="right" | 3977216<br />
| align="right" | 124112896<br />
| align="right" | 128090112<br />
|- <br />
| "small(+)"<br />
| align="right" | 3022848<br />
| align="right" | 127692800<br />
| align="right" | 130715648<br />
|}<br />
<br />
== Examination Detail ==<br />
=== Environment ===<br />
{| <br />
|- <br />
| kernel<br />
| 2.6.16.19 + Linux-Tiny patches<br />
|- <br />
| arch<br />
| i386<br />
|- <br />
| platform for RAM usage measurement<br />
| qemu 0.6.2 (mem=128MB)(on Pentium IV 3.4GHz, mem=1.0GB)<br />
|- <br />
| gcc<br />
| 3.3.5<br />
|- <br />
| binutils<br />
| 2.15<br />
|}<br />
<br />
=== Examination Method ===<br />
==== Impact Examination ====<br />
The examination was basically done by using Kconfig Size tool (see [[Kernel Config Weight]]), but partially by manual manipulation because of some limitation of the tool.<br />
The overview of method to measure impact is :<br />
# Make a default .config file by "make defconfig".<br />
# Change all "=m" in the .config file into "=y".<br />
# Enable (which means to set "=y") all boolean or tristate examination target config items.This .config file is now called "base config file".<br />
# Make "base kernel" from the base config file.And then, measure size of the base kernel (S0) and RAM usage (M0).<br />
# Make examination kernel for each target item.<br />
## For boolean or tristate config item, make .config file to disable (set "=n") the item, and make kernel from the .config file.<br />
## For item which has numerical value (ie. int), make .config file to set the item as a certain value, and make kernel from the .config file.<br />
# Then measure size (Sx) and RAM usage (Mx) of the made kernel.<br />
# Impact of the config item is calculated as :Impact for size : Sx - X0 Impact for RAM usage : Mx - M0<br />
<br />
The base config file used for this examination is [[[Media:2.6.16.19-tiny-base.config]] here(2.6.16.19-tiny-base.config)].<br />
<br />
==== Overall size/RAM Usage ====<br />
The method to measure overall size and RAM usage is very simple, which means making .config files and measure.<br />
We used 2 kinds of kernel-sources, and 3 configurations as below.<br />
{| <br />
|- <br />
| Kinds of kernel-sources<br />
|- bgcolor="#80cccc"<br />
| align="center" | '''name'''<br />
| align="center" | '''description'''<br />
|- <br />
| vanilla<br />
| Source code downloaded from kernel.org<br />
|- <br />
| tiny<br />
| Source code which is applied Linux-Tiny patches on vanilla<br />
|}<br />
<br />
<br />
{| <br />
|- <br />
| Kinds of kernel configurations<br />
|- bgcolor="#80cccc"<br />
| align="center" | '''config name'''<br />
| align="center" | '''description'''<br />
| align="center" | '''.config file'''<br />
|- <br />
| default<br />
| Mostly same as defconfig, but modified little bit as below. (1) Change all "=m" into "=y" to measure size of vmlinux/bzImage. (2) Enable CONFIG_SERIAL_8250_CONSOLE because our platform for RAM usage measurement uses serial console.<br />
| [[Media:2.6.16.19-vanilla-default.config]] [[Media:2.6.16.19-tiny-default.config]] <br />
|- <br />
| small<br />
| Based on "default" configuration, but set config items listed in "Impact of config items" to make kernel size smaller.This configuration is used only for size measurement because it is not bootable for our platform for RAM usage measurement.<br />
| [[Media:2.6.16.19-vanilla-small.config]] [[Media:2.6.16.19-tiny-small.config]] <br />
|- <br />
| small(+)<br />
| Modify "small" configuration as to enable CONFIG_PRINTK and CONFIG_IDE of "small" configuration.The reason why to modify is our RAM measurement method uses PRINTK and our platform for RAM measurement uses IDE as a root device.This configuration is used only for RAM usage measurement.<br />
| [[Media:2.6.16.19-vanilla-small-plus.config]] [[Media:2.6.16.19-tiny-small-plus.config]] <br />
|}<br />
<br />
=== Note : About RAM Usage Measurement ===<br />
The definition of "RAM usage" here is amount of RAM which BUDDY system recognizes as in-use just after boot of kernel ( = just before execution of userland ).<br />
It should be "just-for-reference" because reproducibility error is known from our experiences.<br />
<br />
<br />
== Tips ==<br />
Appearing below are "Tips" to help one who tries to examine moreover.<br />
<br />
* '''CONFIG_XATTR''' When XATTR=n, EXT3_FS_XATTR=y causes compilation failure. ( EXT3_FS_XATTR=y in defconfig )<br />
<br />
* '''CONFIG_FILE_LOCKING''' When FILE_LOKING=n, NFSD=y causes compilation failure. ( NFSD=y in defconfig )<br />
<br />
* '''CONFIG_LOG_BUF_SHIFT''' LOG_BUF_SHIFT can't be set unless DEBUG_KERNEL=y because "if DEBUG_KERNEL" in lib/Kconfig. Please make sure to disable below items to make kernel compact, which are "depends on DEBUG_KERNEL" and "default y".<br />
** DETECT_SOFTLOCKUP<br />
** DEBUG_PREEMPT<br />
** DEBUG_MUTEXES<br />
** FORCED_INLINING<br />
<br />
* '''CONFIG_PCI''' Disable ACPI in advance if you want to disable PCI because ACPI selects PCI.<br />
<br />
* '''CONFIG_PRINTK''' syslogd needs PRINTK=y. You shouldn't launch syslogd on kernel configured as PRINTK=n.</div>
RBot