自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 预取内存 和 非预取内存区别

是两种不同的内存区域类型,主要区别在于它们的访问特性、使用场景以及硬件优化方式。预取内存通常支持 64 位地址,而非预取内存通常限制在 32 位空间。可能导致设备寄存器写入被延迟或合并,引发功能异常(如设备不响应)。写入操作必须立即到达设备(例如,写入控制寄存器触发设备动作)。// PCIe 设备的 BAR 默认是非预取的(无特殊标记)。CPU/PCIe 控制器可以预取数据(提前加载到缓存)。显卡显存(VRAM)、NVMe 设备的 DMA 缓冲区。设备的控制寄存器(如网卡的 TX/RX 控制位)。

2025-05-19 14:08:53 674

原创 platform_device,device,pci_device三者关系与区别

特性devicepci_dev层级基类派生类(虚拟总线设备)派生类(PCI总线设备)总线依赖无虚拟平台总线(PCI总线典型用途所有设备的公共属性SoC外设、嵌入式设备PCI接口硬件资源管理通用属性(名称、电源等)内存/IRQ资源(resourcePCI配置空间、BAR资源匹配方式无名称或设备树兼容字符串。

2025-05-18 09:32:42 856

原创 Linux UIO (Userspace I/O) 框架详解

UIO 是 Linux 内核提供的一种将设备驱动部分逻辑移到用户空间的机制,特别适合需要快速开发或自定义 I/O 处理的场景。

2025-05-15 10:38:08 899

原创 NVMe 中命名空间、nblocks、slba 和 addr 的关系解析

NVMe设备中的逻辑存储分区,类似于传统存储的分区每个命名空间有独立的LBA(逻辑块地址)空间可配置不同的块大小(通常512B、4KB等)通过nsid(命名空间ID)标识。

2025-05-15 09:45:48 891

原创 Linux NVMe驱动深度分析

Linux内核中的NVMe驱动采用分层架构,主要分为以下几个部分:用户空间| 块设备层 (/dev/nvmeXnY) || 字符设备层 (/dev/nvmeX) |内核空间| NVMe核心层 (nvme-core) || PCIe传输层 (nvme-pci) || Fabrics传输层 (nvme-tcp, || nvme-rdma等) |硬件层| NVMe控制器 |

2025-05-15 09:28:28 937

原创 绕过文件系统直接读写NVMe盘的方法

绕过文件系统直接访问NVMe存储设备可以消除文件系统开销,实现最高性能的裸设备访问。以下是不同操作系统下的实现方法。

2025-05-15 09:16:19 484

原创 MMIO机制详解

CPU发出地址 0x40000000 → 内存控制器识别为MMIO区域 → 转发请求到PCIe/SoC总线 → 目标设备响应读写。// 16个32位寄存器。// 写入数据寄存器。的机制,CPU通过读写内存地址来访问设备寄存器,而非专用的I/O指令。:设备监听特定地址范围,当CPU访问该范围时,设备响应操作。:确认数据宽度对齐(32位设备需32位访问)。

2025-05-14 20:03:13 828

原创 MLX5 Linux 驱动代码分析

Mellanox ConnectX 系列网卡的 Linux 驱动 (mlx5) 是一个高性能 RDMA 和 Ethernet 驱动,支持 InfiniBand 和 Ethernet 功能。

2025-05-12 10:48:36 1125

原创 PLX 8748 组播(MC)窗口大小计算方法

实际配置时,请参考PLX 8748数据手册中的"Multicast Configuration"章节,根据具体应用场景调整这些参数。

2025-05-08 15:34:11 315

原创 PCIe Crosslink

PCIe Crosslink(交叉连接)是一种特殊的PCIe链路连接方式,允许两个PCIe设备(通常是Root Complex或Endpoint)是指两个PCIe设备(如两个CPU、两个FPGA或两个GPU)通过PCIe链路直接连接,形成点对点(P2P)通信通道。:两个Intel/AMD CPU通过PCIe Crosslink直接通信(替代UPI/Infinity Fabric)。:主板需提供PCIe Crosslink连接(如特定插槽支持x16/x8 Crosslink)。

2025-05-04 11:05:45 527

原创 EP 设备间P2P 与 基于pcie switch 的p2p区别

对于具体实现,需结合硬件规格(如PLX交换机手册或GPU技术文档)和操作系统支持(如Linux。GPU(Port 1)和NVMe SSD(Port 2)通过PLX Switch直接通信。多台NVMe SSD通过PCIe Switch共享访问(如CXL over PCIe)。GPU和FPGA通过同一PCIe插槽的拆分(Bifurcation)直接通信。设备通过PCIe Lane直接交互(如x16拆分为x8+x8)。启用PCIe Bifurcation(如x16→x8+x8)。

2025-05-04 10:47:53 738

原创 perf 添加自定义函数性能测试实例

要在 Linux 内核或模块的函数添加perf probe探针,可以使用%return后缀来跟踪函数返回。# 添加函数入口探针sudo perf probe -m <模块名,必须路径加ko,不然会报不在.text段> --add <函数名># 添加函数退出探针(使用 %return)sudo perf probe -m <模块名,必须路径加ko> --add <函数名>%return。

2025-04-30 17:41:48 703

原创 linux 内核性能调试分析

调试内核模块性能需要特殊工具和方法,因为模块运行在内核空间,直接影响系统稳定性。

2025-04-30 11:27:49 675

原创 worker queue并发实现

在 Linux 内核中,workqueue 机制确实可以并发执行相同的。

2025-04-29 15:13:25 366

原创 linux 内核worker queue实现

├── find_worker_executing_work() // 检查是否已在执行。WORK_STRUCT_DELAYED_BIT, // 是否是延迟工作。└── wake_up_worker() // 唤醒worker线程。WORK_STRUCT_PENDING_BIT = 0, // 是否已排队。├── insert_work() // 添加到pending链表。// 使用指定CPU的worker_pool。// 每个worker_pool有自己的锁。// 2. 执行工作。

2025-04-29 15:11:40 699

原创 linux 内核内存管理概述

硬件抽象层:处理特定架构的内存管理单元(MMU)细节物理内存管理:处理物理页帧的分配和释放虚拟内存管理:提供进程地址空间抽象内存分配器:提供kmalloc、vmalloc等接口用户空间接口:通过brk、mmap等系统调用提供服务Linux 内存管理系统通过精妙的分层设计和多种算法,实现了高效的内存管理。理解其工作原理对于系统调优、性能分析和内核开发都至关重要。随着硬件发展和新需求出现,Linux 内存管理仍在不断演进,如近年来对非易失性内存的支持等新特性。

2025-04-29 10:19:45 729

原创 理解字节对齐的效率

默认使用8字节对齐(64位系统的自然对齐)对性能关键代码进行对齐优化使用工具验证(如GCC的警告)不同架构区别对待(x86较宽容,ARM较严格)在绝大多数64位系统现代CPU上,8字节对齐的访问性能优于4字节对齐,特别是对于64位数据类型的操作。

2025-04-28 20:15:01 706

原创 DMA与关键操作性能对比分析

hlist_for_each_entry_rcu(pos, head, member) { // 无锁读取。// ≈8 ns (无锁算法)当 (CPU拷贝时间) > (DMA启动开销 + DMA传输时间) 时选择DMA。// 同时CPU可以处理其他任务。// 启动DMA传输。// 等待DMA完成。

2025-04-25 15:25:20 890

原创 linux 内核开发 sysfs详解

大致了解linux 内核 sysfs结构

2025-03-27 17:43:58 549

原创 sysfs_create_bin_file、kobject_create_and_add 与 sysfs_create_file 的区别详解

sysfs_create_bin_file、kobject_create_and_add 与 sysfs_create_file 的区别详解

2025-03-27 17:38:33 931

原创 华为eNSP使用详解

eNSP是一款由华为提供的免费的、可扩展的、图形化的网络设备仿真平台,主要对企业网路由器、交换机、WLAN等设备进行软件仿真,完美呈现真实设备部署实景,支持大型网络模拟,让你有机会在没有真实设备的情况下也能够开展实验测试,学习网络技术。eNSP提供便捷的图形化操作界面,让复杂的组网操作变得更简单,可以直观感受设备形态,并且支持一键获取帮助和在华为网站查询设备资料。按照真实设备支持特性情况进行模拟,模拟的设备形态多,支持功能全面,模拟程度高。支持与真实网卡的绑定,实现模拟设备与真实设备的对接,组网更灵活。

2024-04-15 18:59:11 357 1

eNSP华为模拟器使用详解

esnp概述 特色 基本操作 组网验证

2022-11-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除