译文:ovs+dpdk中的“vHost User NUMA感知”特性
vHost User NUMA感知
- 由DPDK分配管理的内存,Device tracking memory
- 由OVS分配管理的内存,mbufs
- 由QEMU管理分配的内存,Guest memory(device and memory buffers)
sudo yum install numactl-libs
sudo yum install numactl-devel
确保编译DPDK时打开了以下的配置项
CONFIG_RTE_LIBRTE_VHOST_NUMA=y
编译DPDK
ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=
# 10001是16进制,翻译成二进制是10000000000000001,即PMD轮询线程的核心亲合设置为0号核心与16号核心两个核心,其中0号核心位于NUMA节点0,1号核心位于NUMA节点1
# 这篇文章比较奇怪,只有一个cpu socket,这个cpu型号,即E5 v3是14核心28线程的,按理来说应该只有一个numa节点啊。难道用一个cpu socket也能组两个numa节点?
在启动虚拟机之前,使用如下命令检查一个pmd设置
ovs-appctl dpif-netdev/pmd-rxq-show
在启动虚拟机之前,QEMU还没有分配内存,也肯定谈不上发消息给DPDK,DPDK就更谈不上发消息给OVS了,所以此时这时PMD线程将落在同一个NUMA节点上,显示如下:
pmd thread numa_id core_id :
port: dpdkvhostuser1 queue-id:
port: dpdkvhostuser0 queue-id:
sudo taskset 0x2 qemu-system-x86_64 -name vm0 -cpu ...
sudo taskset 0x2000 qemu-system-x86_64 -name vm1 -cpu ...
这时查看虚拟机的log,vm1会打印出如下的log:
VHOST_CONFIG: read message VHOST_USER_SET_VRING_ADDR
VHOST_CONFIG: reallocate vq from to node
VHOST_CONFIG: reallocate dev from to node
出现上面这样的log就意味着DPDK的device tracking memory被从临时住所挪到了正确的NUMA节点上
pmd thread numa_id core_id :
port: dpdkvhostuser1 queue-id:
pmd thread numa_id core_id :
port: dpdkvhostuser0 queue-id:
译文:ovs+dpdk中的“vHost User NUMA感知”特性的更多相关文章
- ovs+dpdk numa感知特性验证
0.介绍 本测试是为了验证这篇文章中提到的DPDK的NUMA感知特性. 简单来说,在ovs+dpdk+qemu的环境中,一个虚拟机牵涉到的内存共有三部分: DPDK为vHost User设备分配的De ...
- OVS+DPDK Datapath 包分类技术
本文主体内容译于[DPDK社区文档],但并没有逐字翻译,在原文的基础上进行了一些调整,增加了对TSS分类器的详细阐述. 1. 概览 本文描述了OVS+DPDK中的包分类器(datapath class ...
- OVS + dpdk 安装与实验环境配置
***DPDK datapath的OVS的安装与实验环境配置 首先肯定是DPDK的安装 0:安装必要的工具 make gcc ...
- dpdk中log的使用方法
1 log简介 dpdk中通过log系统记录相关的日志信息,每一条日志除日志内容外,还有两个附加信息,log级别和log类型.开发人员可根据级别和类型对日志信息进行过滤,只记录必要的日志.1.1 ...
- dpdk中QSBR具体实现
目录 dpdk-QSBR实现 初始化 注册与注销 上线与下线 等待静默 附录 参考 dpdk-QSBR实现 dpdk19.01提供了qsbr模式的rcu库,其具体实现在lib/librte_rcu目录 ...
- OVS DPDK VXLAN隧道处理
原文链接: OVS DPDK VXLAN隧道处理
- C++11中对类(class)新增的特性
C++11中对类(class)新增的特性 default/delete 控制默认函数 在我们没有显式定义类的复制构造函数和赋值操作符的情况下,编译器会为我们生成默认的这两个函数: 默认的赋值函数以内存 ...
- VS2015 C#6.0 中的没有实现/支持的特性
VS2015 C#6.0 中的没有实现/支持的特性 .数组增强:赋值 维数组 Int[] numbers: numbers = {2,3,4,5}; 维数组 Int[,] numbers2; ...
- 【翻译自mos文章】ABMR:在asm 环境中測试Automatic Block Recover 特性的方法
ABMR:在asm 环境中測试Automatic Block Recover 特性的方法 參考原文: ABMR: How to test Automatic Block Recover Feature ...
随机推荐
- iPhone全部设备分辨率速查
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交 ...
- Android ListPopupWindow的使用
其实像ListPopupWindow.PopupMenu的用法大致和PopupWindow的一样!就不讲了,相信用过PopupWindow的看一下就能明白. 先上个效果图: ListPopupWind ...
- erMaster插件
需求: 在做开源项目时,了解基本业务后.试图从数据库表设计来分析项目.通过visio时绘制操作繁琐,另外不能与数据库连动.于是想找一款快速绘制er图,并且能够和数据库连动的软件工具. eclipse插 ...
- 第七天:创建WBS
- Android进阶(二)https请求No peer certificate的解决方法.
在做Android客户端通过https协议访问12306,并爬取数据时,出现了如下错误: 其中有一条错误提示是 javax.net.ssl.SSLPeerUnverifiedException: No ...
- MMD4Mecanim介绍
MMD4Mecanim是一位11区大神写的为Unity游戏引擎导入MMD模型的插件,目前依然在持续更新中. 需要Unity4.0以上版本.本教程使用Unity4.6.1(下载请自行百度) 插件君首页: ...
- Android ToggleButton 实践
在android的开发过程中,对于ToggleButton的使用频率也是相当的高的,下面我就来说一下,这个组件的两种使用方式. 第一种是简单的使用,利用Toast的方式弹出提示语句 需要注意的是要想自 ...
- android binder理解
Android中的Parcel是什么 Parcel,翻译过来是"打包"的意思.打包干什么呢?是为了序列化. 如果要在进程之间传递一个整数,很简单,直接传就是行了:如果要传 ...
- 4.4、Libgdx使用方法查询运行环境相关属性
(原文:http://www.libgdx.cn/topic/46/4-4-libgdx%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95%E6%9F%A5%E8%AF%A2%E ...
- GIT版本控制 — 简介与安装 (一)
简介 GIT与SVN的区别 作为当前最流行的版本控制系统,Git和SVN的几个主要不同之处在于: (1) Git是分布式的版本控制系统,SVN是集中式的版本控制系统.Git可以先把修改提交到本地仓库中 ...