linux poison RSS
linux poison Email

How to do CPU hotplug in Linux

WHY DO WE NEED HOTPLUG CPU?

As Linux becomes more prominent in the enterprise arena in mission critical data center type installations, features that support RAS (Reliability, Availability and Serviceability) are required. Since modern processor architectures provide advanced error and detection technology, offering the possibility to add and remove CPUs becomes extremely important for RAS support.

However CPU hotplug is not just useful to replace defective components it can also be applied in other contexts to increase the productivity of a system. For example on a single system running multiple Linux partitions, as the workloads change it would be extremely useful to be able to move CPUs from one partition to the next as required without rebooting or interrupting the workloads.This is known as dynamic partitioning.  Other applications include Instant Capacity on Demand where extra CPUs are present in a system but aren't activated. This is useful for customers that predict growth and therefore the need for more computing power but do not have at the time of purchase the means to afford.

First Get the list of CPU present in your system
    # cd /sys/devices/system/cpu
    # ls -l
      total 0
      drwxr-xr-x  10 root root 0 Sep 19 07:44 .
      drwxr-xr-x  13 root root 0 Sep 19 07:45 ..
      drwxr-xr-x   3 root root 0 Sep 19 07:44 cpu0
      drwxr-xr-x   3 root root 0 Sep 19 07:44 cpu1
      drwxr-xr-x   3 root root 0 Sep 19 07:44 cpu2
      drwxr-xr-x   3 root root 0 Sep 19 07:44 cpu3
      drwxr-xr-x   3 root root 0 Sep 19 07:44 cpu4
      drwxr-xr-x   3 root root 0 Sep 19 07:44 cpu5
      drwxr-xr-x   3 root root 0 Sep 19 07:44 cpu6
      drwxr-xr-x   3 root root 0 Sep 19 07:48 cpu7
Under each directory you would find an "online" file which is the control file to logically online/offline a processor.

Do the following to put a specific CPU offline:
    # echo 0 > /sys/devices/system/cpu/cpu7/online
Once the logical offline is successful, check
    # cat /proc/interrupts
You should now not see the CPU that you removed. Also online file will report the state as 0 when a cpu if offline and 1 when its online.

To display the current cpu state: # cat /sys/devices/system/cpu/cpu7/online



2 comments:

Anonymous said...

What are the requirements for CPU-hotplug support? Is there a kernel flag that must be set or is it a BIOS setting? I suppose not every mainboard supports hotplugging.

The next linux box available to me doesn't have the "online" file available.

Unknown said...

Enable CPU hotplug support in kernel

"Processor type and Features" -> Support for Hotpluggable CPUs

Make sure that you have CONFIG_HOTPLUG, and CONFIG_SMP turned on as well.

You would need to enable CONFIG_HOTPLUG_CPU for SMP suspend/resume support as well.

Post a Comment

Related Posts with Thumbnails