4. Kernel-Related Updates

4. Kernel-Related Updates

General Kernel Updates
  • iostat now outputs statistics regarding the status and I/O performance of partitions.

  • I/O accounting in this release now outputs more comprehensive core statistics. This was accomplished by implementing the use of ru_inblock and ru_outblock, which are already used upstream.

  • show_mem() output now includes the total number of pagecache pages. This makes debugging information sent to the console and to /var/log/messages more useful, particularly during out-of-memory kills.

  • The O_ATOMICLOOKUP flag is now removed. This flag is not used by any current userspace daemons. Further, the bit normally used by O_ATOMICLOOKUP is used by another flag (O_CLOEXEC); as such, O_ATOMICLOOKUP was removed to avoid any conflicts arising from this bit share.

  • The kernel now exports process limit information to /proc/[PID]/limits (where [PID] is the process ID).

  • The parameter TCP_RTO_MIN can now be configured to a maximum of 3000 milliseconds. TCP_RTO_MIN was not a tunable kernel parameter in previous releases.

    This update allows more TCP/IP flexibility, and enables applications to restart a transmission in accordance with wireless transmissions (for example, mobile phone transmission rates).

    You can configure the TCP_RTO_MIN parameter through ip route. For example, to set TCP_RTO_MIN to the maximum of 3000 milliseconds, use:

    ip route change [route] dev eth0 rto_min 3s

    For more information about ip route, refer to man ip.

  • The udp_poll() function is now implemented. This update reduces the likelihood of false positive returns from the system call select().

  • You can now enable/disable 32-bit inode numbers. To do so, use the kernel parameter nfs.enable_ino64=. Setting nfs.enable_ino64=0 will instruct the NFS client to return 32-bit inode numbers for readdir() and stat() system calls (instead of the full 64-bit inode numbers).

    By default, this kernel parameter is set to return the actual 64-bit inode numbers.

  • You can now restrict NFS writes to low memory. To do so, set /proc/sys/vm/nfs-writeback-lowmem-only to 1 (this is set to 0 by default).

    Previous releases did not include this capability. This caused NFS read performance degradation in some cases, particularly when the system encountered high volumes of NFS read/write requests.

  • You can now set whether mapped file pages are used in dirty_ratio and dirty_background_ratio calculations. To do so, set /proc/sys/vm/write-mapped to 1 (this is set to 0 by default).

    Setting /proc/sys/vm/write-mapped to 1 allows you to implement faster NFS read performance. Note, however, that doing so exposes you to out-of-memory risks.

  • CIFS is now updated to version 1.50c. This update applies several enhancements and bug fixes, including the capability to mount OS/2 shares.

  • Core dump masking is now supported. This allows a core dump process to skip the shared memory segments of a process when creating a core dump file. This feature also allows you to select whether or not to dump anonymous shared memory for each process.

    When a process is dumped, all anonymous memory is written to a core file as long as the size of the core file isn't limited. In some cases, you may want to prevent some memory segments (such as huge shared memory) from being dumped. Conversely, you may also want to save file-backed memory segments into a core file, in addition to individual files.

    For these purposes, you can use /proc/[pid]/coredump_filter to specify which memory segments of the [pid] process is dumped. coredump_filter is a bitmask of memory types. If a bitmask is set, memory segments of the corresponding memory type are dumped.

    The following memory types are supported:

    • bit 0 — anonymous private memory

    • bit 1 — anonymous shared memory

    • bit 2 — file-backed private memory

    • bit 3 — file-backed shared memory

    To set a bitmask for [pid], set the corresponding bitmask to /proc/[pid]/coredump_filter. For example, to prevent a dump of all shared memory segments attached to process 1111, use:

    echo 0x1 > /proc/1111/coredump_filter

    The default value of coredump_filter is 0x3, which specifies that all anonymous memory segments are dumped. Also, note that regardless of the bitmask status, MMIO pages (such as frame buffers) are never dumped and vDSO pages are always dumped

    When a new process is created, the process inherits the bitmask status from its parent. As such, Red Hat recommends that you set up coredump_filter before the program runs. To do so, echo the desired bitmask to /proc/self/coredump_filter before running the program.

Kernel Updates Specific To This Platform
  • Oprofile now supports event-based profiling on Greyhound hardware.

  • AMD ATI SB800 SATA controller is now supported.

  • AMD ATI SB600 and SB700 SATA controllers that use the 40-pin IDE cable are now supported.

  • 64-bit direct memory access (DMA) is now supported on the AMD ATI SB700.

  • The PCI device IDs necessary for supporting Intel ICH10 have been added.

  • CPU frequency values greater than 32-bit are now supported on Power5 and Power6 systems.

  • The kernel available for this architecture now contains an updated alignment interrupt handler. This update ensures that new Power6 floating-point "load and store" instructions are processed correctly, avoiding any incorrect alignment interruptions.