Linux内核对CPU热插拔的支持

本文详细介绍了Linux内核对CPU热插拔的支持,包括命令行设置、CPU位图及其相关问题,以及CPU热插拔的实现原理和应用场景。在Linux内核中,CPU热插拔技术允许在必要时移除或添加CPU,以实现系统资源的动态调整。文章还讨论了如何在内核中处理CPU的在线和离线操作,以及如何在用户空间响应CPU热插拔事件。
摘要由CSDN通过智能技术生成

CPU hotplug Support in Linux(tm) Kernel

 

                   Maintainers:

                   CPU Hotplug Core:

                            Rusty Russell <rusty@rustcorp.com.au>

                            Srivatsa Vaddagiri <vatsa@in.ibm.com>

                   i386:

                            Zwane Mwaikambo <zwane@arm.linux.org.uk>

                   ppc64:

                            Nathan Lynch <nathanl@austin.ibm.com>

                            Joel Schopp <jschopp@austin.ibm.com>

                   ia64/x86_64:

                            Ashok Raj <ashok.raj@intel.com>

                   s390:

                            Heiko Carstens <heiko.carstens@de.ibm.com>

 

Authors: Ashok Raj <ashok.raj@intel.com>

Lots of feedback: Nathan Lynch <nathanl@austin.ibm.com>,

              Joel Schopp jschopp@austin.ibm.com

翻译: Arethe Qin

 

引言

         系统体系结构上的现代高级特性使处理器具备了错误报告与错误更正的能力。CPU体系结构支持分区,这使得单个CPU的计算资源也能够满足虚拟机的需要。一些OEM已经支持了NUMA硬件的热插拔,物理节点的插入与移除需要处理器热插拔技术的支持。

         这种高级特性需要内核在必要时能移除正在使用的CPU.[provisioning reasons?]比如,为了RAS的需要,必须将一个执行恶意代码的CPU保持在系统执行路径之外。因此,在Linux内核中需要支持CPU热插拔技术。

         一个更具新意的CPU热插拔的应用是对SMP系统的挂起/恢复的支持。多核或HT技术使得在一台笔记本上也能运行SMP内核,但是目前的支持挂起/恢复的SMP技术还在研发中。

CPU 热插拔的一般概况

命令行设置

maxcpus=n

         在系统启动的CPU个数限制为n。如果你有4CPU,但maxcpus=2,就只能启动2CPU。但随后可以将更多的CPU加入到系统中,更多的信息可以在FAQ中获得。

additional_cpus=n (*)

         这个选项可以限制可热插拔的CPU的个数。通过这个选项,我们可以计算出系统能够支持的CPU的最大数目:

cpu_possible_map = cpu_present_map + additional_cpus

cede_offline = {"off","on"}

         在扩展的pseries平台上,此选项可以禁用/使能将一个离线处理器设为扩展的H_CEDE状态。如果没有特别说明,cede_offline默认被设为”on”

加(*)的选项仅适用于以下平台:

-ia64

         Ia64使用ACPIMADT表中被禁用的局部apic的数量来确定潜在的可热插拔CPU的数量。在实现中,仅应使用此方法获取CPU数目,决对不能依赖于上述表格中描述被禁用APIC数目的apicid的值。不能在BIOS中将这些可热插拔的CPU设为不可用的设备。参数"additional_cpus=x"可以用来描述cpu_possible_map中可热插拔的CPU

         possible_cpus=n

         [s390, x86_64]使用该选项来设置可热插拔的CPU。该选项设置了cpu_possible_map中的possible_cpu对应的位。因此,即使系统重启,也应保证此位图中的位的数量为常数。

 

CPU位图及相关的一些问题

[更多关于cpumaps及操作原语的信息,请关注include/linux/cpumask.h,该文件中包含了更多的信息。]

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
将可移动设备连入系统时,系统的后台中会依次发生如下事件: l 内核检测到新硬件插入,然后分别通知hotplug和udev。前者用来装入相应的内核模块(如usb-storage),而后者用来在/dev中创建相应的设备节点(如/dev/sda1)。 l udev创建了相应的设备节点之后,会将这一消息通知hal的守护程序(hald)。当然udev还得保证新创建的设备节点可以被普通用户访问。 l hotplug装入了相应的内核模块之后,会把这一消息通知给hald。 l hald在受到hotplug和udev发出的消息之后,认为新硬件已经正式被系统认可了。此时它会通过一系列精心编写的规则文件(就是传说中的xxx-policy.fdi),把发现新硬件的消息通过dbus发送出去,同时还会调用update-fstab或fstab-sync来更新/etc/fstab,为相应的设备节点创建适合的挂载点。 l 卷管理器会监听dbus中发现新硬件的消息。根据所插入的硬件(区分U盘和数码相机等)不同,卷管理器会先将相应的设备节点挂载到hald创建的挂载点上,然后再打开不同的应用程序。 当然,如果是在CDROM中插入光盘,过程可能比较简单。因为CDROM本身就是一个固定的硬件,无需hotplug和udev的协助: l hald会自己监视CDROM,并且将光盘托架开合的消息通过dbus发出去。 l 卷管理器负责检查CDROM中的盘片内容,进行挂载,并调用合适的应用程序。 要注意,hald的工作是从上游得到硬件就绪的消息,然后将这个消息转发到dbus中。尽管它会调用程序来更新fstab,但实际上它自己并不执行挂载的工作
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值