Linux下调节CPU使用的几种方法

一,使用taskset充分利用多核cpu,让cpu的使用率均衡到每个cpu上

#taskset
-p,    设定一个已存在的pid,而不是重新开启一个新任务
-c,    指定一个处理,可以指定多个,以逗号分隔,也可指定范围,如:2,4,5,6-8。

1,切换某个进程到指定的cpu上
taskset -cp 3 13290

2,让某程序运行在指定的cpu上
taskset -c 1,2,4-7 tar jcf test.tar.gz test

需要注意的是,taskset -cp 3 13290在设定一个已经存在的pid时,子进程并不会继承父进程的,
因此像tar zcf xxx.tar.gz xxx这样的命令,最好在启动时指定cpu,如果在已经启动的情况下,则需要指定tar调用的gzip进程。

二,使用nice和renice设置程序执行的优先级
格式:nice [-n 数值] 命令

nice 指令可以改变程序执行的优先权等级。指令让使用者在执行程序时,指定一个优先等级,称之为 nice 值。
这个数值从最高优先级的-20到最低优先级的19。负数值只有 root 才有权力使。
一般使用者,也可使用 nice 指令来做执行程序的优先级管理,但只能将nice值越调越高。

可以通过二种方式来给某个程序设定nice值:
1,开始执行程序时给定一个nice值,用nice命令
2,调整某个运行中程序的PID的nice值,用renice命令
通常通过调高nice值来备份,为的是不占用非常多的系统资源。

例:
nice -n 10 tar zcf test.tar.gz test

由nice启动的程序,其子进程会继承父进程的nice值。

查看nice值
# nice -n -6 vim test.txt &
# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0 19427  2637  0  75   0 – 16551 wait   pts/6    00:00:00 bash
4 T     0 21654 19427  0  71  -6 – 23464 finish pts/6    00:00:00 vim

renice调整运行中程序的nice值
格式:renice [nice值] PID

三,使用ulimit限制cpu占用时间
注意,ulimit 限制的是当前shell进程以及其派生的子进程。因此可以在脚本中调用ulimit来限制cpu使用时间。
例如,限制tar的cpu占用时间,单位秒。
# cat limit_cpu.sh
ulimit -SHt 100
tar test.tar.gz test

如果tar占用时间超过了100秒,tar将会退出,这可能会导致打包不完全,因此不推荐使用ulimit对cpu占用时间进行限制。
另外,通过修改系统的/etc/security/limits配置文件,可以针对用户进行限制。

四,使用程序自带的对cpu使用调整的功能
某些程序自带了对cpu使用调整的功能,比如nginx服务器,通过其配置文件,可以为工作进程指定cpu,如下:
worker_processes  3;
worker_cpu_affinity 0001 0010 0100 1000;

这里0001 0010 0100 1000是掩码,分别代表第1、2、3、4颗cpu核心,这就使得cpu的使用比较平均到每个核心上。

Linux下调节CPU使用的几种方法

时间: 2024-11-05 16:38:38

Linux下调节CPU使用的几种方法的相关文章

Linux下查看磁盘挂载的几种方法

Linux下查看磁盘挂载的几种方法 第一种方法:df命令 # df -hT Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev tmpfs tmpfs 3.9G 4.0K 3.9G 1% /dev/shm tmpfs tmpfs 3.9G 1.2M 3.9G 1% /run tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/sda1

linux下查看mysql版本的四种方法

Linux查看MySQL版本的四种方法 1 在终端下执行 mysql -V 2 在help中查找 mysql --help |grep Distrib 3 在mysql 里查看 select version() 4 在mysql 里查看 status 原文地址:https://www.cnblogs.com/apolloren/p/9955158.html

Linux下计算字符串长度的四种方法

在linux运维场景中,经常会碰到计算字符长度的场景,这里罗列四种方法: [[email protected] ~]# char="I love you" 方法一:[[email protected] ~]# echo ${#char} 方法二:[[email protected] ~]# expr length "$char" 方法三:[[email protected] ~]# echo $char|wc -L 方法四:[[email protected] ~]

linux下软件的安装的三种方法

在CentOS或rhel下,软件包的管理方式有三种: 一种是使用rpm安装别人编译好的软件包,一种是使用yum,还有一种是使用编译安装 1.软件包简介 软件包的组成部分: 二进制程序:/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin 库文件:/lib,/usr/lib,/usr/local/lib 配置文件:/etc 帮助文件:手册(/etc/man.config),README,INSTALL(/usr/share/doc

浅谈Linux下简单排除字符串的几种方法(awk、sed、grep)

学习有一段时间了,感觉状态良好,老师所讲的课下也都能想起来,这算是学会(记下)了把. 本着对自己仁慈的起点,出了道十分简单的题考考自己,不上机,手写...结果悲剧满满 题1:有3行文本,要求排除中间行,显示第1行和第3行 模拟环境 [[email protected] tmp]# cat>>a.txt<<EOF            > aa > bb > cc > EOF [[email protected] tmp]# cat a.txt  aa bb

linux下查看线程数的几种方法

1. cat /proc/${pid}/status 2.pstree -p ${pid} 3.top -p ${pid} 再按H   或者直接输入 top -bH -d 3 -p  ${pid} top -H手册中说:-H : Threads toggle加上这个选项启动top,top一行显示一个线程.否则,它一行显示一个进程. 4.ps xH手册中说:H Show threads as if they were processes这样可以查看所有存在的线程. 5.ps -mp <PID>手

Linux下实现定时器Timer的几种方法

http://blog.csdn.net/lxmky/article/details/7669296 第六章 IO复用:select和poll函数 http://www.cnblogs.com/4tian/archive/2012/08/08/2624353.html

【转】linux下查看线程数的几种方法

1. cat /proc/${pid}/status 2.pstree -p ${pid} 3.top -p ${pid} 再按H   或者直接输入 top -bH -d 3 -p  ${pid} top -H手册中说:-H : Threads toggle加上这个选项启动top,top一行显示一个线程.否则,它一行显示一个进程. 4.ps xH手册中说:H Show threads as if they were processes这样可以查看所有存在的线程. 5.ps -mp <PID>手

linux 环境变量PATH路径的三种方法

转:http://www.jb51.net/LINUXjishu/150167.html 总结:修改1.#PATH=$PATH:/etc/apache/bin  或者#vi /etc/profile  或者#vi ~/.bash_profile 生效:如果修改了/etc/profile,source /etc/profile.注意需要重新打开终端 echo $PATH. 比如要把/etc/apache/bin目录添加到PATH中,方法有三: 1.#PATH=$PATH:/etc/apache/b