逻辑禁用CPU
2011-09-27 19:00
155 查看
刚刚定了短期的研究方向:多核环境下软件性能的提高,首先先做实验,用实验数据来证明普通的web应用在核不断扩展的情况下,性能提升并非线性而成下降趋势,理论上是因为核之间的通信,缓存迁移代价增大。
现在遇到的一个问题是在windows下,应用可以选择指定的核来运行,可是linux下的web应用虽然使用命令行指定了特定的cpu,但是最终运行的还是全部的核,结论是tomcat中含有线程池,操作系统以线程为调度单位,最终还是把线程分配到多个核上,放弃tomcat。另外一个是应用服务器是apache,同样是多线程,也不行,最终只能想办法禁用CPU,查了资料,linux已经提供了禁用逻辑cpu的方法。
Q:如何在逻辑上禁用一个CPU?
A: 执行如下操作。
#echo 0 > /sys/devices/system/cpu/cpuX/online
如果逻辑上的禁用成功,检查
#cat /proc/interrupts
在此文件中,将看不到被移除的CPU对应的列了。当CPU被移除后,它的online文件为0,否则为1.
#To display the current cpu state.
#cat /sys/devices/system/cpu/cpuX/online
Q:当一个CPU在逻辑上被移除时,会发生什么?
A:将会发生下面的事情,排列是无序的 J。
- 内核中的模块会接收到一个通知[notification],对应的事件是CPU_DOWN_PREPARE 或者CPU_DOWN_PREPARE_FROZEN,具体是哪个事件则依赖于CPU被移除时,是否有任务被“冷冻”,任务被冷冻的原因是正在执行挂起操作。
- 此CPU上的所有进程都被迁移到新的CPU上。新CPU通过每个进程的当前处理器设置(cpuset)进行选择,这些设置可能是所有在用CPU的子集。
- 所有定向到此CPU上的中断都被迁移到新的CPU上。
- 定时器/BH/task lets也将被迁移到新的CPU上。
- 一旦所有的服务都被迁移了,内核便调用一个体系结构相关[arch specific]的例程__cpu_disable()来执行体系结构相关的清理工作。
- 如果上面的工作也完成了,一个代表清理成功的事件将被发送,此事件为CPU_DEAD。(如果存在冰冻任务,相应的事件则为CPU_DEAD_FROZEN。也就是说在移除CPU时,系统正在执行挂起操作。)
当CPU_DOWN_PREPARE通知链被调用时,所有服务都应该被清除。当CPU_DEAD被调用时,不应在有任何东西运行于被移除的CPU上。
转自:/article/8924703.html
现在遇到的一个问题是在windows下,应用可以选择指定的核来运行,可是linux下的web应用虽然使用命令行指定了特定的cpu,但是最终运行的还是全部的核,结论是tomcat中含有线程池,操作系统以线程为调度单位,最终还是把线程分配到多个核上,放弃tomcat。另外一个是应用服务器是apache,同样是多线程,也不行,最终只能想办法禁用CPU,查了资料,linux已经提供了禁用逻辑cpu的方法。
Q:如何在逻辑上禁用一个CPU?
A: 执行如下操作。
#echo 0 > /sys/devices/system/cpu/cpuX/online
如果逻辑上的禁用成功,检查
#cat /proc/interrupts
在此文件中,将看不到被移除的CPU对应的列了。当CPU被移除后,它的online文件为0,否则为1.
#To display the current cpu state.
#cat /sys/devices/system/cpu/cpuX/online
Q:当一个CPU在逻辑上被移除时,会发生什么?
A:将会发生下面的事情,排列是无序的 J。
- 内核中的模块会接收到一个通知[notification],对应的事件是CPU_DOWN_PREPARE 或者CPU_DOWN_PREPARE_FROZEN,具体是哪个事件则依赖于CPU被移除时,是否有任务被“冷冻”,任务被冷冻的原因是正在执行挂起操作。
- 此CPU上的所有进程都被迁移到新的CPU上。新CPU通过每个进程的当前处理器设置(cpuset)进行选择,这些设置可能是所有在用CPU的子集。
- 所有定向到此CPU上的中断都被迁移到新的CPU上。
- 定时器/BH/task lets也将被迁移到新的CPU上。
- 一旦所有的服务都被迁移了,内核便调用一个体系结构相关[arch specific]的例程__cpu_disable()来执行体系结构相关的清理工作。
- 如果上面的工作也完成了,一个代表清理成功的事件将被发送,此事件为CPU_DEAD。(如果存在冰冻任务,相应的事件则为CPU_DEAD_FROZEN。也就是说在移除CPU时,系统正在执行挂起操作。)
当CPU_DOWN_PREPARE通知链被调用时,所有服务都应该被清除。当CPU_DEAD被调用时,不应在有任何东西运行于被移除的CPU上。
转自:/article/8924703.html
相关文章推荐
- Windows系统理解---核心+CPU(物理或逻辑)+内存
- 虚拟机启动ubuntu系统是提示客户机操作系统已禁用CPU,请关闭或重置虚拟机。解决方法讲解
- Linux查看物理CPU个数、核数、逻辑CPU个数
- Linux查看物理CPU个数、核数、逻辑CPU个数
- Linux下如何查看CPU型号、个数、核数、逻辑CPU数、位数、发行版本、内核信息、内存、服务器生产厂家
- CPU 被客户机操作系统禁用. 重启或关闭虚拟机电源
- Linux查看物理CPU个数、核数、逻辑CPU个数
- 查看物理CPU个数与逻辑处理器的个数
- Linux查看物理CPU个数、核数、逻辑CPU个数
- Linux查看物理CPU个数、核数、逻辑CPU个数
- linux下查看cpu物理个数和逻辑个数
- cpu 核数及逻辑数统计
- 物理CPU CPU核数 逻辑CPU 几核几线程的概念详解
- Linux下区分物理CPU、逻辑CPU和CPU核数
- linux下查看cpu物理个数和逻辑个数
- Linux查看物理CPU个数、核数、逻辑CPU个数
- linux下查看cpu物理个数和逻辑个数
- Linux下如何查看CPU型号、个数、核数、逻辑CPU数、位数、发行版本、内核信息、内存、服务器生产厂家
- 11g中高‘Resmgr:Cpu Quantum’等待事件(即使你已经禁用了resource manager)造成数据库hang住的解决办法
- linux 查看物理cpu个数、核数、逻辑cpu个数