linux指定cpu运行程序,linux:如何指定进程运行的CPU

【自取】最近整理的,有需要可以领取学习:

coolshell最新的文章《性能调优攻略》在”多核CPU调优”章节,提到”我们不能任由操作系统负载均衡,因为我们自己更了解自己的程序,所以,我们可以手动地为其分配CPU核,而不会过多地占用CPU0,或是让我们关键进程和一堆别的进程挤在一起。”。在文章中提到了Linux下的一个工具,taskset,可以设定单个进程运行的CPU。

同时,因为最近在看redis的相关资料,redis作为单进程模型的程序,为了充分利用多核CPU,常常在一台server上会启动多个实例。而为了减少切换的开销,有必要为每个实例指定其所运行的CPU。

下文,将会介绍taskset命令,以及sched_setaffinity系统调用,两者均可以指定进程运行的CPU实例。

1.taskset

taskset是LINUX提供的一个命令(ubuntu系统可能需要自行安装,schedutils package)。他可以让某个程序运行在某个(或)某些CPU上。

以下均以redis-server举例。

1)显示进程运行的CPU

命令taskset -p 21184

显示结果:

pid 21184’s current affinity mask: ffffff

注:21184是redis-server运行的pid

显示结果的ffffff实际上是二进制24个低位均为1的bitmask,每一个1对应于1个CPU,表示该进程在24个CPU上运行

2)指定进程运行在某个特定的CPU上

命令taskset -pc 3 21184

显示结果:

pid 21184’s current affinity list: 0-23 pid 21184’s new affinity list: 3

注:3表示CPU将只会运行在第4个CPU上(从0开始计数)。

3)进程启动时指定CPU

命令taskset -c 1 ./redis-server ../redis.conf

结合这上边三个例子,再看下taskset的manual,就比较清楚了。

OPTIONS -p, –pid operate on an existing PID and not launch a new task

-c, –cpu-list specify a numerical list of processors instead of a bitmask. The list may contain multiple items, separated by comma, and ranges. For example, 0,5,7,9-11.

2.sched_setaffinity系统调用

问题描述

sched_setaffinity可以将某个进程绑定到一个特定的CPU。你比操作系统更了解自己的程序,为了避免调度器愚蠢的调度你的程序,或是为了在多线程程序中避免缓存失效造成的开销,你可能会希望这样做。如下是sched_setaffinity的例子,其函数手册可以参考(http://www.linuxmanpages.com/man2/sched_getaffinity.2.php):

linux指定cpu运行程序,linux:如何指定进程运行的CPU

1 /Short test program to test sched_setaffinity2 * (which sets the affinity of processes to processors).3 * Compile: gcc sched_setaffinity_test.c4 * -o sched_setaffinity_test -lm5 * Usage: ./sched_setaffinity_test6 7 * Open a “top”-window at the same time and see all the work8 * being done on CPU 0 first and after a short wait on CPU 1.9 * Repeat with different numbers to make sure, it is not a10 * coincidence.11 */

12 13 #include

14 #include

15 #include

16 17 double waste_time(longn)18 {19 double res = 0;20 long i = 0;21 while(i

31 32 /bind process to processor 0/

33 if (sched_setaffinity(0, sizeof(mask), &mask)

Original: https://www.cnblogs.com/wanghuaijun/p/16437684.html
Author: 专注it
Title: linux指定cpu运行程序,linux:如何指定进程运行的CPU

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/8503/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux裸设备管理详解–

    裸设备概述 裸设备:也叫裸分区(原始分区),是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备。裸设备可以绑定一个分区,也可以绑定一个磁盘。字符设备:对…

    Linux 2022年8月13日
    0350
  • [转帖]shell 学习之until语句

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com Original: …

    Linux 2022年9月14日
    0190
  • shell中的##*,%%*问题

    假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt 可以用${ }分别替换得到不同的值:${file#/}:删掉第一个 / 及其左边的字符串…

    Linux 2022年9月14日
    0170
  • 【学习笔记】13.5 使用者的特殊 shell 与 PAM 模块

    我们前面一直谈到的大多是一般身份使用者与系统管理员 (root) 的相关操作, 而且大多是讨论关于可登陆系统的帐号来说。那么换个角度想,如果我今天想要创建的, 是一个”…

    Linux 2022年9月14日
    0420
  • 通过PowerShell实现SharePoint列表增删改

    通过 powershell 脚本实现 SharePoint 2010 列表项添加删除修改的例子。 接下来是获取列表: 当我们获取到列表后,就可以进一步获取列表项了。最直接的办法是调…

    Linux 2022年9月14日
    0250
  • Linux教程:SSH免密码登录的方法

    公司里有N台服务器需要经常登录,每次ssh的时候都要输入密码实在太不爽了,今天有空一口气全部改为公钥/私钥认证,登录再也不用任何密码了。 实现步骤: 1.在你的自己的机器下面使用s…

    Linux 2022年8月26日
    0250
  • redis的三种集群方式

    请输入博文的阅读密码: Original: https://www.cnblogs.com/heqiyoujing/p/14494037.htmlAuthor: 何其小静Title…

    Linux 2022年9月14日
    0210
  • Centos 7.x 线上安装 Kubernetes

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 安装依赖包 yum install -y conntrack ntpdate ntp ipvsadm ipset jq ipta…

    Linux 2022年9月10日
    0200
  • Linux expect 使用(免密登录跳板机)

    登录公司的跳板机是挺麻烦的事,首先要ssh,然后输入密码,有的公司可能还要动态密码,前两步操作都是固定的,所以能免去前两步的操作就会方便很多(线上出问题也能尽快登上去,免得紧张密码…

    Linux 2022年8月26日
    0250
  • linux内核设计模式

    原文来自:http://lwn.net/Articles/336224/ 选择感兴趣内容简单翻译了下: 在内核社区一直以来的兴趣是保证质量.我们需要保证和改善质量是显而易见的.但是…

    Linux 2022年8月26日
    0280
  • Linux系统(三)系统基础扫盲大全

    序言 如果大家都爱装逼,一般会偏爱使用安装最小化的liunx系统,那么你的系统就不带图形化的桌面功能,这样对于一个想装B的初学者来说,Liunx就是黑漆马虎,一望无际的黑屏,黑屏,…

    2022年8月24日
    0220
  • linux之ifconfig查看ip

    ifconfig 用于显示或设置网络设备。 设置网络设备的状态及信息 显示网络设备的设置 ifconfig [网络&#x8BBE…

    Linux 2022年9月10日
    0200
  • Linux之Nginx入门

    一、Nginx介绍 Nginx是一个开源且高性能、可靠的http web服务、代理服务。 开源:直接获取源代码 高性能:支持海量并发 可靠:服务稳定 高性能,高并发 Nginx支持…

    Linux 2022年9月10日
    0160
  • 在Linux服务器上部署 .NET Core App

    .NET Core 是微软提供的免费、跨平台和开源的开发框架,可以构建桌面应用程序、移动端应用程序、网络应用程序、物联网应用程序和游戏应用程序等。如果你是 Windows 平台下的…

    2022年8月26日
    0400
  • 玩转redis-简单消息队列

    使用 go语言基于 redis写了一个简单的消息队列源码地址使用demo redis的 list 非常的灵活,可以从左边或者右边添加元素,当然也以从任意一头读取数据 添加数据和获取…

    Linux 2022年9月14日
    0280
  • putty远程登录,no supported authentication methods available解决方法(腾讯云)

    在腾讯云的linux服务器创建了一个密钥,然后Putty无法使用远程登录了,于是在服务器上对密钥进行了解绑,但是登录时输入用户名(默认root)之后还是提示no supported…

    2022年8月11日
    0320
  • Redis连接出现Error: Connection reset by peer的问题是由于使用Redis的安全模式

    现在网上一查出现安全模式的连接,基本都是要关闭服务端的操作,其实这种方式是不正确的,最有效的解决方式是使用stunnel进行安全模式的连接。 我碰到的问题是微软云(其实我不想用!)…

    Linux 2022年9月14日
    0300
  • Linux 0.11源码阅读笔记-内存管理

    内存管理 Linux内核使用段页式内存管理方式。 内存池 物理页:物理空闲内存被划分为固定大小(4k)的页 内存池:所有空闲物理页组成内存池,以页为单位进行分配回收。并通过位图记录…

    Linux 2022年9月10日
    0240
  • Linux工作环境:CentOS7最小安装+Xfce桌面环境

    ref: https://blog.csdn.net/smstong/article/details/44802989 3.1 执行CentOS7 最小安装去官网下载CentOS-…

    Linux 2022年8月26日
    0250
  • 【基础】在CSS中绘制三角形及相关应用

    本文简要阐述了用CSS边框的方法在页面上绘制三角形,包括几种典型的三角形绘制,还介绍了几个简单的应用场景。利用边框绘制三角形方法只是众多方案中的一种,大家根据项目实际,选用最适宜项…

    Linux 2022年8月30日
    0440
  • gitee.com 码农中添加私有仓库并通过ssh链接

    mac 简单描述就三步: 1.本地生成公钥 ssh-keygen -t rsa -C “xxxxx@xxxxx.com” 后面的邮箱是你注册的邮箱 2.复制…

    2022年8月30日
    0460
  • Redmine 5 安装(windows)

    redmine刚好有需求用,装了一下linux版本,贼恶心,最后放弃了,选用了Bitnami的安装方式,一键部署: 1、下载bitnami-redmine windows版本 站点…

    2022年8月26日
    0610
  • Linux安装LibreOffice

    原文:https://www.cnblogs.com/ariesblog/p/13803031.html 1、简介 LibreOffice是一套可与其他主要办公室软件相容的套件,包…

    Linux 2022年8月24日
    0310
  • redis中key和value的存储大小限制

    String类型:一个String类型的value最大可以存储512M List类型:list的元素个数最多为2^32-1个,也就是4294967295个。 Set类型:元素个数最…

    Linux 2022年9月14日
    0140
  • linux 安装git, 找拉取源码

    一.安装 环境centos 8 yum -y install git [root@iZwz927xptl8kw8zqrmwvcZ ebs_crawler]# git –versi…

    Linux 2022年8月13日
    0370
  • 配置Samba服务器

    samba配置文件smb.conf 安装系统的时候大多会默认安装samba,如果没有安装,在CentOS上只需要运行这个命令安装即可: Samba的配置文件为/etc/samba/…

    Linux 2022年8月30日
    0220

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部