[Linux运维]常用场景模拟 -- cpu使用率模拟

[Linux运维]常用场景模拟 -- cpu使用率模拟

from http://www.cnblogs.com/zk47/p/4771105.html

1 单个核 100%:

  • 代码 kill_cpu.c
#include <stdlib.h>

int main()
{
    while(1);
    return 0;
}
  • 运行
$ gcc -o out kill_cpu.c
$  ./out
  • 看top的结果:
$ top
top - 15:44:08 up 207 days, 21:29,  2 users,  load average: 0.08, 0.13, 0.10
Tasks: 231 total,   2 running, 229 sleeping,   0 stopped,   0 zombie
Cpu0  :  1.0%us,  1.0%sy,  0.0%ni, 98.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  1.0%us,  1.0%sy,  0.0%ni, 98.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

看到某一个核的cpu已经达到了100%。这是由于这个进程被调度到了一个核上,没有使用多线程,所以自然就是一个核的cpu是100%。那么如何让所有的cpu都是100%呢。

2 让所有的核都是100%

$ for i in `seq 1 $(cat /proc/cpuinfo | grep "physical id" | wc -l)`; do ./out & done
[1] 5992
[2] 5993
[3] 5994
[4] 5995

$ top
top - 15:56:54 up 207 days, 21:42,  2 users,  load average: 1.03, 0.35, 0.17
Tasks: 234 total,   5 running, 229 sleeping,   0 stopped,   0 zombie
Cpu0  : 98.0%us,  1.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  1.0%si,  0.0%st
Cpu1  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  : 99.0%us,  1.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

我们看到所有的核都是100%,cat /proc/cpuinfo | grep "physical id" | wc -l是获取到CPU的核数,逻辑核数。这样每一个cpu上都会调度到一个死循环的进程。

  • 批量kill进程
$ ps aux | grep [.]/out | awk ‘{print $2}‘ | xargs sudo kill -9

3 让某个核 100%

$ top
top - 16:11:03 up 207 days, 21:56,  2 users,  load average: 0.81, 0.47, 0.27
Tasks: 232 total,   2 running, 230 sleeping,   0 stopped,   0 zombie
Cpu0  :  1.0%us,  2.0%sy,  0.0%ni, 94.1%id,  0.0%wa,  2.0%hi,  1.0%si,  0.0%st
Cpu1  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

我们看到当前的进程在cpu2上,可以通过taskset 命令绑定cpu

# taskset -cp 0 7368
pid 7368‘s current affinity list: 0-3
pid 7368‘s new affinity list: 0

进程实际上四个核都是可以使用的,当时由于没有使用多线程,所以只调度到了一个核上。现在经过taskset设置后,现在我们再来看看top的输出:

$ top
top - 16:14:09 up 207 days, 21:59,  2 users,  load average: 0.99, 0.71, 0.39
Tasks: 230 total,   3 running, 227 sleeping,   0 stopped,   0 zombie
Cpu0  : 98.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  1.0%hi,  1.0%si,  0.0%st
Cpu1  :  0.0%us,  1.0%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  1.0%us,  1.0%sy,  0.0%ni, 98.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

现在跑到了cpu0上了。

4 lookbusy

$ lookbusy -c 30

让所有的cpu使用率都是30%

$ lookbusy -c 75 -n 2

让两个cpu的使用率为30%

$ lookbusy --cpu-mode curve --cpu-curve-peak 14h -c 20-80

让cpu在20%-%80之间,周期为24H,在14点,即下午2点达到峰值

$ lookbusy -c 20-30 --cpu-mode curve --cpu-curve-period 60m --cpu-curve-peak 30m

让cpu以60分钟为周期,30分钟是峰值,使用率在20% - 30%之间。

时间: 2024-12-28 06:31:18

[Linux运维]常用场景模拟 -- cpu使用率模拟的相关文章

Linux运维常用命令

Linux运维常用的150个命令 命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) ls 全拼list,功能是列出目录的内容及其内容属性信息. cd 全拼change directory,功能是从当前工作目录切换到指定的工作目录. cp 全拼copy,其功能为复制文件或目录. find 查找的意思,用于查找目录及目录下的文件. mkdir 全拼mak

Linux运维常用知识(4)

linux命令无效-bash: ls: command not found 一次重启后开机,基本所有的命令都不可用,只有少数的命令可用 [[email protected] ~]# ll -bash: ls: command not found [[email protected] ~]# pwd /root [[email protected] ~]# shutdown -r now -bash: shutdown: command not found [[email protected] ~

Linux运维常用技术论坛博客网站

Linux运维常用技术论坛博客网站Linux中国开源社区: https://linux.cn/Infoq: https://www.infoq.cn/51CTO: http://www.51cto.com/掘金: https://juejin.im/CSDN: https://www.csdn.net/运维派: http://www.yunweipai.com/开源中国: https://www.oschina.net/ 原文地址:https://blog.51cto.com/13293070/

linux运维常用命令汇总

一.线上查询及帮助命令 1.man:查看命令帮助 2.help:查看linux内置命令的帮助 二.文件和目录操作命令: 1.pwd:查看当前目录 2.cd:切换目录 3.tree:以树形结构显示目录下内容 4.mkdir:创建目录 5.touch:创建空文件或改变文件的时间戳属性 6.ls:显示目录下的内容及相关属性信息 7.cp:复制文件或目录 8.mv:移动或重命名文件 9.rm:删除文件或目录 10.rmdir:删除空目录 11.ln:硬链接或软链接 12.readlink:查看符号链接文

Linux运维常用的 MySQL基础命令

MySQL基础命令 ------------- 创建MySQL库,授权. >create database mysqldb character set utf8; >grant all privileges on mysqldb.* to 'mysqluser'@'localhost' identified by 'mysqlpasswd'; >flush privileges; 创建了mysqldb数据库,创建mysqluser用户,并授权mysqldb的所有权限.__________

Linux运维常用命令详解

1.ls 文件属性:  -:普通文件  d:目录文件  b:块设备  c:字符设备文件  l:符号连接文件  p:命令管道  s:套接字文件  文件权限: 9位数字,每3位一组  文件硬链接次数  文件所属主(owner)  文件的属组(group)  文件大小(size),单位默认是字节  ls常用选项: -l:显示文件属性,ls -l=ll  -h:做相应的单位转换显示  -a:显示所有文件  -A:显示.和..以为的所有文件  -d:显示目录自身属性  -i:显示文件的缩影接点号码(ind

Linux运维常用命令总结

1.删除0字节文件 find -type f -size 0 -exec rm -rf {} \; 2.查看进程 按内存从大到小排列 PS -e   -o "%C   : %p : %z : %a"|sort -k5 -nr 3.按cpu利用率从大到小排列 ps -e   -o "%C   : %p : %z : %a"|sort   -nr 4.打印说cache里的URL grep -r -a   jpg /data/cache/* | strings | gre

linux运维常用命令及知识

1.查找当前目录下所有以.tar结尾的文件然后移动到指定目录: find . -name “*.tar” -exec mv {} ./backup/ ; 查找当前目录30天以前大于100M的LOG文件并删除. find  . -name "*.log" –mtime +30 –type f –size +100M |xargs rm –rf {} ; 写一个脚本查找最后创建时间是3天前,后缀是*.log的文件并删除. find . -mtime +3  -name "*.lo

linux运维常用知识(6)

Linux系统相关几个命令使用 last查看用户成功登录信息 /var/log/wtmp 文件记录了用户成功登录的信息.使用last可以查看 lastb 查看用户不成功登录的信息 who 查看已登录的用户 w查看登录用户的活动 e2label 查看或更改分区卷标 e2label 命令可以用来查看或修改 ext2/ext3 分区的卷标.语法为: e2label 设备 [新卷标] 下面的命令可以查看/dev/sda1 分区的卷标 [[email protected] /]# e2label /dev