Red Hat Enterprise Linux 6, what’s in it for VMs?

redhat-logoLast Wednesday 10th of Nov, Red Hat released their Enterprise Linux 6 (RHEL) server operating system. RHEL 6 has improvements for use on vSphere platform, VMware paravirtual devices vmxnet3 and pvscsi are supported out of the box, and in fact are default net and SCSI devices for RHEL 6 guest on vSphere 4.1. Other improvements include tickless kernel, transparent hugepages and ext4 file system, to name few. I will explain these three features, what they mean and how they help you in your virtual datacenter.

Tickless kernel

Red Hat Enterprise 6 release notes has good explanation of tickless kernel so I’ll quote it

Previously the kernel implemented a timer that periodically queried the system to check if there were any outstanding tasks to process. Consequently, the CPU would remain in an active state, consuming unnecessary power. The kernel in Red Hat Enterprise Linux 6 enables the new tickless kernel feature, replacing the periodic timer interrupts with on-demand interrupts. The tickless kernel allows a CPU to enter longer sleep states when idle, and wake only when a task is queued for processing.

Guest VM with a tickless kernel has lower CPU overhead than kernel with fixed interrupt timer. When there is nothing to process VM with a tickless kernel may remain longer periods in halted state by hypervisor. Previous RHEL version 5 has default interrupt timer rate of 1000 Hz (per CPU) which means that RHEL 5 VM needs to be woken up 1000 times in a second just to check if there is any interrupts waiting to be processed, not very efficient use of virtualized resources. High interrupt timer rate is good for desktop OS which should have good responsiveness but bad for a virtualized server OS which should have as low overhead as possible.

Transparent hugepages and Extended Page Table age bits

Transparent hugepages feature is a big improvement for Linux kernel memory management, previously hugepages (also known as large pages) had to be manually configured in fixed amounts, on RHEL 6 Linux kernel will dynamically allocate hugepages to application requesting them. If memory utilization is too high or memory is badly fragmented which prevents hugepages being allocated, kernel will assign smaller 4k pages instead.

Virtual machines running memory intensive applications will see performance improvement when using hugepages because reducing number of memory pages will reduce TLB misses, this leads to that CPU can spend more time executing your application instead of wasting time on expensive page walks. Most common applications utilizing hugepages are JVM and SQL databases.

Extended Page Table age bits is a feature to allow hugepages to be split in 4k pages so that those can be paged to disk, hugepages are always locked in physical memory and cannot be paged out.

EXT4 file system

Default file system in RHEL 6 is switched from ext3 to ext4. Maybe the most interesting improvement for me in ext4 is support for block discard (TRIM) which allows storage arrays supporting this feature to reclaim unused space from thin provisioned LUNs. I would very much like to see thin VMDKs to shrink also, but unfortunately it is not possible in current vSphere versions without executing a storage vMotion. Other improvements include better scaling for very large amount of files, faster file system checking and more robust journaling.

Full release notes of Red Hat Enterprise Linux 6 can be seen here.

Leave a Reply