Visit Azul.com Support

Disabling the Intel Idle Driver

Looking for Zing? The Azul Zing Virtual Machine is now Azul Zulu Prime Builds of OpenJDK and part of Azul Platform Prime. Learn more.

This recommendation is good practice for latency-sensitive systems tuning.

Background:

Intel Nehalem chips can be subject to sporadic pauses in certain circumstances unrelated to Azul Platform Prime.

The issue seems to be an erratum in Nehalem and some Westmere chips related to aggressive power-saving optimizations introduced in these chips. The issue is that your system might be seen to freeze for periods as small at 1/10 of a second and as much as 30 seconds. This pause is provoked by the use of a new driver which Intel introduced and which is enabled by default in Red Hat Enterprise Linux 6.1.

It is not clear which Nehalem/Westmere chips are subject to this issue. When the issue is fixed by Intel and/or Red Hat, we will remove this check.

Reference:

Action:

If you are using a Nehalem power efficiency chip set, disable the Intel idle driver.

To disable the Intel Idle Driver, boot your system with the additional kernel flag, intel_idle.max_cstate=0.

Note
  • Disabling the Intel Idle driver, in many cases, resolves the issue of unexpected pauses. In some cases you might also need to disable C-State power saving transitions in the BIOS of your machine. Instructions for disabling C-States vary for each BIOS vendor.

  • In some situations, the kernel checks the max_cstate and if it finds max_cstate=0, it sets it to max_cstate=1. To prevent this check of the max_cstate setting:

    In the etc/zing/ directory, create a file, disable_cstate_check.

To automatically disable the Intel Idle Driver:

On RHEL/CentOS 7.x systems:

  1. Edit /etc/default/grub to add the argument, intel_idle.max_cstate=0, to GRUB_CMD_LINE_LINUX. For example: If your /etc/default/grub file contains the following:

     GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel_qaesp3/root rd.lvm.lv=rhel_qaesp3/swap crashkernel=auto vconsole.font=latarcyrheb-sun16 vconsole.keymap=us rhgb quiet "
    GRUB_DISABLE_RECOVERY="true" 

    Append: intel_idle.max_cstate=0 The resulting line should look like this:

     GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel_qaesp3/root rd.lvm.lv=rhel_qaesp3/swap crashkernel=auto vconsole.font=latarcyrheb-sun16 vconsole.keymap=us rhgb quiet intel_idle.max_cstate=0"
    GRUB_DISABLE_RECOVERY="true" 
  2. Update the grub entries, run the command.

    • On BIOS-based machines: ~]# sudo grub2-mkconfig --output=/boot/grub2/grub.cfg

    • On UEFI-based machines: ~]# sudo grub2-mkconfig --output=/boot/efi/EFI/redhat/grub.cfg

  3. Reboot the system.

  4. Verify that your running kernel has the Intel Idle driver disabled.

    View /proc/cmdline and search for the string intel_idle.max_cstate=0. If the string is present then the currently-running kernel has the Intel Idle driver disabled.

On RHEL/CentOS 5.x or 6.x systems:

  1. Edit /boot/grub/grub.conf to add the argument, intel_idle.max_cstate=0, to the kernel line for the kernel you are booting. For example: If your /boot/grub/grub.conf file contains the following:

     kernel /vmlinuz-2.6.32-122.el6.x86_64 ro \
    root=/dev/mapper/vg_bogrhel61-lv_root rd_LVM_LV=vg_bogrhel61/lv_root \
    rd_LVM_LV=vg_bogrhel61/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM \
    LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us \
    crashkernel=auto rhgb quiet 

    Append: intel_idle.max_cstate=0. The resulting line should look like this:

     kernel /vmlinuz-2.6.32-122.el6.x86_64 ro \
    root=/dev/mapper/vg_bogrhel61-lv_root rd_LVM_LV=vg_bogrhel61/lv_root \
    rd_LVM_LV=vg_bogrhel61/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM \
    LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us \
    crashkernel=auto rhgb quiet intel_idle.max_cstate=0 
  2. Reboot the system.

  3. Verify that your running kernel has the Intel Idle driver disabled.

    View /proc/cmdline and search for the string intel_idle.max_cstate=0. If the string is present then the currently-running kernel has the Intel Idle driver disabled.

On Ubuntu systems:

  1. Edit /etc/default/grub to add the argument, intel_idle.max_cstate=0, to GRUB_CMDLINE_LINUX. For example: If your /etc/default/grub file contains the following:

     GRUB_CMDLINE_LINUX=" " 

    Append: intel_idle.max_cstate=0. The resulting line should look like this:

     GRUB_CMDLINE_LINUX="intel_idle.max_cstate=0" 
  2. Update the grub entries, run the command.

     $ sudo update-grub 
  3. Reboot the system.

  4. Verify that your running kernel has the Intel Idle driver disabled.

    View /proc/cmdline and search for the string intel_idle.max_cstate=0. If the string is present then the currently-running kernel has the Intel Idle driver disabled.

On SUSE systems:

  1. Edit /boot/grub/menu.lst to add the argument, intel_idle.max_cstate=0, to the kernel line for the kernel you are booting. For example: If your /boot/grub/menu.lst file contains the following:

     title SUSE Linux Enterprise Server 11 SP2 - 3.0.13-0.27
    root (hd0,1)
    kernel /boot/vmlinuz-3.0.13-0.27-default root=/dev/sda2 resume=/dev/sda1 splash=silent crashkernel=128M-:64M showopts vga=0x314
    initrd /boot/initrd-3.0.13-0.27-default 

    Append: intel_idle.max_cstate=0. The resulting line should look like this:

     title SUSE Linux Enterprise Server 11 SP2 - 3.0.13-0.27
    root (hd0,1)
    kernel /boot/vmlinuz-3.0.13-0.27-default root=/dev/sda2 resume=/dev/sda1 splash=silent crashkernel=128M-:64M showopts vga=0x314 \
    intel_idle.max_cstate=0
    initrd /boot/initrd-3.0.13-0.27-default 
  2. Reboot the system.

  3. Verify that your running kernel has the Intel Idle driver disabled.

    View /proc/cmdline and search for the string intel_idle.max_cstate=0. If the string is present then the currently-running kernel has the Intel Idle driver disabled.