kvm cpu的亲和性绑定配置

2023-10-27

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进行查看

wKiom1g2tdeCkj_CAAAQlf4_uzk411.png-wh_50


(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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

kvm cpu的亲和性绑定配置 的相关文章

随机推荐

  • 固定资产可视化智能管理系统

    什么是资产管理 企业一般有设备 工具 IT通讯 仪器 载具 文档 家具和一些其他的资产 比如某个制造企业现状 共计约有8000个资产分布存在于30个区域 包括实验室 办公室和工厂 其中每年新入资产预估为2000个 报废资产预计1800个 在
  • Python 3D函数图形投影到2D坐标轴上

    1 contourf函数命令 cmap matplotlib cm jet norm matplotlib colors Normalize vmin min np array sol vmax max np array sol plt c
  • 统计学习方法 第七章习题答案

    习题7 1 题目 比较感知机的对偶形式与线性可分支持向量机的对偶形式 解答 感知机 原始形式 min w b
  • linux:linux基础命令(一)

    前言 为什么要学linux 为了运维 项目上线 所以要了解linux操作系统 什么是LNMP linux nginx mysql php小常识 一个用Linux Shell编写的可以为CentOS RadHat Debian Ubuntu
  • 进程和子进程

    进程和子进程 父子进程有独立的数据段 堆 栈 共享代码段 Linux中每个进程都有4G的虚拟地址空间 独立的3G用户空间和共享的1G内核空间 fork 创建的子进程也不例外 子进程资源的由来 1G内核空间既然是所有进程共享 因此fork 创
  • input type=“file”上传文件(一)

    使用input标签 type file 的时候就可以上传文件 为input标签添加change事件 调用函数
  • qt 添加动作 (QAction)

    Qt 5 mainwindow h ifndef MAINWINDOW H define MAINWINDOW H include
  • 3Dgame_homework7

    3D游戏 作业7 智能巡逻兵 要求 游戏设计要求 程序设计要求 提示 相关理论 实现过程与代码 智能巡逻兵 要求 游戏设计要求 创建一个地图和若干巡逻兵 使用动画 每个巡逻兵走一个 3 5 个边的凸多边型 其位置数据是相对地址 即每次确定下
  • 静态库调用动态库或者静态库(Cmake例子)

    1 静态库无论调用动态库还是静态库都只需要include库的头文件 2 要在调用该静态库的地方添加库引用 并设置路径 结论 其实静态库调用动态库或者静态库 只是在用到库方法的地方把该方法添加到LIB当中 真正使用的地方才会把这些库LINK起
  • flutter_blue优化(FlutterBlue.instance.scan搜索重复、搜索结果处理、更新之前保存缓存数据、保存连接成功的设备)

    1 搜索列表优化 FlutterBlue instance scan搜索重复 搜索结果处理 更新之前保存缓存数据 2 保存连接过的设备 3 十进制转十六进制 4 写入十六进制数据 json scan dart 实体类 主要是使用flutte
  • Spring Boot是什么?它的优点是什么?

    Spring Boot是什么 它的优点是什么 Spring Boot是一个基于Spring框架的快速开发框架 它旨在简化Spring应用程序的开发过程和部署流程 Spring Boot提供了自动化配置和约定大于配置的方式 使开发人员可以专注
  • JavaWeb--- Filter(过滤器)学习

    Filter 过滤器 处理中文乱码 登录验证 1 xml依赖
  • 教你用Python做图像处理

    质量 速度 廉价 选择其中两个 提到图像处理第一个想到的库就是PIL 全称Python Imaging Library Python 图像处理类库 它提供了大量的图像操作 比如图像缩放 裁剪 贴图 模糊等等 很多时候它需要配合numpy库一
  • 无盘服务器怎么看使用情况,无盘服务器回写盘查看

    无盘服务器回写盘查看 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 由于某些机型的服务器没有配备SDI卡 或者其他服务器
  • 代码随想录一刷-Day09

    LeetCode27 移除元素 public int removeElement int nums int val if nums length 0 return 0 双指针 int slow 0 fast 0 while fast lt
  • Dynamic 356 OP 9.0版本 同服务器环境还原DB导入组织报错

    环境 Dynamic 365 9 0 6 9 PRD和UAT组织在同一套服务器环境中 操作 1 备份PRD数据库 还原到UAT数据库 2 在CRM部署管理器中导入UAT组织数据库 提示错误如下 12 31 12 Verbose Databa
  • 代码简洁3 —— 注释

    前段时间在组织代码review时 提到代码可读性问题时 很多人的第一反应竟然是多添加注释 而我始终觉得注释只能是锦上添花 而不能雪中送炭 再多的注释也改变不了代码逻辑组织混乱的现实 反而过多的注释会加重代码阅读的时间 什么也比不上放置良好的
  • 大端模式(big-endian)与小端模式(little-endian)

    参考自 大端模式与小端模式 大端模式是指数据的低位保存在内存的高地址中 而数据的高位保存在内存的低地址中 小端模式是指数据的低位保存在内存的低地址中 而数据的高位保存在内存的高地址中 大小端模式的由来 在计算机系统中 我们是以字节为单位的
  • 【Caffe】官方例程之R-CNN物体检测

    R CNN is a state of the art detector that classifies region proposals by a finetuned Caffe model For the full details of
  • kvm cpu的亲和性绑定配置

    1 CPU的绑定配置 进程的处理器亲和性 process affinity 指将进程绑定到特定的一个或多个cpu上去执行 而不允许将进程调度到其他cpu上 物理cpu 表示真实的cpu个数 逻辑cpu 表示所有拥有一个完整真实cpu功能的单