自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 记编译运行dpdk踩坑心得-完整可运行

2008年,DPDK由英特尔公司的网络通信部门提出,主要是针对基于Intel的处理器和网卡开发。正如其全称(Data Plane Development Kit,数据平面开发套件),DPDK提供丰富、完整的框架,让CPU快速实现数据平面应用的数据包处理,高效完成网络转发等工作。说到这里,有必要解释一下数据平面的概念。在通信框架中,数据传输和连接管理通常被拆分为多个独立的操作,这些操作被称为“平面”,平面包括管理平面、数据平面、控制平面。

2025-04-01 15:45:32 1389

原创 vsCode中的正则表达式

所以,人工智能这一新技术的出现,对于一个文明的科技进步来说应该是有帮助的。技术是会随着时间发展的,人工智能也是需要学习的,是需要与时俱进的,这部分学习的资料就可以从这部分高阶工程师中学习。作为一个平凡普通的个体,想要在这个竞争如此激烈的社会下逆风翻盘,必须得像一位专业投资者一样,去预想社会该怎么发展,经济会怎么受到影响,各行各业会不会被重新洗牌。但随着人工智能的发展,技术变得愈来愈不重要,试想一下,未来开发一款产品,技术不再是我们关注的重点,也不再是我们的难点,这个世界,这个社会会变得怎么样呢?

2025-03-27 11:41:53 1307

原创 全面解析内存泄漏检测与修复技术

内存泄漏是在没有自动gc的编程语言里面经常发生的问题;因为没有gc,所以分配的内存需要程序自己调用释放。其核心是调用分配与释放没有符合开闭原则,没有配对,形成了有分配,没有释放的指针,从而产生了内存泄漏。以上代码段,分配了两个s1大小的内存块,由 p1 与 p2 指向。而代码块执行完以后,释放了 p1,而 p2 没有释放。形成了有分配没有释放的指针,产生了内存泄漏。Linux中有两个宏__FILE____func__和__LINE__

2025-03-27 10:24:03 696

原创 eBPF Talk-XDP 转发网络包

本文参考自https://asphaltt.github.io/post/ebpf-talk-17-xdp-redirect-packet/介绍了一些常用的ebpf收发包的函数,以供不时之需,请多多支持原作。常量需要用户应用程序重写成目标网口的 ifindex。从如上代码片段可知,对于 XDP 程序而言,为。中向另一张网卡转发网络包的处理逻辑跟。,这里多了一步:保存 map 到。按需将网络包从另一张网卡转发走。所以,不要被 C 代码里的。中关于转发网络包的处理逻辑。为什么 XDP 具体的。

2025-03-26 10:49:17 658

原创 基于BPF MAP实现eBPF程序内核态与用户态的双向数据交换

最主要的功能是加载bpf程序(cmd=BPF_PROG_LOAD),其次是围绕MAP的一系列操作,包括创建MAP(cmd=BPF_MAP_CREATE)、MAP元素查询(cmd=BPF_MAP_LOOKUP_ELEM)、MAP元素值更新(cmd=BPF_MAP_UPDATE_ELEM)等。在后续的例子中我们将使用这种类型的MAP。内核态函数bpf_prog的实现也比较简单:在上面的map中查询”execve_counter”这个key,如果查到了,则将得到的value指针指向的内存中的值加1。

2025-03-25 14:40:46 956

转载 bpftool工具使用大全

bpftool工具使用大全-详尽版

2025-03-25 09:55:15 110

原创 XDP/eBPF来包过滤-已上机验证

想要验证这个功能的话,需要有两台机器,内核版本最好是v6.6(因为我的是,之前5.10版本的时候老是遇到奇奇怪怪的问题,要么缺这要么缺那,而且本身也是离线状态,又是比较稀缺的欧拉系统,找起资源来比较困难,buff叠满于是索性把内核版本升级到6.6,后面基本上没遇到什么问题)我用的是欧拉系统,为了匹配内核版本,我把eulerOS也升级到了24.03LTS。项目文件的话就一内核态程序和一用户态程序,方便编译也有提供makefile(也可以自己用clang,gcc编译),也包括xdpload程序。

2025-03-24 10:20:55 355

原创 eBPF调研-附上参考资源

鄙人彼时正在学习ebpf的通信方式,也就是如何让用户态程序和内核态用户程序进行通信,刚开始以为是ebpf提供的kernel ringbuffer用于内核态向用户态程序通信,而用户态程序向内核态程序通信需要用到下面的user ringbuffer,虽然确实可以,但是有更好的技术可供选择,那就是AF_XDP。关于linux官方提供的文档,你可以去参考这个链接 https://www.kernel.org/doc/html/latest/networking/af_xdp.html。

2025-03-21 16:05:58 665

原创 内存泄漏-原因/解决方法速览

内存泄漏是指程序在运行时,由于一些错误或设计缺陷,未能正确释放已经分配的内存,导致这部分内存无法再被程序使用,却也无法被操作系统回收。随着程序运行的时间增长,这种未释放的内存会不断累积,最终导致系统的内存耗尽,引发程序崩溃或系统变慢等问题。

2025-03-21 14:41:06 623

原创 tcpdump-快速查询版-常用后缀

Tcpdump是一款功能强大的命令行包分析工具,可用于捕获和显示计算机网络中传输或接收的数据包。下面记录了tcpdump常见的使用命令,有时候在工作中为了提供效率或者想要获得自己想要的结果,记住一些经常使用的后缀,或者做份笔记记录下自己常用的命令,方便日后的查询,是非常聪明的做法!过滤数据包是Tcpdump的一项重要功能,可以根据特定条件捕获特定的数据包,从而减少不必要的流量,使分析更加简单高效。这条命令将捕获eth0接口上IP地址为192.168.56.10的所有数据包,包括该主机发出的和接收的数据包。

2025-03-21 14:27:20 846

原创 离线升级欧拉版本至24.03-已通过验证

添加UEFI启动项(注意/dev/sda为efi分区所在磁盘,需根据实际情况自行选择磁盘路径,具体参考上图,-p后面是分区位置(默认为1),efi分区为/dev/sda值就是1,efi分区为/dev/sda值就是2)执行完上面的命令之后会报下面的错,如果没报下面的错跳过这一步即可(请认真阅读错误提示!MBR分区(传统的BIOS、dos、msdos)(注意/dev/sda需根据实际情况自行选择磁盘路径,具体参考上图)我是离线安装,真的是太心累了,本来升级个系统就要踩各种坑,还要离线安装,真的是难上加难!

2025-03-21 11:45:20 1379

原创 嵌入式开发之常用命令

使用 cat /proc/meminfo和 ls /sys/kernel/mm/hugepages/命令查看当前系统的 HugePages 配置。使用 echo或 sysctl设置 HugePages 的数量。如果需要进行持久化配置,可以将相关设置添加到 /etc/sysctl.conf或 /etc/rc.local文件中。通过 pmap或 grep /proc/<pid>/maps确认某个进程是否使用 HugePages。

2025-02-18 19:36:14 1139

原创 UBOOT常用命令-方便查询

【代码】UBOOT常用命令-方便查询。

2025-02-18 19:19:57 1018

原创 【通信-时隙配比】

在无线通信中,时隙配比(Slot Allocation Ratio 或 Slot Allocation)通常指的是在通信系统中,特别是用于分配时间资源时,不同类型的时隙(slot)之间的比例关系。具体来说,这种配比决定了系统在每个时隙内如何分配传输资源,例如数据、控制信息、以及不同类型的用户或信道的优先级。时隙配比的概念主要应用于时分多路复用(TDM)、LTE、5G等基于时隙调度的无线系统中,用来优化不同用户或数据流的资源分配。对于更复杂的系统,如5G NR(新无线电)中的动态时隙分配,时隙配比则涉及如何根

2025-02-11 16:24:26 1397

原创 【内存泄漏及解决方案推荐】

智能指针用途优点不当使用的问题独占所有权,用于避免内存泄漏自动释放资源,性能较好无法共享所有权,不能复制,只有一个所有者共享所有权,多指针管理同一资源自动释放资源,适用于复杂系统共享资源性能开销较大,引用计数管理,循环引用会导致内存泄漏观察shared_ptr,不改变引用计数用于解决循环引用,检查对象是否销毁不能直接解引用,必须使用lock()方法已废弃,类似unique_ptr自动释放资源存在悬空指针问题,已被废弃。

2025-02-11 15:36:27 1244

原创 不能连接外网状态下安装python及依赖包-才坑心得

由於需要繪製一份熱力圖,來展示各種加密算法在不同核數下的性能,我考慮使用python來試試。但是公司的電腦連不上外網,數據也只能在開發板上取,唯一的方法就是通過跳板機下載依賴庫whl文件然後安裝到本地電腦。跳板機還不能訪問“外網”,導致GitHub都訪問不了,有些比較稀有的依賴庫阿里源和清華源沒有收錄的,這下也下載不了了(本來開發板上有廠商提供的定制脚本測試性能,但現在某些庫下載不了,而且要將whl文件通過以下方式傳輸,想想還是作罷)。所以唯一的解決方法就是在跳板機裏的鏡像源下載依賴包,然後通過共享文件夾傳

2025-02-10 15:18:58 464

转载 多核多处理器架构软件设计的注意事项-转载

本文论述了多核多处理器架构软件设计的注意事项,我认为这篇文章写的很好,特此拷贝一份留作备份,转载自http://www.uml.org.cn/embeded/202007022.asp?artid=23454,若追寻更好的阅读效果建议跳转去以下链接。点击跳转计算硬件正在快速蓬勃发展。在时钟速度呈平稳状态的同时,晶体管密度在不断增长。处理器制造商希望通过让每个芯片拥有多个核和硬件线程来提高多处理能力。例如,IBM POWER7? 对称多处理器架构通过每个核支持多达 4 个线程、每个芯片支持 8 个核、每台

2024-12-26 14:25:06 116

原创 伪共享-学习

伪共享(False Sharing)是一种性能问题,发生在多核处理器中,当多个处理器(或线程)在同一缓存行中操作不同的数据时。尽管这些数据本身是独立的(即没有直接的依赖关系),但由于它们在同一个缓存行(cache line)中,缓存系统会频繁地更新缓存并进行无效化,导致不必要的性能损失。上面说的有点笼统,我这里简单介绍一下以便理解。正常情况下如果有两个CPU,两个CPU上各有一个线程,首先就确定了他们之间是不共享缓存的,而系统内存显然是共享的,因为CPU们都是通过系统总线访问系统内存。

2024-12-26 14:17:45 606

原创 dpdk初学习日志

Hugepages 是一种将物理内存划分为更大内存块的机制(比如 2MB 或 1GB 的页面),相比常规的内存页(如 4KB 页),它可以显著降低内存管理的开销,并提高内存访问效率。不同的平台有不同的IOMMU,如Intel的IOMMU,PCIE图形卡使用的图形重映射表(GART),Arm平台的IOMMU是SMMU(System Memory Management),它们主要功能都是完成设备可见的IOVA到物理地址的映射。这项功能的主要目标是提高系统性能和效率,减少中央处理器的负载,以及增强系统的安全性。

2024-12-25 17:36:10 1076

原创 tcpdump和dpdkdump

特性PacketDumptcpdumpDpdkDump基础工具tcpdump(基于操作系统的网络栈)DPDK(硬件加速,绕过操作系统网络栈)性能受限于操作系统和网络栈,可能会有丢包或性能瓶颈高性能,适用于低延迟、高吞吐量的场景使用复杂度较低,易于使用和部署较高,需要硬件支持和复杂的配置适用场景一般网络诊断、协议分析、应用层抓包高性能网络环境、大流量数据包捕获、网络设备抓包数据捕获方式捕获操作系统认为已经接收或发送的包直接从网卡接收数据包,绕过操作系统栈抓包精度。

2024-12-24 10:59:38 686

原创 安装运行DPDK

这样,CPU和设备都能读取到对方写入的内容。软亲和性主要由操作系统来实现,Linux操作系统的调度器会倾向于保持一个进程不会频繁的在多个CPU之间迁移,通常情况下调度器都会根据各个CPU的负载情况合理地调度运行中的进程,以减轻繁忙CPU的压力,提高所有进程的整体性能。但是随着CPU多核技术的发展,一颗物理CPU中集成了越来越多的core,导致SMP架构的性能瓶颈越来越明显,因为所有的处理器都通过一条总线连接起来,因此随着处理器的增加,系统总线成为了系统瓶颈,另外,处理器和内存之间的通信延迟也较大。

2024-11-07 10:11:55 922

原创 20240815阅读代码+业务实现

这些切换机制在无线通信网络中发挥着不同的作用,根据网络部署情况和业务需求来选择合适的切换方式,可以有效地提升网络性能和用户体验。盲切适用于特定场景的快速切换,而基于覆盖范围和频段优先级的切换则更适合常规的网络优化需求。

2024-08-15 18:53:22 966

原创 20240814阅读代码

所谓绑核,其实就是设定某个进程/线程与某个CPU核的亲和力(affinity)。设定以后,Linux调度器就会让这个进程/线程只在所绑定的核上面去运行。但并不是说该进程/线程就独占这个CPU的核,其他的进程/线程还是可以在这个核上面运行的。如果想要实现某个进程/线程独占某个核,就要使用cpuset命令去实现。其实,很多情况下,为了提高性能,Linux调度器会自动实现尽量让某个进程/线程在同样的CPU上去运行。所以,除非必须,我们没有必要显式的去进行进程绑核操作。#ifndef。

2024-08-14 17:31:28 800

原创 用anaconda对Python进行操作

Anaconda是Python的一个开源发行版本,主要面向科学计算,预装了丰富强大的库。使用Anaconda可以轻松管理多个版本的Python环境。Anaconda默认有两个版本,可以选择64位还是32位安装,当你安装了其中一个版本时,系统默认为该版本。同时你可以在已安装的Anaconda版本中添加另一个版本的Python,实现多版本共存。Anaconda可以使用命令行进行操作conda的环境管理conda info -e             查看当前已安装的环境conda create

2022-05-13 12:05:25 1288 1

原创 IP地址分类,涉及子网掩码

以下内容是我对别人观点的总结,如有不当之处,欢迎大家指正!如何将IP地址分类是个问题!IP地址过去的分类:子网掩码以及可变长子网掩码IP地址过去的分类:如果路由器中路由表存放的是全球所有的IP地址,那么查询的时候效率很低把IP地址做一个分类,更容易管理IP地址被分成了网络号和主机号,然后根据网络号的占位数来区分ABC类(一共有ABCDE类)(首先要明确的一点是,IP地址的位数都是32位)(因为这是二进制的)一个A类的地址,前8位是网络号,后26位是主机号,而且还有规定第一位一定是0B类的前两

2021-08-14 14:29:13 448

原创 SQLite轻量级数据库的基本操作(太简单了!!!)

话不多说,直奔主题!我们要了解的’增删改查‘创建 CREATE增 INSERT删 DELETE改 UPDATE查 SELECT几种SQLite数据类型创建 CREATE下面展示一些 内联代码片。//这里我创建一个数据库叫做sql_file.dbimport sqlite3conn = sqlite3.connect('sql_file.db')cur = conn.cursor()# 要注意的一点是ID里面的不能是int,只能是integersql = '''CREATE TABLE

2021-08-12 16:03:47 421

原创 简单的讲一下计算机网络的“进化”!

本文为自己学完视频课程后对计算机网络的理解,如有不当之处,欢迎大家指正!1.如果两台终端进行通信的话,只要一条数据线就完事了。但是如果有很多台设备的话,那么每个终端要实现通信的话,就要连上很多的线。2.搞一个hub集线器出来,终端1发消息给hub集线器,然后hub集线器转发给其他的终端。这样就不用每台终端都连线这么麻烦了。3.但是如果有两台终端同时发信息给hub集线器的话,那么有可能造成hub集线器发出去的内容是杂糅的。4.CSMA/CD协议就是用来解决这个问题的,通过载波侦听来侦查一下链路上有没

2021-08-12 08:43:31 206

原创 生活中常见的计算机网络知识

本文内容为小编掺杂了诸多文章后所得出的结论,仅供学习。如有不当之处,欢迎大家指正!简述一些零碎的计算机网络知识1、什么是VPN?2、什么是IP地址呢?IP地址的结构及来源那什么又是代理IP呢?免费代理IP是如何盈利的呢?代理IP的分类(了解即可)IP池3、内网和外网的区别打游戏常见的ms是啥?4、那VPN和代理IP的区别是什么呢?1、什么是VPN?VPN是虚拟专用网络,VPN服务器可以加密你的数据。他会混淆你的个人信息,尤其是你的IP地址和地理位置。使用VPN,网站将无法收集有关你的准确信息,但是

2021-08-11 10:18:10 1454

原创 写博客,记录生活——JSON的学习

首先要了解什么是JSON?JSON:JavaScript 对象表示法(JavaScript Object Notation)。JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式,类似 XML。JSON 比 XML 更小、更快,更易解析。notation英 [nəʊˈteɪʃn] 美 [noʊˈteɪʃn]符号;(数学、科学和音乐中的)记号;谱号和xml一样:JSON 是纯文本JSON 具有“自我描述性”(人类可读)JSON是

2021-08-07 10:45:27 147 1

unity虚拟现实技术及其应用课后习题

主编:刘东峰、杜娟 大部分用chatgpt3.5生成,准确性较高

2023-06-25

空空如也

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

TA关注的人

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