Coding
未读一、Linux NVMe 驱动中的限流:
为了防止 SQ 和 CQ 队列溢出,驱动中基于 tag 实现了一套 IO 限流策略:
NVMe 驱动在初始化时会调用 blk_mq_init_queue 创建用于容纳 request 的 queue,对于每个 queue Linux 驱动中可以为其指定一种用于调度 request 的 elevator 算法(通常包括 kyber、mq-deadline 以及 bfq),算法是通过 blk_mq_init_sched 初始化的,其中指定了 queue 中的 nr_requests 用于限制可容纳的最大请求。
此后其会根据 nr_requests 值去创建一系列 blk_mq_tags 以及 request用于后续发送消息。
在 Linux Block 层创建新的 request 时会通过 blk_mq_get_tag 来判断软件队列 tag 是否有剩余,如果有剩余则下发 IO 到软件缓冲队列中,如果无剩余则循环 sleep 等待。的 OpenWrt 系统进行介绍,并将以 ArgonTheme 主题作为例子。
一、查看设备信息建议搭建服务前先去了解自己设备的一些基本信息,如处理器类型、系统版本等。
1. 处理器此部分信息一般位于 状态 → 概览 页面中,如图所示,本文使用的 FastRhino R68S 设备就是采用了基于 ARMv8 架构的 Rockchip RK3568 处理器,通常仅需了解采用的架构即可。

2. 系统版本目前 OpenWrt (也称作 LEDE)存在官方分支和第三方分支(如常用的 Lean’s LEDE source),因此最通用的查看适合的系统版本的方法是去查看 系统 → 软件包 → 配置 中的软件源信息,因为此处一般由固件开发者指定,其相比使用者更为了解。如下图所示,本文对应的 OpenWrt 的发行版本是 21.02.1。

一、交互原则1. 清晰且具体使用分隔符可以使用 ‘、“、 ```、<> 等符号将内容标记出来,避免模型错误的受内容中的指令干扰
要求结构化输出可以要求模型使用 JSON、HTML 等格式输出,方便理解与使用
要求模型进行条件检查要预先假设一些边界条件,让模型提前进行检查,避免出现错误
给出示例可以通过给出一些任务成功的示例来让模型需要任务的要求
2. 给模型时间去思考列出具体的工作步骤通过列出具体的工作步骤,而不是直接提最终要求能减少模型犯的错误
123456789101112131415161718192021prompt_2 = f"""Your ...
一、基础概念1. QP — Queue PairRDMA 通信的基础,其中包含了一个 RQ 和一个 SQ。基于连接的 QP 只能一对一交流,而基于数据报的非连接通信能实现 QP 一对多通信。
2. RQ — Receive Queue存储了接收的 WQE。
3. SQ — Send Queue存储了发送的 WQE。
4. CQ — Completion Queue存放通信完成的信号,其中存放的每个实体较说 CQE — Completion Queue Entry。
5. WQE — Work Queue Elements用于下发操作指令,一般是放置在 RQ 或者 SQ 中,其大小受多种因素影响。
6. MR — Message Region用于记录从主机内存中分配来的内存,可用于之后传输数据和接收数据使用。
二、动作原语 (Verbs)1. 内存交互原语
Read
Write
这类原语需要提前知道对端主机里要被操作的内存地址(相对地址,基于virtual address),同时它无需对端主机 CPU 的参与。
2. 消息交互原语
Send
Receive
这类原语无需知道地址,Se ...
一、下载首先需要去英伟达官网上注册一个开发者账号,并申请 DOCA 的内测计划,申请通过后即可在此页面下载 DOCA 的安装程序 SDK Manager。
https://developer.nvidia.com/networking/doca
按照官网流程下载并配置完后,可以使用支持 X11 的 SSH 终端打开 SDK Manager,之后便能使用 GUI 版进行后续安装。
12# 启动sdkmanagersdkmanager
二、安装使用非 root 账户打开 SDK Manager 后,首先需要登录之前注册的开发者账号,它会跳转到浏览器中进行认证。
之后便可按照它的提示进行驱动的安装,以及 DPU 系统的刷入。
DPU 刷入后,会在宿主机上虚拟出一张叫作 tmfifo_net0的网卡,通过它便可登入到 DPU 中 ARM 核心的操作系统了。
三、问题1. kmod-isert 版本不匹配需要注意的是 DOCA 不仅要求 Linux 发行版的版本与要求完全一致,同时要保证使用的内核版本也是该发行版默认的版本,如 Centos 7.6 对应的就是 Linux 3.10.0-957 ...
Networking
未读零、前言一些 DPDK 的基础内容(安装、配置、rte_flow等)可以参考前文:
一、哈希库rte_hashDPDK 提供了一个标准的哈希表的实现,能用来根据键值快速进行索引。
a. API1234567891011121314151617181920212223242526272829303132333435363738// 初始化struct rte_hash_parameters flow_hash_table_parameter = { .name = table_name, // 需保证唯一 .entries = MAX_HASH_ENTRIES, .key_len = sizeof(union ipv4_5tuple_host), .hash_func = ipv4_hash_crc, // 可以自行编写,可以使用自带的rte_hash_crc等 .hash_func_init_val = 0, };flow_hash_table = ...
一、安装1. 下载源码1234# 选择一个版本 http://core.dpdk.org/download/wget http://fast.dpdk.org/rel/dpdk-21.02.tar.xztar xJf dpdk-21.02.tar.xzcd v21.02
DPDK源文件由几个目录组成:
lib: DPDK 库文件
drivers: DPDK 轮询驱动源文件
app: DPDK 应用程序 (自动测试)源文件
examples: DPDK 应用例程
config, buildtools, mk: 框架相关的makefile、脚本及配置文件
2. 编译12345678910111213pip3 install meson ninja# 配置编译项meson build# 编译cd buildninja# 安装ninja installldconfig
二、配置1. 预留大页123456789101112131415161718192021# 预留大页内存( 1024 个 2MB 的内存)# UMA架构机器,既单处理器echo 1024 > /sys/kerne ...
参考 https://docs.microsoft.com/en-us/windows/wsl/install-win10
由于更换电脑后每次需要重新安装WSL(Windows Subsystem for Linux),所以自己整理了一份安装教程作为参考。
本教程基于Win10 Pro(1909) 和 Ubuntu 18.04。
安装安装Ubuntu前需要确认开启了“适用于Linux的Windows子系统”功能。
以开发者模式启动PowerShell并运行
text12Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
重启电脑
之后即可通过微软应用商店安装Ubuntu (点此下载),安装完成后点击开始菜单中的Ubuntu图标即可进入
使用Root账户虽然WSL已经安装完成,但是我们并不知道WSL中root用户的密码,导致我们无法使用 su命令切换至root权限。因此需使用 sudo passwd命令即可更改root密码。
如果想默认以root用户的身份进入 ...
Coding
未读Linux 系统包含两个版本,一个是 Linux 发行版的版本(如 CentOS 7.6),另一个是内核版本(如 3.10.0-957),通过以下命令可以查看两个的版本:
1234567# 查看 CentOS 发行版的版本$ cat /etc/redhat-releaseCentOS Linux release 7.6.1810 (Core)# 查看内核版本$ uname -r3.10.0-957.el7.x86_64
一、更换 CentOS 发行版本前往 CentOS Vault 仓库寻找自己需要的版本,这里包括基本所有需要的 CentOS 历史版本,但需要注意它通常不包括 LTS 版本(长期支持,如 CentOS 7.9,这类版本会存储于 CentOS 主仓库)。
https://mirrors.tuna.tsinghua.edu.cn/centos-vault/
这里以 7.6.1810 版本为例,需要执行以下命令:
12345678910111213141516# 下载安装包$ wget https://mirrors.tuna.tsinghua.edu.cn/centos- ...
如何购买ASN和IP段?.jpeg)

配置 BGP 和 VPN 进行实名上网.jpeg)





%20%E6%9C%8D%E5%8A%A1.jpeg)






