动态切换 Linux 使用的 CPU 数量

标签: 技巧 CPU | 发表时间:2011-10-22 10:41 | 作者:投稿/转载 李帅
出处:http://wowubuntu.com

由于要测试一些代码,其运行结果会受到多核并行的影响,所以希望能够调整使用的 CPU 数量。网络上之前看到的方法是在内核的启动参数上添加一个 maxcpus,但是如果这样的话每切换一次都要重启一次,是在太麻烦了。想想 Linux 应该是很强大的,所以可以动态修改 CPU 数量才对。

无意中看到 Linux 代码的 Documentation 文件夹下有个文件叫做 cpu-hotplug.txt,于是就看了一下,发现可以在 /sys/devices/system/cpu 看到代表各 CPU 的文件夹按照 cpuX 的命名方式,如 cpu0、cpu1、cpu2 等。这些文件夹里面有一个 online 文件,如果其值为0则禁用该 CPU,如果为1则启用该 CPU。注意,这里需要 root 权限哦。

因为我只要在单核和多核之间切换,所以我写了两个脚本放在 /usr/local/sbin 里面:

singlecore

#!/bin/bash
cpus_dir="/sys/devices/system/cpu"
for cpu in $(ls "$cpus_dir" | grep 'cpu[0-9]\+')
do
	cpu_online="$cpus_dir/$cpu/online"
	if [[ -e "$cpu_online" && $(cat $cpu_online) = 1 ]]
	then
		echo 0 > "$cpu_online"
	fi
done

multicore

#!/bin/bash
cpus_dir="/sys/devices/system/cpu" 
for cpu in $(ls "$cpus_dir" | grep 'cpu[0-9]\+')
do
	cpu_online="$cpus_dir/$cpu/online"
	if [[ -e "$cpu_online" && $(cat $cpu_online) = 0 ]]
	then
		echo 1 > "$cpu_online"
	fi
done

之后需要切换的时候,只要运行 sudo singlecore 或者 sudo multicore 就可以了~

顺便说一句,我当时在想,如果我禁用了所有的 CPU 会怎么样呢?结果发现 cpu0 是没有 online 文件的,也就是 Linux 至少保证一个 CPU 处于可用状态。

--感谢 upsuper 的投稿,原文:http://blog.upsuper.org/dynamic-modify-cpu-number/

# 本文采用CC协议进行授权,转载本文请注明本文链接。/ 0 条留言
-
Twitter / 微博 / 问答 / 投稿 / 加入我们 wow0slx6bcs721xo1udcc
- 高性价比 Ubuntu VPS / 本站架设于 PhotonVPS / 定制 Ubuntu T-Shirt
相关文章:
Indicator-CPUfreq : 监视和改变 CPU 速率
庆祝 Linux 20 周岁
Linux 20周年开发者庆典活动!
11 月份 Linux 市场占有率升至 5%
译文:Linux 与 BSD 之间的 10 个不同之处
无觅

相关 [切换 linux cpu] 推荐:

动态切换 Linux 使用的 CPU 数量

- 李帅 - Wow! Ubuntu
由于要测试一些代码,其运行结果会受到多核并行的影响,所以希望能够调整使用的 CPU 数量. 网络上之前看到的方法是在内核的启动参数上添加一个 maxcpus,但是如果这样的话每切换一次都要重启一次,是在太麻烦了. 想想 Linux 应该是很强大的,所以可以动态修改 CPU 数量才对. 无意中看到 Linux 代码的 Documentation 文件夹下有个文件叫做 cpu-hotplug.txt,于是就看了一下,发现可以在 /sys/devices/system/cpu 看到代表各 CPU 的文件夹按照 cpuX 的命名方式,如 cpu0、cpu1、cpu2 等.

从Java视角理解CPU上下文切换(Context Switch)

- - 淘宝网通用产品团队博客
从Java视角理解系统结构连载, 关注我的微博( 链接)了解最新动态在高性能编程时,经常接触到多线程. 起初我们的理解是, 多个线程并行地执行总比单个线程要快, 就像多个人一起干活总比一个人干要快. 然而实际情况是, 多线程之间需要竞争IO设备, 或者竞争锁资源,导致往往执行速度还不如单个线程. 在这里有一个经常提及的概念就是: 上下文切换(Context Switch).

Linux下操纵CPU曲线绘制心形

- TheLover_Z - 博客园-首页原创精华区
不久之前看了「编程之美」,里面有在windows下操纵CPU绘制正弦曲线的示例程序. 思路很简单,但是需要知道几个windows的API函数. 刚开始我想尝试在windows下绘制心形,不过没能做到,原因是CPU曲线是CPU利用率和时间构成的函数的关系,心形是一个封闭图形,不可能是一个函数,所以至少需要两条CPU曲线才能绘制(这需要你的机器为双核或多核或者多个CPU),然而windows的任务管理器,我没能找到将两条CPU曲线绘制在同一图表下的方法,所以没能成功.

Linux中模拟诊断Oracle高CPU占用

- - CSDN博客推荐文章
1,在一个session中模拟CPU高使用率,如下:. 2,在shell窗口用top命令查看CPU使用情况:                                                                                                            .

Linux中常用的监控CPU整体性能的工具

- - CSDN博客编程语言推荐文章
Linux中常用的监控CPU整体性能的工具有:. top:命令是一个优秀的交互式实用工具,用于监视性能. 它提供关于整体Linux性能的几个概要行,但是报告进程信息才是top真正的长处. 可以广泛自定义进程显示,也可以添加字段,按照不同指标排序进程列表,甚至从top注销进程. 显示的信息同ps接近,但是top可以了解到CPU消耗,可以根据用户指定的时间来更新显示.

Linux HotSopt虚拟机GC线程的CPU占用率

- - ImportNew
下面的问题将会检验你有关Linux系统上的Java程序的垃圾回收和High CPU排错的知识. 在过度调用GC或及CPU占用率过高的时候,这种排错技术是至关重要的. 假设你没有使用像是 Compuware dynaTrace或者JVisualVMware这样先进的监视工具. 有关于这些工具的使用教程将会在以后发布,但是请先确保自己掌握了基础的排错原则.

Linux下java进程CPU占用率高-分析方法

- - Linux - 操作系统 - ITeye博客
今天登陆同事的一台gateway 开始以为hive环境登陆不了了,仔细一看看了下是因为机器很卡,我每次等几秒没登陆就ctrl+c了,看了下是有个java进程cpu:340.4%  mem:14.6%. 一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用.

Linux下如何查看高CPU占用率线程

- - C++博客-首页原创精华区
在 Linux 下 top 工具可以显示 cpu 的平均利用率(user,nice,system,idle,iowait,irq,softirq,etc.),可以显示每个 cpu 的利用率. 但是无法显示每个线程的 cpu 利用率情况,. 这时就可能出现这种情况,总的 cpu 利用率中 user 或 system 很高,但是用进程的 cpu 占用率进行排序时,没有进程的 user 或 system 与之对应.

java问题导致linux负载、cpu过高如何定位

- - CSDN博客推荐文章
1.用top找到最耗资源的进程id. 2.查询最消耗资源的java进程. 3.打印java 栈 信息. 4.将耗资源的javaPID转换为16进制(5920转1720<16进制>  去百度找 :十进制转十六进制). PID 对应 堆栈中的nid(16进制). 去stack.txt 中查找nid=1720的问题.

(转)简单的 Linux下的CPU性能瓶颈分析

- - jackyrong
Linux下的CPU性能瓶颈分析. 以夕 发表于:2013-09-29 浏览:2455次 评论:0次 所属分类: 性能测试.         在对notify执行性能测试时发现cpu负载突然飙高,cpu利用率高达95%. 这时候就要排查是哪些线程消耗了cpu,并从代码层找到占用cpu的“罪魁祸首”.