kvm cpu的亲和性绑定配置
1.CPU的绑定配置
进程的处理器亲和性(process affinity):指将进程绑定到特定的一个或多个cpu上去执行,而不允许将进程调度到其他cpu上。
物理cpu:表示真实的cpu个数
逻辑cpu:表示所有拥有一个完整真实cpu功能的单元,一般等于所有真实cpu的核心或超线程数(ht技术)之和
例子:一个主板有cpu1,cpu2,cpu1双核不开超线程,cpu2四核其中某个核心开两个超线程,那么它有2个真实cpu,和2+(2*1+3)=7个逻辑cpu
实现:
(1)在grub.conf上使用”isolcpus=[num1],[num2]... “参数,进行cpu的隔离,使得系统启动后普通进程默认不会调度到被隔离的cpu上执行。(注:num表示逻辑cpu号码)
例子:
title CentOS (3.2.84)
root (hd0,0) kernel /vmlinuz-3.2.84 ro root=/dev/mapper/VolGroup-lv_root isolcups=4,5 rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap crashkernel=auto LANG=en rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-3.2.84.img
注:isolcups要紧跟在root后面,放在最后不行(个人测试,具体原因有待查明)
(2)查看是否隔离成功:
[root@localhost ~]# ps -eLo psr,args|awk '{if ($1==3) print $0}'
3 [kworker/u:0]
3 [migration/3]
3 [kworker/3:0]
3 [ksoftirqd/3]
3 [watchdog/3]
3 [kworker/3:1]
3 auditd
3 rpcbind
3 [flush-253:0]
3 /usr/sbin/modem-manager
3 hald-runner
3 /usr/libexec/postfix/master
[root@localhost ~]# ps -eLo psr,args|awk '{if ($1==4) print $0}'
4 [migration/4]
4 [kworker/4:0]
4 [ksoftirqd/4]
4 [watchdog/4]
4 [kworker/4:1]
[root@localhost ~]# ps -eLo psr,args|awk '{if ($1==5) print $0}'
5 [migration/5]
5 [kworker/5:0]
5 [ksoftirqd/5]
5 [watchdog/5]
5 [kworker/5:1]
[root@localhost ~]# ps -eLo psr,args|awk '{if ($1==2) print $0}'
2 [kthreadd]
2 [migration/2]
2 [kworker/2:0]
2 [ksoftirqd/2]
2 [watchdog/2]
2 [khubd]
2 [kworker/2:1]
2 [kworker/2:2]
2 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
2 pcscd
2 /sbin/mingetty /dev/tty6
ps(process status):
-e:显示所有进程
-L:用于将线程(LWP,lightweight process)也显示出来,(这里我忽略这个结果了)
-o:以用户自定义格式输出(可选参数有psr、pid、ppid等)
-o参数里面:
psr:当前分配给进程运行的处理器编号
args:表示运行进程的命令和参数
这里我们看到进程编号2、3都有很多进程,而4、5都只有5个带[]号的系统进程,所以隔离成功。
(3)启动客户机
qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img &
(4)查看vcpu线程
[root@localhost kvm_vhost]# ps -eLo pid,lwp,psr,args|grep qemu|grep -v grep
1612 1612 6 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img
1612 1614 1 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img
1612 1615 6 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img
1612 1617 11 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img
(5)绑定代表整个客户机的进程,使其运行在cpu4上
[root@localhost kvm_vhost]# taskset -p 0x10 1612
pid 1612's current affinity mask: ffcf
pid 1612's new affinity mask: 10
[root@localhost kvm_vhost]# ps -eLo pid,lwp,psr,args|grep qemu|grep -v grep
1612 1612 4 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img
1612 1614 3 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img
1612 1615 6 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img
1612 1617 11 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img
(6)绑定第一个vcpu线程,使其运行在cpu5上
[root@localhost kvm_vhost]# taskset -p 0x20 1614
pid 1614's current affinity mask: ffcf
pid 1614's new affinity mask: 10
[root@localhost kvm_vhost]# ps -eLo pid,lwp,psr,args|grep qemu|grep -v grep
1612 1612 4 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img
1612 1614 5 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img
1612 1615 6 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img
1612 1617 11 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img
同理绑定另外一个vcpu,这里taskset的语法是taskset -p [mask] pid
mask是代表处理器亲和性的掩码数字,转化为二进制,其值从最低位到最高位分别代表第一个逻辑cpu到最后一个逻辑cpu
0001 0000=0x10
0010 0000=0x20
0011 0000=0x30
所以如果使用taskset -p 0x30 1614则表示把vcpu线程运行在cpu4和cpu5上
pid表示线程的id,这里我们有三个线程怎么知道哪个是vcpu的id呢?答案是按ctrl+alt+2 到qemu monitor中使用info cpus进行查看
(7)绑定后查看在cpu4上运行的线程
[root@localhost kvm_vhost]# ps -eLo psr,args|awk '{if ($1==4) print $0}'
4 [migration/4]
4 [kworker/4:0]
4 [ksoftirqd/4]
4 [watchdog/4]
4 [kworker/4:1]
4 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img
我们看到多了一个且仅有一个用户空间qemu进程,绑定成功。
转载于:https://blog.51cto.com/linzb/1876316
相关文章:
李开复对话Yoshua Bengio:AI技术的下一个突破
7月23日,在SGInnovate主办的“深度科技(Deep Tech)造福人类”活动上,创新工场董事长兼CEO李开复与Element AI联合创始人Yoshua Bengio进行了一场对话,讨论了人工智能的未来发展。Yoshua Bengio是深度学习三大发明人之一…

单链表功能大全
单链表很全的例子,增加,删除,排序,都有了 #include <stdio.h>#include <stdlib.h>typedef struct node{int nDate;struct node *pstnext;}Node;//链表输出void output(Node *head){Node *p head->pstnext;while(N…

Access外键 级联更新、删除
工具栏-->"关系"。 打开主表和从表。 将主表的字段拖动到从表的对应字段。 (两个字段要求类型相同。 如果主表是自动编号,那么从表用长整型.) Access添加外键约束(1)"实施完整性约束"(2)"左联接"(3)"实…

20161124网络爬虫技术学习
参考书籍:《自己动手写网络爬虫》 网络爬虫的基本操作是抓取网页。 “打开”网页的过程其实就是浏览器作为一个浏览的“客户端”,向服务器端发送了一次请穷求,把服务器端的文件“抓”到本地,再进行解释,展现。更进一步…

关于何种情况下使用DataGrid、DataList或Repeater的一些讨论
作者:Scott Mitchell [概述] WEB开发自从有了基于脚本的WEB编程技术(如ASP)以来,经历了一个漫长的过程。通过使用微软的ASP.Net技术,传统的ASP中大量的、单调乏味的、重复性的编程工作成为了历史…

UDP客户端不用绑定吗IP和端口?
2019独角兽企业重金招聘Python工程师标准>>> 书上都是这么说的,UDP客户端不用绑定IP和端口,操作系统会给它自动分配端口。。。。 但是虽然没有显示绑定,但是操作系统却似乎做了些隐蔽的事情。 首先,在客户端࿰…
算法实现太难了?机器学习也需要开源软件
作者 | Soren Sonnenburg等译者 | 刘畅出品 | AI科技大本营(ID:rgznai100)导读:开源工具已经趋于成熟,这使其能构建大规模的自然场景下的系统。与此同时,机器学习领域为各种应用开发了大量强大的学习算法。但是&#x…

数据库备份定期删除程序的开发。
第一.最近客户的服务器数据库备份每天都在进行,随着数据量的不断的增加,备份也在不断的进行变大。 第二.于是一些问题就出现了客户的服务器的磁盘的空间有限,定期数据库备份文件太大而导致无法进行保存问题。 第三.从而导致了服务器宕机以及服…

Repeater控件的分页问题
作者:zhoubinmail.sdu.edu.cn以前做ASP的时间不算短,可是做ASP.NET我是个新手。前几天做项目,遇到一个问题,要求比较复杂的数据格式显示,用DataGrid非常难实现,后来改用了Repeater控件来实现。不过这样就带…
华为昇腾AI全栈知识深入解读,师资培训沙龙深圳场圆满落幕!
头图 | 视觉中国极度缺乏AI人才,已成为中国人工智能产业发展道路上的瓶颈。在国家政策的支持下,众高校初建AI专业者甚多,但高校教师应掌握哪些知识储备来传道授业,大家都是“摸着石头过河”。将高校AI人才培养教学大纲与厂商成熟落…

[转载] 信息系统项目管理师考试论文写作要点
来源:信管网 网址:http://www.cnitpm.com/pm/4323.html (1)在论文写作之前,先不要急着动笔,认真把题看清楚,选择自己熟悉的论文(考试时,一般是二选一)&#x…

POM.xml 标签详解
pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他…

DataRow的序列化问题
来源:CSDN 作者:kroll 在.net里,DataRow类型的对象是不支持序列化的,那么如果在一个需要序列化的对象中含有DataRow类型的字段该怎么办呢?呵呵,幸好Datatable是支持序列化的。因此,我们可以自定…

mass Framework event模块 v4
event.js // // 事件模块(包括伪事件对象,事件绑定与事件代理) // $.define("event",document.dispatchEvent ? "node" : "node,event_fix",function(){// $.log("已加载target模块")var rhoverH…
美国 AI 博士:什么都不会怎么学 Python?
我见过市面上很多的 Python 讲解教程和书籍,他们大都这样讲 Python 的:先从 Python 的发展历史开始,介绍 Python 的基本语法规则,Python 的 list, dict, tuple 等数据结构,然后再介绍字符串处理和正则表达式࿰…

puppet 初识
【puppet初识】学习目录 领导说saltstack太慢 机器量一旦上来,saltstack就力不从心,所以要将saltstack转向puppet。【安装背景】系统centos 6.5软件地址:http://downloads.puppetlabs.com/puppet/master: 192.168.100.10agent: 192.168.100.13因为puppe…

ColorMatrix 彩色矩阵
选择自 hbzxf 的 Blog 首先对装配脑袋给出上两片文章的友好回复,还有网友Fisherman一起探讨ColorMatrix话题表示感谢!ColorMatrix (彩色矩阵) 类位于System.Drawing.Imaging命名空间 先看看下面的代码 ColorMatrix cm newColorMatrix(newfloat[][]{ n…
一个参数一张Excel表,玩转Pandas的read_excel()表格读取
作者 | 黄伟呢来源 | 数据分析与统计学之美我觉得很有必要讲述这个文章,进行数据处理的第一步就是Python数据读取。但是你可能没想到,在进行数据读取的同时,我们其实可以配合相关参数做很多事儿,这对于后续的数据处理都是极其有帮…

Android 设计模式:(三)装饰者模式 —— 装饰对象
*利用组合(composition)和委托(delegation)可以在运行时实现继承行为的效果,动态地给对象加上新的行为。*利用继承扩展子类的行为,是在编译时静态决定的;利用组合的做法,可以在运行时…

润乾报表永久授权说明
永久授权是什么? 永久授权是运行润乾报表的带有机器特征码的没有时间限制的正式授权文件 2 机器特征码是什么? 机器特征码是为了制作永久授权,由润乾公司提供程序从用户的服务器上获取硬件和操作系统信息,生成的一个数字串&#x…
维度爆炸?Python实现数据压缩如此简单
作者 | 萝卜来源 | 早起Python(ID: zaoqi-python)用Python基于主成分分析常见的三个应用场景中,其中有一个是「数据描述」,以描述产品情况为例,比如著名的波士顿矩阵,子公司业务发展状况,区域投…

深入剖析C#的多态
作者: 天雨一、什么是多态 面向对象程序设计中的另外一个重要概念是多态性。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。可以把一组对象放到一个数组中,然后调用它们的方法,在这种场合下,多态性作用…

/usr/local/lib/libz.a: could not read symbols: Bad value(64 位 Linux)
/usr/bin/ld: /usr/local/lib/libz.a(crc32.o): relocation R_X86_64_32 against a local symbol can not be used when making a shared object; recompile with -fPIC /usr/local/lib/libz.a: could not read symbols: Bad value 一般是64 位 电脑才会出现。 解决方法如下&am…

关于BIO | NIO | AIO的讨论
关于BIO | NIO | AIO的讨论一直存在,有时候也很容易让人混淆,就我的理解,给出一个解释: BIO | NIO | AIO,本身的描述都是在Java语言的基础上的。而描述IO,我们需要从两个层面: 编程语言实现原理…

NYOJ-49 开心的小明
开心的小明 时间限制:1000 ms | 内存限制:65535 KB难度:4描述小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间…

两个硬盘和文件相关的小技巧 (C#)
取系统的硬盘分区的盘符,用API函数:GetDriveType [DllImport("kernel32.dll", EntryPoint"GetDriveType")] public static extern int GetDriveType (string nDrive); 调用:string [] dirs Environment.GetLogicalDri…
从数百个Excel中查找数据,一分钟用Python搞定
作者 | 陈熹来源 | 早起Python今天分享一个真实的办公自动化需求,大家一定要仔细阅读需求说明,在理解需求之后即可体会Python的强大。需求说明首先我们来看下今天的需求,有一份档案记录总表的Excel工作簿, 每天会根据当天日期建立…

namenode如何存储复本?
2019独角兽企业重金招聘Python工程师标准>>> namenode如何选择在哪个datanode存储复本?这里需要对可靠性,写入带宽和读取带宽进行权衡。例如,把所有复本都存储在一个节点损失的写入带宽最小,因为复制管线都是在同一节点…

EBS-使用 fnd_user_pkg API 创建用户,添加职责,修改用户
比如有一个外围支持系统,用户需要在外围系统登录之后点个link就可以登录到Oracle ERP系统中,那么我们需要先把外围系统的用户创建在Oracle ERP中,并且分配职责给他。 DECLARE a BOOLEAN; BEGIN---------------------------------------------…
万字长文总结机器学习的模型评估与调参 | 附代码下载
作者 | Sebastian Raschka翻译&整理 | Sam来源 | SAMshare目录一、认识管道流1.1 数据导入1.2 使用管道创建工作流二、K折交叉验证2.1 K折交叉验证原理2.2 K折交叉验证实现三、曲线调参3.1 模型准确度3.2 绘制学习曲线得到样本数与准确率的关系3.3 绘制验证曲线得到超参和准…