基于 openEuler 22.03 LTS SP1 構建 DPDK 22.11.8 開發環境指南

基于 openEuler 22.03 LTS SP1 構建 DPDK 22.11.8 開發環境指南

本文詳細介紹了在 openEuler 22.03 LTS SP1 操作系統上構建 DPDK 22.11.8 開發環境的完整流程。DPDK 20 版本之后采用 meson+ninja 的編譯方式,與早期版本有所不同。本文內容也可作為其他 Linux 發行版構建 DPDK 環境的參考。

環境準備

安裝編譯依賴包

VERSION=$(uname -r)
sudo yum install -y gcc gcc-c++ make numactl-devel git tar kernel-devel-$VERSION

安裝 Meson 構建工具

sudo pip3 install meson

安裝 Pyelftools

sudo pip3 install pyelftools

安裝 re2c

wget https://github.com/skvadrik/re2c/releases/download/1.0.3/re2c-1.0.3.tar.gz
tar -zxvf re2c-1.0.3.tar.gz
cd re2c-1.0.3/
./configure
make && sudo make install
cd ..

安裝 Ninja 構建系統

wget https://github.com/ninja-build/ninja/archive/refs/tags/v1.11.0.tar.gz
tar -zxvf ninja-1.11.0.tar.gz
cd ninja-1.11.0/
python3 configure.py --bootstrap
sudo cp ninja /usr/bin/
cd ..

注意:如果系統沒有 python 命令,只有 python3,請使用 python3 configure.py --bootstrap

在這里插入圖片描述

DPDK 安裝與配置

下載并解壓 DPDK

wget http://fast.dpdk.org/rel/dpdk-22.11.8.tar.xz
tar -xvf dpdk-22.11.8.tar.xz
cd dpdk-stable-22.11.8

編譯安裝 DPDK

meson setup build
cd build
ninja
sudo ninja install  # 默認安裝到 /usr/local/lib64
sudo ldconfig

可選:如需指定安裝目錄,可在 meson 步驟中添加 --prefix=/your/custom/path 參數。

環境變量配置

export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH

建議:將上述環境變量添加到 /etc/profile 文件中以實現永久生效。

驅動配置

加載vfio驅動

modprobe vfio enable_unsafe_noiommu_mode=1 # 在iommu不可用時,以非安全模式加載vfio
modprobe vfio-pci 
lsmod|grep vfio  # 檢查是否成功

有關非安全模式加載vfio,也通過如下的方式修改:

echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode

關于vfio模塊的加載,可以設置為開機自動加載,這樣就不用每次手動加載了,具體方式如下:

# 配置 VFIO 內核模塊的加載參數
sudo tee /etc/modprobe.d/vfio.conf <<EOF 
options vfio enable_unsafe_noiommu_mode=1
options vfio-pci disable_vga=1
EOF#系統啟動時自動加載 vfio 內核模塊。
echo "vfio" | sudo tee /etc/modules-load.d/vfio.conf
echo "vfio-pci" | sudo tee -a /etc/modules-load.d/vfio.conf

編譯并加載igb_uio驅動

在dpdk22版本中,igb_uio不再被包含在dpdk源代碼包中,如果需要則要額外編譯安裝。具體如下:

#下載
git clone http://dpdk.org/git/dpdk-kmods#編譯
cd dpdk-kmods/linux/igb_uio
make#加載
modprobe uio
insmod igb_uio.ko intr_mode=legacy
depmod -a

同樣的,igb_uio 也可以實現開機加載:

# 需要將編譯出.ko 文件拷貝至如下的目錄
cp dpdk-kmods/linux/igb_uioigb_uio.ko /lib/modules/$(uname -r)/kernel/drivers/uio/echo "options igb_uio intr_mode=legacy" | sudo tee /etc/modprobe.d/igb_uio.conf
echo "igb_uio" | sudo tee /etc/modules-load.d/igb_uio.conf

系統配置

配置大頁

cd dpdk-stable-22.11.8
python3  ./usertools/dpdk-hugepages.py  -p 2M --setup 1G

綁定網卡到 VFIO 驅動

python3 ./usertools/dpdk-devbind.py --bind=vfio-pci 0000:02:01.0

測試驗證

編譯并運行 helloworld 示例

有兩種編譯方式,默認是共享庫版本,還有一種靜態庫版本。

共享庫:

cd helloworld
make
./build/helloworld

靜態庫版本

cd helloworld
make static
./build/helloworld

運行結果:

在這里插入圖片描述

出現上述的結果,說明成功了。

總結

本文提供了在 openEuler 22.03 LTS SP1 上構建 DPDK 22.11.8 開發環境的完整指南,包括依賴安裝、DPDK 編譯、驅動配置和測試驗證等步驟。按照本指南操作后,您將獲得一個完整的 DPDK 開發環境,可用于后續的 DPDK 應用開發。
如果您咋配置過程中遇到了問題,歡迎評論區交流。謝謝!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82716.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82716.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82716.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微服務網關SpringCloudGateway+SaToken鑒權

目錄 概念 前置知識回顧 拿到UserInfo 用于自定義權限和角色的獲取邏輯 最后進行要進行 satoken 過濾器全局配置 概念 做權限認證的時候 我們首先要明確兩點 我們需要的角色有幾種 我們需要的權限有幾種 角色 分兩種 ADMIN 管理員 &#xff1a;可管理商品 CUSTIOMER 普通…

Spring Cloud Gateway 中自定義驗證碼接口返回 404 的排查與解決

Spring Cloud Gateway 中自定義驗證碼接口返回 404 的排查與解決 問題背景 在一個基于 Spring Cloud Gateway WebFlux 構建的微服務項目中&#xff0c;新增了一個本地驗證碼接口 /code&#xff0c;使用函數式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…

Dify中聊天助手、agent、文本生成、chatflow、工作流模式解讀分析與對比

一次解讀 1. 聊天助手 (Chat Assistant) 情景定位 (Situation): 你需要創建一個可以與用戶進行多輪對話的AI應用&#xff0c;例如客服機器人、信息查詢助手、或一個特定領域的虛擬專家。目標明確 (Purpose): 核心目標是理解并響應用戶的連續提問&#xff0c;維持對話的上下文…

使用Node.js分片上傳大文件到阿里云OSS

阿里云OSS的分片上傳&#xff08;Multipart Upload&#xff09;是一種針對大文件優化的上傳方式&#xff0c;其核心流程和關鍵特性如下&#xff1a; 1. ?核心流程? 分片上傳分為三個步驟&#xff1a; 初始化任務?&#xff1a;調用InitiateMultipartUpload接口創建上傳任務…

C++ if語句完全指南:從基礎到工程實踐

一、選擇結構在程序設計中的核心地位 程序流程控制如同城市交通網絡&#xff0c;if語句則是這個網絡中的決策樞紐。根據ISO C標準&#xff0c;選擇結構占典型項目代碼量的32%-47%&#xff0c;其正確使用直接影響程序的&#xff1a; 邏輯正確性 執行效率 可維護性 安全邊界 …

【大模型LLM學習】Flash-Attention的學習記錄

【大模型LLM學習】Flash-Attention的學習記錄 0. 前言1. flash-attention原理簡述2. 從softmax到online softmax2.1 safe-softmax2.2 3-pass safe softmax2.3 Online softmax2.4 Flash-attention2.5 Flash-attention tiling 0. 前言 Flash Attention可以節約模型訓練和推理時間…

python打卡day46@浙大疏錦行

知識點回顧&#xff1a; 不同CNN層的特征圖&#xff1a;不同通道的特征圖什么是注意力&#xff1a;注意力家族&#xff0c;類似于動物園&#xff0c;都是不同的模塊&#xff0c;好不好試了才知道。通道注意力&#xff1a;模型的定義和插入的位置通道注意力后的特征圖和熱力圖 內…

JavaSec-SPEL - 表達式注入

簡介 SPEL(Spring Expression Language)&#xff1a;SPEL是Spring表達式語言&#xff0c;允許在運行時動態查詢和操作對象屬性、調用方法等&#xff0c;類似于Struts2中的OGNL表達式。當參數未經過濾時&#xff0c;攻擊者可以注入惡意的SPEL表達式&#xff0c;從而執行任意代碼…

SpringCloud——OpenFeign

概述&#xff1a; OpenFeign是基于Spring的聲明式調用的HTTP客戶端&#xff0c;大大簡化了編寫Web服務客戶端的過程&#xff0c;用于快速構建http請求調用其他服務模塊。同時也是spring cloud默認選擇的服務通信工具。 使用方法&#xff1a; RestTemplate手動構建: // 帶查詢…

【深入學習Linux】System V共享內存

目錄 前言 一、共享內存是什么&#xff1f; 共享內存實現原理 共享內存細節理解 二、接口認識 1.shmget函數——申請共享內存 2.ftok函數——生成key值 再次理解ftok和shmget 1&#xff09;key與shmid的區別與聯系 2&#xff09;再理解key 3&#xff09;通過指令查看/釋放系統中…

探索 Java 垃圾收集:對象存活判定、回收流程與內存策略

個人主頁-愛因斯晨 文章專欄-JAVA學習筆記 熱門文章-賽博算命 一、引言 在 Java 技術體系里&#xff0c;垃圾收集器&#xff08;Garbage Collection&#xff0c;GC&#xff09;與內存分配策略是自動內存管理的核心支撐。深入探究其原理與機制&#xff0c;對優化程序內存性能…

hbase資源和數據權限控制

hbase適合大數據量下點查 https://zhuanlan.zhihu.com/p/471133280 HBase支持對User、NameSpace和Table進行請求數和流量配額限制&#xff0c;限制頻率可以按sec、min、hour、day 對于請求大小限制示例&#xff08;5K/sec,10M/min等&#xff09;&#xff0c;請求大小限制單位如…

大數據-275 Spark MLib - 基礎介紹 機器學習算法 集成學習 隨機森林 Bagging Boosting

點一下關注吧&#xff01;&#xff01;&#xff01;非常感謝&#xff01;&#xff01;持續更新&#xff01;&#xff01;&#xff01; 大模型篇章已經開始&#xff01; 目前已經更新到了第 22 篇&#xff1a;大語言模型 22 - MCP 自動操作 FigmaCursor 自動設計原型 Java篇開…

Delphi 實現遠程連接 Access 數據庫的指南

方法一&#xff1a;通過局域網共享 Access 文件&#xff08;簡單但有限&#xff09; 步驟 1&#xff1a;共享 Access 數據庫 將 .mdb 或 .accdb 文件放在局域網內某臺電腦的共享文件夾中。 右鍵文件夾 → 屬性 → 共享 → 啟用共享并設置權限&#xff08;需允許網絡用戶讀寫&a…

VR視頻制作有哪些流程?

VR視頻制作流程知識 VR視頻制作&#xff0c;作為融合了創意與技術的復雜制作過程&#xff0c;涵蓋從初步策劃到最終呈現的多個環節。在這個過程中&#xff0c;我們可以結合眾趣科技的產品&#xff0c;解析每一環節的實現與優化&#xff0c;揭示背后的奧秘。 VR視頻制作有哪些…

文件上傳/下載接口開發

接口特性 文件傳輸接口與傳統接口的核心差異體現在數據傳輸格式&#xff1a; 上傳接口采用 multipart/form-data 格式支持二進制文件傳輸下載接口接收二進制流并實現本地文件存儲 文件上傳接口開發 接口規范 請求地址&#xff1a;/createbyfile 請求方式&#xff1a;POST…

深入學習RabbitMQ隊列的知識

目錄 1、AMQP協議 1.1、介紹 1.2、AMQP的特點 1.3、工作流程 1.4、消息模型 1.5、消息結構 1.6、AMQP 的交換器類型 2、RabbitMQ結構介紹 2.1、核心組件 2.2、最大特點 2.3、工作原理 3、消息可靠性保障 3.1、生產端可靠性 1、生產者確認機制 2、持久化消息 3.…

【計算機網絡】NAT、代理服務器、內網穿透、內網打洞、局域網中交換機

&#x1f525;個人主頁&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收錄專欄&#x1f308;&#xff1a;計算機網絡 &#x1f339;往期回顧&#x1f339;&#xff1a;【計算機網絡】數據鏈路層——ARP協議 &#x1f516;流水不爭&#xff0c;爭的是滔滔不息 一、網絡地址轉…

[論文閱讀] 人工智能 | 大語言模型計劃生成的新范式:基于過程挖掘的技能學習

#論文閱讀# 大語言模型計劃生成的新范式&#xff1a;基于過程挖掘的技能學習 論文信息 Skill Learning Using Process Mining for Large Language Model Plan Generation Andrei Cosmin Redis, Mohammadreza Fani Sani, Bahram Zarrin, Andrea Burattin Cite as: arXiv:2410.…

C文件操作2

五、文件的隨機讀寫 這些函數都需要包含頭文件 #include<stdio.h> 5.1 fseek 根據文件指針的位置和偏移量來定位文件指針&#xff08;文件內容的光標&#xff09; &#xff08;重新定位流位置指示器&#xff09; int fseek ( FILE * stream, long int offset, int or…