From Fedora Project Wiki

No edit summary
(some clarifications in language; markup fixing to help automatic conversion)
Line 5: Line 5:
== Improved Performance and Reduced Power with relatime ==
== Improved Performance and Reduced Power with relatime ==


An option to improve filesystem performance and reduce power called [http://lwn.net/Articles/244829/ relatime] is enabled by default in Fedora 11.  
The [http://lwn.net/Articles/244829/ relatime] option is now enabled by default in Fedora 11.  It improves filesystem performance and reduces power consumption.


The POSIX standard requires operating systems to: keep track of the last time each file was accessed by an application or the user, and to store this timestamp as part of the filesystem data. This timestamp, called atime can be useful in finding out which files are never used (to clean up the /tmp directory for example) or to find out if a file has been looked at after it changed.
The POSIX standard requires operating systems to keep track of the last time each file was accessed by an application or the user, and to store this timestamp as part of the filesystem data. This timestamp, called ''atime'', is used in finding out which files are never used (to clean up the <code>/tmp</code> directory for example) or if a file has been looked at after it was last changed.


A significant downside to atime, is that every time a file is accessed, the kernel has to write a new timestamp to the disk, at least after a few seconds of activity. These disk writes will keep the disk and the link to the disk busy, and that costs both performance and power.
A significant downside to atime is that every time a file is accessed, the kernel has to write a new timestamp to the disk, at least after a few seconds of activity. These disk writes keep the disk and the link to the disk busy, which costs both performance and power.  
 
Because few programs use atime, disabling it always and for everyone is not very practical. The Linux kernel has a feature called relatime, which is an effective compromise between having some of the information that atime provides, without having the disk time updated every single time. It works by updating the atime field on disk only if the file hasn't been accessed since the last time it was accessed, (to provide the new email detection capability) or when the last access was more than 1 day ago (to help programs and users clean up unused files in the /tmp directory). An improved version of relatime has been [https://www.redhat.com/archives/fedora-devel-list/2009-March/msg01612.html merged upstream] by Fedora developers in 2.6.30 kernel and backported to Fedora 11 kernel.


Because some programs use atime, disabling by default is not practical. The Linux kernel has a feature called ''relatime'', which is an effective compromise between having some of the information that atime provides, without having the disk time updated as regularly. It works by updating the atime field on disk only if the file hasn't been accessed since the last time it was accessed (to provide the new email detection capability) or when the last access was more than 1 day ago (to help programs and users clean up unused files in the <code>/tmp</code> directory). An improved version of relatime has been [https://www.redhat.com/archives/fedora-devel-list/2009-March/msg01612.html merged upstream] by Fedora developers in the 2.6.30 kernel and backported to the Fedora 11 kernel.


=== Version ===
=== Version ===
Line 23: Line 22:


<pre>rpm -qpl kernel-<version>.src.rpm</pre>
<pre>rpm -qpl kernel-<version>.src.rpm</pre>


=== Changelog ===
=== Changelog ===
Line 38: Line 35:
=== Kernel Flavors ===
=== Kernel Flavors ===


{{Anchor|Kernel_Flavors}}
Fedora 11 includes the following kernel builds:
 
Fedora {{Template:DocsDict/BeatsVer}} includes the following kernel builds:
    
    
* Native kernel, for use in most systems.  Configured sources are available in the <code>kernel-devel</code> package.
* Native kernel, for use in most systems.  Configured sources are available in the <code>kernel-devel</code> package.


* The kernel-PAE, for use in 32-bit x86 systems with more than 4GB of RAM, or with CPUs that have a NX (No eXecute) feature.  This kernel support both uniprocessor and multi-processor systems.  Configured sources are available in the <code>kernel-PAE-devel</code> package.
* The kernel-PAE, for use in 32-bit x86 systems with more than 4GB of RAM, or with CPUs that have a NX (No eXecute) feature.  This kernel supports both uniprocessor and multi-processor systems.  Configured sources are available in the <code>kernel-PAE-devel</code> package.


* Debugging kernel, for use in debugging some kernel issues. Configured sources are available in the <code>kernel-debug-devel</code> package.
* Debugging kernel, for use in debugging some kernel issues. Configured sources are available in the <code>kernel-debug-devel</code> package.
Line 56: Line 51:
{{Admon/note|x86 Kernel Includes Kdump|Both the x86_64 and the i686 kernels are relocatable, so they no longer require a separate kernel for kdump capability. PPC64 still requires a separate kdump kernel.}}
{{Admon/note|x86 Kernel Includes Kdump|Both the x86_64 and the i686 kernels are relocatable, so they no longer require a separate kernel for kdump capability. PPC64 still requires a separate kdump kernel.}}


{{Admon/note|x86 Kernel Includes Paravirtualization|Both the x86_64 and the i686 kernels contain [[Docs/Beats/Virtualization#Unified_Kernel_Image | paravirt_ops]] support, so they no longer require a separate kernel for running under a Xen hypervisor.}}
{{Admon/note|x86 Kernel Includes Paravirtualization|Both the x86_64 and the i686 kernels contain paravirt_ops support, so they no longer require a separate kernel for running under a Xen hypervisor.}}


{{Admon/note|Default Kernel Provides SMP|There is no separate SMP kernel available for Fedora on i386, x86_64, and ppc64.  Multiprocessor support is provided by the native kernel.}}
{{Admon/note|Default Kernel Provides SMP|There is no separate SMP kernel available for Fedora on i386, x86_64, and ppc64.  Multiprocessor support is provided by the native kernel.}}
Line 65: Line 60:
=== Preparing for Kernel Development ===
=== Preparing for Kernel Development ===


Fedora {{Template:DocsDict/BeatsVer}} does not include the kernel-source package provided by older versions since only the kernel-devel package is required now to build external modules. Configured sources are available, as described [[#Kernel_Flavors | above]].
Fedora 11 does not include the <code>kernel-source</code> package provided by older versions since only the <code>kernel-devel</code> package is required now to build external modules. Configured sources are available, as described in [[#Kernel_Flavors]].
    
    
{{Admon/important|Custom Kernel Building|For information on kernel development and working with custom kernels, refer to http://fedoraproject.org/wiki/Building_a_custom_kernel.}}
{{Admon/important|Custom Kernel Building|For information on kernel development and working with custom kernels, refer to http://fedoraproject.org/wiki/Building_a_custom_kernel.}}
Line 72: Line 67:


Refer to http://kernel.org/pub/linux/docs/lkml/reporting-bugs.html for information on reporting bugs in the Linux kernel.  You may also use http://bugzilla.redhat.com for reporting bugs that are specific to Fedora.
Refer to http://kernel.org/pub/linux/docs/lkml/reporting-bugs.html for information on reporting bugs in the Linux kernel.  You may also use http://bugzilla.redhat.com for reporting bugs that are specific to Fedora.
-->

Revision as of 18:58, 2 April 2009

Linux Kernel

This section covers changes and important information regarding the 2.6.29 based kernel in Fedora 11.

Improved Performance and Reduced Power with relatime

The relatime option is now enabled by default in Fedora 11. It improves filesystem performance and reduces power consumption.

The POSIX standard requires operating systems to keep track of the last time each file was accessed by an application or the user, and to store this timestamp as part of the filesystem data. This timestamp, called atime, is used in finding out which files are never used (to clean up the /tmp directory for example) or if a file has been looked at after it was last changed.

A significant downside to atime is that every time a file is accessed, the kernel has to write a new timestamp to the disk, at least after a few seconds of activity. These disk writes keep the disk and the link to the disk busy, which costs both performance and power.

Because some programs use atime, disabling by default is not practical. The Linux kernel has a feature called relatime, which is an effective compromise between having some of the information that atime provides, without having the disk time updated as regularly. It works by updating the atime field on disk only if the file hasn't been accessed since the last time it was accessed (to provide the new email detection capability) or when the last access was more than 1 day ago (to help programs and users clean up unused files in the /tmp directory). An improved version of relatime has been merged upstream by Fedora developers in the 2.6.30 kernel and backported to the Fedora 11 kernel.

Version

Fedora may include additional patches to the kernel for improvements, bug fixes, or additional features. For this reason, the Fedora kernel may not be line-for-line equivalent to the so-called vanilla kernel from the kernel.org web site:

http://www.kernel.org/

To obtain a list of these patches, download the source RPM package and run the following command against it:

rpm -qpl kernel-<version>.src.rpm

Changelog

To retrieve a log of changes to the package, run the following command:

rpm -q --changelog kernel-<version>

If you need a user friendly version of the changelog, refer to http://wiki.kernelnewbies.org/LinuxChanges. A short and full diff of the kernel is available from http://kernel.org/git. The Fedora version kernel is based on the Linus tree.

Customizations made for the Fedora version are available from http://cvs.fedoraproject.org.

Kernel Flavors

Fedora 11 includes the following kernel builds:

  • Native kernel, for use in most systems. Configured sources are available in the kernel-devel package.
  • The kernel-PAE, for use in 32-bit x86 systems with more than 4GB of RAM, or with CPUs that have a NX (No eXecute) feature. This kernel supports both uniprocessor and multi-processor systems. Configured sources are available in the kernel-PAE-devel package.
  • Debugging kernel, for use in debugging some kernel issues. Configured sources are available in the kernel-debug-devel package.

You may install kernel headers for all four kernel flavors at the same time. The files are installed in the /usr/src/kernels/<version>[-PAE|-xen|-kdump] -<arch>/ tree. Use the following command:

su -c 'yum install kernel{,-PAE,-xen,-kdump}-devel'

Select one or more of these flavors, separated by commas and no spaces, as appropriate. Enter the root password when prompted.

x86 Kernel Includes Kdump
Both the x86_64 and the i686 kernels are relocatable, so they no longer require a separate kernel for kdump capability. PPC64 still requires a separate kdump kernel.
x86 Kernel Includes Paravirtualization
Both the x86_64 and the i686 kernels contain paravirt_ops support, so they no longer require a separate kernel for running under a Xen hypervisor.
Default Kernel Provides SMP
There is no separate SMP kernel available for Fedora on i386, x86_64, and ppc64. Multiprocessor support is provided by the native kernel.
PowerPC Kernel Support
There is no support for Xen or kdump for the PowerPC architecture in Fedora. 32-bit PowerPC still has a separate SMP kernel.


Preparing for Kernel Development

Fedora 11 does not include the kernel-source package provided by older versions since only the kernel-devel package is required now to build external modules. Configured sources are available, as described in #Kernel_Flavors.

Custom Kernel Building
For information on kernel development and working with custom kernels, refer to http://fedoraproject.org/wiki/Building_a_custom_kernel.

Reporting Bugs

Refer to http://kernel.org/pub/linux/docs/lkml/reporting-bugs.html for information on reporting bugs in the Linux kernel. You may also use http://bugzilla.redhat.com for reporting bugs that are specific to Fedora.