介绍

针对cpu密集型的任务,消耗cpu较高,最好设置cpu亲和度,以提高任务执行效率,避免cpu进行上下文切换,浪费不必要的性能。

特定任务(进程/线程)需要独占一个cpu核心并且不想让其他任务(进程/线程)使用该核心。

默认情况下,linux系统任务(进程/线程)可以使用任意一颗核心,要想把指定的cpu孤立出来,不让普通进程使用,需要修改grub参数

修改grub配置文件

以debian为例,默认grub参数配置文件为/etc/default/grub

找到GRUB_CMDLINE_LINUX行,

我这里这一行默认为

GRUB_CMDLINE_LINUX="text console=tty0 console=ttyS0,115200n8"

想要孤立11-23号cpu,可以这么写

GRUB_CMDLINE_LINUX="text isolcpus=11,12,13,14,15,16,17,18,19,20,21,22,23 nohz_full=11,12,13,14,15,16,17,18,19,20,21,22,23 rcu_nocbs=11,12,13,14,15,16,17,18,19,20,21,22,23 console=tty0 console=ttyS0,115200n8"

所有的核心必须用逗号分隔开来写11,12,13,14,15,16,17,18,19,20,21,22,23,不能写为11-23

生成新的grub引导文件

修改/etc/default/grub文件后,需要重新生成grub引导文件

使用命令

update-grub

或者

update-grub2

或者

grub-mkconfig -o /boot/grub/grub.cfg

上面3个命令都可以,其实就是重新生成了/boot/grub/grub.cfg文件,

重启系统生效,系统默认就不会再使用11-23号cpu了

使用孤立cpu

我们要想使用这些cpu,可以在命令行中使用taskset命令

比如:

正常的命令运行为

python xx.py

这样运行,一定不会使用11-23号cpu,

如果想使用11-15号cpu运行该进程,可以写为

taskset -c 11,12,13,14,15 python xx.py

或者

taskset -c 11-15 python xx.py

除了在命令行中用taskset命令,也可以使用库函数在代码中设置cpu亲和度来使用这些cpu

注意

在docker容器中,这些已经被孤立的cpu仍然可以被使用,

比如上面我们孤立了11-23号cpu,在docker容器中运行命令默认也是可以使用这些cpu的

当然,我们肯定不希望docker也可以使用这些cpu,因为这些cpu是供特定服务(进程)使用的,

在创建docker容器时,通过参数--cpuset-cpus指定容器只能使用哪些cpu,可以达到将11-23号cpu孤立的目的。

linux系统设置cpu孤立的更多相关文章

  1. linux系统设置服务开机启动3种方法,Linux开机启动程序详解

    linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图     方法2:利用命令行chkconfig命令进行设置 简要说明 ...

  2. Linux 查看CPU,内存,硬盘 !转

    Linux 查看CPU,内存,硬盘 本文转自:http://hi.baidu.com/mumachuntian/item/a401368dbe8a66cab07154e8 1 查看CPU 1.1 查看 ...

  3. Linux系统cpu 100%修复案例

    Linux系统cpu 100%修复案例 ​阿里云技术支持团队:完颜镇江 案例背景: Linux主机连续三天CPU% 处理思路: 1.  登录服务器查看/var/log/messages+/var/lo ...

  4. linux系统CPU,内存,磁盘,网络流量监控脚本

    前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat ...

  5. Linux查看CPU和内存使用情况 【转】

    Linux查看CPU和内存使用情况 在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 ...

  6. Linux系统CPU相关信息查询

    Linux系统CPU相关信息查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.lscpu常用参数介绍 1>.查看帮助信息 [root@node105 ~]# lscpu ...

  7. 查看linux服务器CPU相关

    查看linux服务器CPU相关: 1.查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 2.查看 ...

  8. Linux服务器CPU、内存、磁盘空间、负载情况查看python脚本

    [本文出自天外归云的博客园] 网上搜,东拼西凑,组装了一个可以查Linux服务器CPU使用率.内存使用率.磁盘空间占用率.负载情况的python脚本. 脚本内容如下: # -*- coding:utf ...

  9. Linux 监测CPU常用的工具sar iostat vmstat top uptime

    sar -u 1 2 iostat -c 1 2 vmstat 1 2 top uptime Linux监控CPU整体性能常用的工具有: # mpstat: mpstat 不但能查看所有CPU的平均信 ...

随机推荐

  1. Java的数组,栈,队列

    import java.util.Arrays; public class Array<E> { private E[] data; private int size; //构造函数,传入 ...

  2. Nodejs+Express 搭建 web应用

    简单的记录下关于如何使用nodejs+Express 极速搭建一个web应用. 项目所需,要用到nodejs,那就去学咯.简单的看了下 七天学会NodeJS,Node.js 教程.发现其实好简单的,分 ...

  3. 写给 Android 开发的小程序布局指南,Flex 布局!

    一.序 Hi,大家好,我是承香墨影! 最近在做小程序,验证一些方向,开发效率确实很快,就是各种微信的审核有点费劲,但是总归是有办法解决的. 想要开发一款小程序,其实和我们正常写一款 App 类似,你需 ...

  4. Redis学习笔记~分布锁的使用

    回到目录 分布锁主要用在多进程共同访问同一个资源时候,用来保持同一时间段只能有一个进程执行,同时避免了并发冲突的出现,这在很多场景都会用到,像秒杀库存,抽奖库存,多操作者处理一家公司等. void T ...

  5. Docker系列之入门篇

    Dcoker是什么? 概述 Docker 是世界领先的软件容器平台.开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题.运维人员利用 Docker 可以在隔离容器中并行运行 ...

  6. oracle学习笔记(一) oracle 体系结构简单介绍以及创建表空间和用户

    体系结构 oracle数据服务器由oracle数据库和实例组成 实例由后台进程和内存结构组成 内存结构由共享池,数据缓冲区,日志缓存区 Oracle数据库是通过表空间来存储物理表的,一个数据库实例可以 ...

  7. web.xml的<url-parttern>的匹配规则

    <url-parttern>顾名思义是对url(统一资源定位符)的一种匹配,是对“http:........."地址的匹配,但是会减去应用上下文,就是你的web程序的名字,如果你 ...

  8. npm --save-dev --save 的区别

    我们在使用npm install 安装模块或插件的时候,有两种命令把他们写入到 package.json 文件里面去,比如: --save-dev(-D) --save(-S) 在 package.j ...

  9. 002. https通信(CA证书认证 + 密钥商定 )

    服务端与客户端建立https通信的过程: 一.认证:客户端第一次访问服务端时,要求服务端证明自己可被信任 1.证书:由服务端申请.第三方CA颁发的,存放在服务端的证书: 证书包含:服务端的公钥.服务端 ...

  10. js将一个数组分成多个数组

    1,将数组array分成长度为subGroupLength的小数组并返回新数组 function group(array, subGroupLength) { let index = 0; let n ...