linux下指定进程运行的CPU
来源:互联网 发布:adsafe mac 编辑:程序博客网 时间:2024/04/29 04:16
如果你觉得比内核的进程调度器更了解你的进程,不想过多的占用CPU0,更高的缓存命中,那么可以设置进程运行在某个或某些CPU上。
redis是单进程模型,为了充分利用多核服务器性能,可以指定不同的redis实例运行在不同CPU上,这样也可以减少进程上下文切换。
方法有两种:
一、使用命令taskset
在RedHat系linux中,可以sudo yum privodes taskset查找taskset在哪个包中,如下所示:
util-linux-2.23.2-26.el7.x86_64 : A collection of basic system utilities
Repo : @anaconda
Matched from:
Filename : /usr/bin/taskset
可以知道是在util-linux-2.23.2-26.el7.x86_64,那么sudo yum install util-linux就可以装上。
a.显示进程运行在哪些CPU上
[zhujiang@localhost ~]$ ps aux | grep redis
root 2884 0.1 0.2 37260 5372 ? Ssl Mar10 3:53 /usr/local/bin/redis-server *:6379
zhujiang 17266 0.0 0.0 112648 956 pts/0 S+ 05:57 0:00 grep --color=auto redis
[zhujiang@localhost ~]$ taskset -p 2884
pid 2884's current affinity mask: f
显示结果f表示二进制的1111,每一个1表示一个CPU,说明这个进程运行在4个CPU上,我这台虚拟机正是四个CPU。
b.指定进程运行在某CPU上
[zhujiang@localhost ~]$ sudo taskset -pc 2 2884
pid 2884's current affinity list: 0-3
pid 2884's new affinity list: 2
[zhujiang@localhost ~]$
注:2表示该进程只会运行在第3个CPU上(从0开始计数)
c.进程启动时指定CPU
[zhujiang@localhost ~]$ taskset -c 0 /usr/local/bin/redis-server
二、使用sched_setaffinity
#include <stdio.h>#include <time.h>#include <stdlib.h>#define __USE_GNU#include <sched.h>int main(){ int cpu_id = 1; cpu_set_t mask; CPU_ZERO(&mask); CPU_SET(cpu_id, &mask); if (sched_setaffinity(0, sizeof(mask), &mask) < 0) { perror("set affinity"); return -1; } struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); int now = ts.tv_sec; int end = now + 20; //忙计算10秒 while (now < end) { clock_gettime(CLOCK_MONOTONIC, &ts); now = ts.tv_sec; } CPU_ZERO(&mask); cpu_id = 3; CPU_SET(cpu_id, &mask); if (sched_setaffinity(0, sizeof(mask), &mask) < 0) { perror("set affinity"); return -1; } clock_gettime(CLOCK_MONOTONIC, &ts); now = ts.tv_sec; end = now + 10; while (now < end) { clock_gettime(CLOCK_MONOTONIC, &ts); now = ts.tv_sec; } return 0;}
- linux下指定进程运行的CPU
- linux下让进程运行在指定的cpu上
- linux下让进程运行在指定的cpu上
- linux下让进程运行在指定的cpu上
- linux下让进程运行在指定的cpu上
- linux:如何指定进程运行的CPU
- linux:如何指定进程运行的CPU
- linux 下进程和线程指定CPU运行
- 指定进程运行的CPU
- 在linux下查看指定进程的所运行的CPU核
- 在linux下查看指定进程的所运行的CPU核
- 在linux下查看指定进程的所运行的CPU核
- linux下让进程运行在指定的cpu上(一)
- linux下让进程运行在指定的cpu上(二)
- SMP系统linux下的进程绑定指定cpu
- 让进程运行在指定的CPU
- 如何指定进程运行的CPU
- 如何指定进程运行的CPU
- ZJU1042-W‘s Cipher
- Http头 Range、Content-Range【断点续传】
- Unity3D Shader
- centos设置当前系统时间命令
- 系统调用sendto
- linux下指定进程运行的CPU
- UIBarButtonItem 、UITabBarItem 改变字体,大小,图片
- Hadoop集群搭建
- HDU 3394Railway( tarjan)
- C#程序开发中经常遇到的10条实用的代码
- hihocoder 1115 诺滋多姆
- 蓝桥杯 城市建设 (最小生成树)卡鲁斯卡尔
- 性能测试
- Cocos2d-x 3.x开发中Visual Studio下libcurl库配置