当前位置: 首页 > news >正文

解决dpdk reserve的内存返回的虚拟地址和iova地址一样的问题

1. 背景:

在ubuntu20.04上用dpdk API: 

rte_memzone_reserve_aligned("L1L2_PCIE_MEMORY", 1.5*1024*1024*1024,
                         rte_socket_id(), RTE_MEMZONE_1GB|RTE_MEMZONE_IOVA_CONTIG, 
                         RTE_CACHE_LINE_SIZE);

分配1.5G 内存.

服务器和mvl PCIE卡通过这个内存进行交互.

正常情况下:

服务器使用dpdk返回的虚拟地址,  mvl pcie卡上用dpdk 返回的iova地址, 然后调用DPI 的API 可以实现数据的上传和下载.

期望的虚拟地址和iova地址是不一样的. 但是实际上打印是一样的:

这种情况下表示把虚拟地址作为iova 地址. 二者一样.

那传给mvl pcie卡的其实是一个虚拟地址. 导致mvl 卡把数据push到了未知的地址.

因为这个功能在之前测试过的,两个地址不应该一样, 所以打印日志看下哪不一样: 加参数: --log-level=eal,8

对比之前的日志和现在不行的日志, 如下:

 发现出错时用的iova 模式是VA 模式, 这个情况下就会让iova, va一样. 在服务器上的app 操作的其实是虚拟地址.mvl 卡把数据push到了未知的地址(应该用物理地址但用成了虚拟地址),  这样服务器和mvl pcie卡就不能通信.

开始认为是ubuntu grub下打开了iommu 功能导致的.但是查看了其他服务器也是这样的.

猜想应该是可以配置的. 因为之前看dpdk 源码中是有初始iova模式的.

baidu了下, 发现以下参数可以改变iova模式:

参考DPDK内存管理——iova地址模式(虚拟/ 物理 地址)_light_forest的博客-CSDN博客

加入 --iova-mode=pa 参数后, dpdk分配出来的地址就一样了. 打印如下:

后边再执行pcie 卡上的程序, 两个程序可以正常通信 了.

相关文章:

解决dpdk reserve的内存返回的虚拟地址和iova地址一样的问题

1. 背景: 在ubuntu20.04上用dpdk API: rte_memzone_reserve_aligned("L1L2_PCIE_MEMORY", 1.5*1024*1024*1024, rte_socket_id(), RTE_MEMZONE_1GB|RTE_MEMZONE_IOVA_CONTIG, RTE_CACHE_LINE_SIZE); 分配1.5…...

JQuery实现小项目

博主简介:想进大厂的打工人博主主页:xyk:所属专栏: JavaEE初阶 目录 文章目录 一、JQuery是什么 二、JQuery项目 2.1 猜数字 2.2 表白墙 2.3 聚合搜索 2.4 计算器 一、JQuery是什么 jQuery是一个快速、简洁的JavaScript框架,是继Prototype之…...

【C++/嵌入式笔试面试八股】一、23.结构体指针 | 指针和引用 | 万能指针 | 野指针

结构体指针 28.将结构体作为参数向函数中传递 传递方式有两种: 值传递地址传递,利用操作符 -> 可以通过结构体指针访问结构体属性//学生结构体定义 struct student {//成员列表string name; //姓名int age; //年龄int score; //分数 };//值传递...

【C++初阶】类和对象(下)构造函数(初始化列表) + explicit关键字 +static成员

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…...

chatgpt赋能python:Python代码怎么用?一个10年编程经验工程师的实践总结

Python代码怎么用?一个10年编程经验工程师的实践总结 如果你正在学习Python或已经是一名Python开发者,你需要知道如何正确地使用Python代码以实现项目需求。在本文中,我将分享我的10年Python编程经验,并介绍一些关于如何使用Pyth…...

【Android定制】修改BUILD_AGO_GMS = no 和 BUILD_GMS=no属性

文章目录 概要名词解释细节小结 概要 在安卓底层源码中,有这样的两个属性,这两个第一眼看上去都像是带不带谷歌,BUILD_AGO_GMS no和BUILD_GMSno有什么区别?? 如果带了谷歌,那么这个设备就差不多是国外定…...

第十章:C语言的调试

很多小伙伴刚开始听到C语言的调试,这是个啥,表示很怀疑,敲代码不就是直接就是干嘛,结果很多小白们,一运行错误多的数都数不过来。就开始这改改,那删删,莫名奇妙就运行成功了。到最后都不知道到底…...

【20】SCI易中期刊推荐——计算机信息系统工程电子与电气(中科院3区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…...

初识网络之UDP网络套接字

目录 一、UDP中的socket编程常用接口 1. socket的含义 2. sockaddr结构 3. socket编程中UDP协议常用接口介绍 3.1 创建socket文件描述符&#xff08;TCP/UDP、客户端 服务器&#xff09; 3.2 绑定端口号&#xff08;TCP/UDP&#xff0c;服务器&#xff09; 3.3 接收数据…...

数据中心末端配电的数字化方案及设备选型

普通PDU和智能PDU有什么区别&#xff1f; 机架安装配电盘或机架配电单元 (PDU) 是一种配备许多插座的设备&#xff0c;可将电力分配给位于数据中心机架或机柜内的服务器、存储设备和网络设备。领先的分析公司 IHS 将它们分为两大类&#xff1a; 1) 基本 PDU 提供可靠的配电。 2…...

k8s入门实战-Service

k8s入门实战-Service Service 和 Label Service 通过一组 Pod 路由通信。Service 是一种抽象&#xff0c;它允许 Pod 死亡并在 Kubernetes 中复制&#xff0c;而不会影响应用程序。在依赖的 Pod (如应用程序中的前端和后端组件)之间进行发现和路由是由Kubernetes Service 处理…...

Python量化交易:策略创建运行流程

学习目标 目标 知道策略的创建和运行知道策略的相关设置知道RQ的策略运行流程应用 无 1、体验创建策略、运行策略流程 1.1 创建策略 1.2 策略界面 2、 策略界面功能、运行介绍 2.1 一个完整的策略需要做的事情 选择策略的运行信息&#xff1a; 选择运行区间和初始资金选择回…...

企业该如何自主构建信息化管理系统?

实践证明&#xff0c;企业自己搭建的信息化系统灵活性更高&#xff0c;更能契合企业的需求。 我们可以借助零代码平台自主搭建&#xff0c;既提供了各个应用系统的标准化功能&#xff0c;又支持自定义搭建&#xff0c;可根据企业自身需求修改。 全球领先的信息技术研究和顾问公…...

linuxOPS基础_操作系统概述

计算机发展史 第一台计算机是1946 年2 月14 日诞生日&#xff0c;第一台名称ENIAC。体积一间屋子的大小&#xff0c;重量高达28t。 第一代&#xff1a;1946 – 1958 > 12 年 &#xff08;电子管&#xff09; 第二代&#xff1a;1958 – 1964 > 6 年 &#xff08;晶体管…...

常用adb命令记录下

adb root 获取root 权限(以root权限运行ADB守护程序)adb remount 以读写方式重新挂载设备的文件系统adb reboot 重启设备adb devices 查看当前连接设备adb get-serialno 获取设备的序列号adb backup 备份设备的应用程序和数据adb bugreport 收集设备的当前状态信息以进行故障排…...

Etcdctl 命令v3

一、v3必须导出环境变量 export ETCDCTL_API3 二、查看版本 etcdctl version 三、写入键 1.基本 etcdctl put foo bar 2.绑定租约 etcdctl put foo bar --leasexxxx 四、获取键 1.基本 etcdctl get foo 2.按十六进制获取 etcdctl get foo --hex 3.只读取键值 et…...

第二十一章 开发Productions - ObjectScript Productions - 延迟发送

文章目录 第二十一章 开发Productions - ObjectScript Productions - 延迟发送延迟发送 生成事件日志条目在 ObjectScript 中生成事件日志条目 第二十一章 开发Productions - ObjectScript Productions - 延迟发送 延迟发送 除了同步&#xff08;等待&#xff09;和异步&…...

用vue-full-calendar实现酒店预定管理展示

文章目录 前言一、关于vue-full-calendar二、使用步骤1. 引入库2. 使用库3. 开始编码4. 实际效果图展示5. 点击弹窗展示6. 弹窗展示效果图 总结 前言 近些天有位做酒店业务朋友问到我&#xff0c;有没有前端比较好用的预定日历查看插件&#xff0c;实际上我也没有研究过&#…...

DirectX12环境配置(1)

开发环境&#xff1a;visual studio 2022 第一种配置DirectX12环境得方式。首先创建一个c得空项目&#xff0c;然后创建一个main.cpp文件。把下面这串代码放进去&#xff0c;先不用管这串代码什么意思&#xff0c;后面会逐行逐句得讲解&#xff0c;因为我们创建得是空项目&am…...

Go-异常处理(defer recover panic)

系列文章目录 提示&#xff1a;goi语言基础文章 GO-异常处理 文章目录 系列文章目录前言一、关键字含义defer /recover 实现异常捕获和处理应用场景deferrecoverpanic 二、实例实例讲解上述几种情况 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; …...

Movie_Recommend推荐算法对比:ALS、ItemCF与热门推荐全面解析

Movie_Recommend推荐算法对比&#xff1a;ALS、ItemCF与热门推荐全面解析 【免费下载链接】Movie_Recommend 基于Spark的电影推荐系统&#xff0c;包含爬虫项目、web网站、后台管理系统以及spark推荐系统 项目地址: https://gitcode.com/gh_mirrors/mo/Movie_Recommend …...

HY-Motion 1.0作品集展示:12类日常动作+8类专业运动生成效果

HY-Motion 1.0作品集展示&#xff1a;12类日常动作8类专业运动生成效果 1. 引言&#xff1a;当文字能驱动骨骼 想象一下&#xff0c;你正在为一个游戏角色设计一套连贯的格斗动作&#xff0c;或者为一个虚拟主播编排一段自然的舞蹈。传统流程需要动画师一帧一帧地调整骨骼&am…...

精选 Skills 推荐:10 个让 Coding Agent 如虎添翼的Skills + 优质来源分享

精选 Skills 推荐&#xff1a;10 个让 Coding Agent 如虎添翼的Skills 优质来源分享 本篇是 Vibecoding 系列教程 的工具导向专题篇。 前篇&#xff1a;进阶教程&#xff08;一&#xff09;&#xff1a;MCP Skills 让 coding agent 有自己的工具系列合集&#xff1a;Vibecodi…...

PyAutoGUI实战:给你的旧软件做个‘外挂’,自动完成游戏日常或软件测试

PyAutoGUI实战&#xff1a;用Python打造智能自动化助手&#xff0c;解放双手提升效率 在数字时代&#xff0c;重复性任务如同无形的枷锁&#xff0c;消耗着我们的时间和精力。想象一下&#xff0c;每天打开电脑后&#xff0c;你需要重复点击十几个相同的按钮&#xff0c;填写相…...

模拟前端电路设计:高精度信号处理核心技术解析

1. 模拟前端电路设计概述 模拟前端电路是连接真实世界与数字系统的关键桥梁&#xff0c;它负责将传感器采集的微弱模拟信号进行调理、放大和转换&#xff0c;使其能够被后续的数字系统正确处理。作为一名从事硬件设计十余年的工程师&#xff0c;我处理过从医疗设备到工业控制的…...

Kandinsky-5.0-I2V-Lite-5s代码实例:Python调用API与前端交互实操解析

Kandinsky-5.0-I2V-Lite-5s代码实例&#xff1a;Python调用API与前端交互实操解析 1. 模型简介与核心能力 Kandinsky-5.0-I2V-Lite-5s是一款轻量级图生视频模型&#xff0c;它能够将静态图片转化为动态视频内容。只需提供一张首帧图片和简单的运动描述&#xff0c;模型就能生…...

GNU Radio滤波器设计实战指南:从原理到高性能实现

GNU Radio滤波器设计实战指南&#xff1a;从原理到高性能实现 【免费下载链接】gnuradio GNU Radio – the Free and Open Software Radio Ecosystem 项目地址: https://gitcode.com/gh_mirrors/gn/gnuradio GNU Radio作为开源软件定义无线电生态系统&#xff0c;提供了…...

Real-ESRGAN-GUI:如何用AI双引擎将模糊图片一键变高清

Real-ESRGAN-GUI&#xff1a;如何用AI双引擎将模糊图片一键变高清 【免费下载链接】Real-ESRGAN-GUI Lovely Real-ESRGAN / Real-CUGAN GUI Wrapper 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN-GUI 还在为模糊的老照片、低分辨率的动漫图片而烦恼吗&…...

落地生产级推理引擎!高性能GPU算子生成系统Kernel-Smith发布

在当今的大模型时代&#xff0c;高性能 GPU 算子&#xff08;Kernel&#xff09;是将硬件算力转化为实际吞吐量的核心引擎。无论是支撑 Megatron、vLLM、LMDeploy 等底层系统&#xff0c;还是驱动 AI for Science (AI4S) 的复杂科学计算&#xff0c;高效的算子实现都是释放硬件…...

补个基础:闭包和this指针调用

//定义了一个普通的函数 const search()>{console.log(search) } //定义了一个防抖函数 function debounce(fn,delay){let timer nullreturn (...args)>{clearTimeout(timer)timersetTimeout(()>{//为什么要apply&#xff0c;改变指针指向fn.apply(this,args)console.…...