自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(83)
  • 资源 (1)
  • 收藏
  • 关注

原创 VPP 中注册的node是如何被调用起来的

由于亿图脑图目前不能保存,节点限制, 先把已经总结放这里。2. dispatch_node的细节。1. 加载插件的流程。

2024-04-25 20:09:46 145

原创 VPP 负载均衡测试代码

windows电脑第二步发了一个UDP 包给192.168.100.200, 这个UDP 包到达192.168.100.200 后, 直接重定向到了flow table NODE. 在flowtable node中我没有做任何处理, 然后送到了load balancer node, 然后load balance node 把这个包从192.168.100.201 发出去, 因为包的内容 还是发给192.168.100.200的, 所以又送给了192.168.100.200 , 这样就死循环了。

2024-04-10 23:05:47 699

原创 VPP中如何决定当前NODE的下一跳NODE是next_nodes[]中的哪一个

上边这里是一个NODE 的.function 的定义, 可以看到说的是2这里返回多少, 那下一跳Node 就是取next_node[]中的哪一个。具体修改是在4,5处, 看这个宏是不是和node定义时的next_nodes中定义的一样。4.5下边还有一个函数是找下实际出口的。我认为我们在node的 .function 函数中处理报文时, 应该去修改next0 (标记1) 的值来决定下一跳的值。上边就是node "ip4-input": 如何找下一跳的, 我觉得我们写插件的时候应该和这个是一样的逻辑。

2024-04-08 11:15:33 331

原创 基于DPDK的VPP 插件demo代码

这个就是实现报文回显的主要代码: 从frame中取出所有的packet vectore, 然后进行打印, 然后再push到下一frame中的buffer中。另外关于push到下一个node还是下一个frame, 我觉得应该是一个意思, 以后学习深入了应该能确认。现在看, VPP 已经可以把192.168.100.200 这个口收到的报文打印出来了。现在再重新把VPP的流程走一下。VPP的插件编写, 首先要把VPP 工程下载下来, 编译通过。这个时候可以看到,VPP 已经把我们新写的插件启动起来了。

2024-04-07 22:23:33 857

原创 用shell 中的grep 递归查找文件内容时不能找到正确文件的问题

fi ' 的意思是, 把每个文件用cat + grep 看下有没有要找的字符串, 有的话就把内容和文件名都打印。cat xxx.h |grep "roc_ie_on_ip_template" => 可以显示出对应找到行。grep "roc_ie_on_ip_template" xxx.h => 不能显示出对应的行。grep "roc_ie_on_ip_template" 可以换成自己要找的字符串。

2024-03-14 17:54:09 354

原创 C 语言中捕获段错误并打印出最后行数

data/jenkins/workspace/FM_5_DD_PHY_@2/_nr_bphy/nr_phy_arm/build/../src/_AppMain.cpp:3378 (这就是空指针那行)因客户需要, 需要在我们的L1 程序发生段错误segmentation fault后, 要用消息的方式让高层知道。// 存到文件后续解析。// 构造的段错误代码。// 注册段错误信号。phycApp // 可执行文件名。

2024-03-07 16:11:23 397

原创 dpdk20.11.9 编译arm版本以及在arm 应用中引用dpdk20.11.9

这个时候发现dpdk 20中的makefile变了, "include $(RTE_SDK)/mk/rte.extapp.mk" 这些语句没有了. 加上也会报错. 这行的意思就是初始化一些dpdk的lib 依赖, 以及确定gcc 版本, Ld 版本等.发现相关的编译参数都在文件夹 aarch64-build-gcc中, 经过多次编译发 这个只是一个文件夹名字, 是可以随便取的. 所以在这个文件夹中, 我找到了相关的配置文件。以往19版本的dpdk 都是可以直接用make 的方式进行编译, e.g,

2024-01-10 18:07:06 1466

原创 sudo 执行的程序getenv 返回空

那应该是sudo有问题.

2023-06-13 15:27:42 643

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

发现出错时用的iova 模式是VA 模式, 这个情况下就会让iova, va一样. 从页在服务器上的app 操作的其实不是一下正常的虚拟地址. 这样服务器和mvl pcie卡就不能通信.服务器使用dpdk返回的虚拟地址, mvl pcie卡上用dpdk 返回的iova地址, 然后调用DPI 的API 可以实现数据的上传和下载.因为这个功能在之前测试过的,不应该一样, 所以打印日志看下哪不一样: 加参数: --log-level=eal,8。后边再执行pcie 卡上的程序, 两个程序可以正常通信 了.

2023-05-25 17:02:12 857

原创 记录一次在x86 软件中使用dpdk 的历程(Makefile && gcc改成g++)

2. 使用dpdk 自带的helloworld 中的makefile. 增加testMxx的代码后, 发现编译的时候, 很多cpp的文件中的语法是识别不到的. 改makefile的时候, 要注意里边有两个分支, 可以删除了用else中的分支.这样错误没有了. 不过在ld的时候, 我看所有.o都编译出来了. 但是, ld时这些文件中的函数还是不能找到. 后边发现只有配置到SRCS-y += xx.c 中的文件, 对应的.o 才能成功link.根据$(RTE_TOOLCHAIN) 会走不同的文件夹.

2023-04-27 10:30:10 501

原创 记录一个dpdk 19.11 hello world 跑不起来问题(编译和权限)

因为之前遇到过没有加core mask. 所以加上参数 -c -x0f, 或者 -l 4-7 都不行,还是一样.因为我只想要用共享内存, 所以在build 目录下, 把kni, igb_uio 掉了, 不编译.-gcc 重新编译dpdk, helloworld后还是一样.用usertool下的dpdk_setup.sh 选择。1. 选择: [41] x86_64-native-l。换成: [41] x86_64-native-l。4. 关键是执行的时候用root 权限执行.可以成功, 不过这样不行.

2023-04-24 11:39:10 485

转载 Linux下交叉编译 linuxptp [转]

原文:方式1)Windows浏览器输入网址下载:下载后的压缩包拷贝到虚拟机;方式2)虚拟机上输入下面的命令下载:linuxptp。

2023-02-28 17:29:00 409

原创 C++ 中智能指针和类型强转笔记

C++ 中智能指针和类型强转笔记

2022-10-18 15:45:49 654

原创 ubuntu 调试使用GDB 看core文件不显示行号

GDB 调试时不显示代码行号

2022-10-18 15:36:19 1095

原创 dpdk 运行testpmd 出现: Couldn‘t get fd on hugepage file (已解决)

dpdk 环境搭建中遇到的几个问题, 和大家分享下, 主要注意grub的配置, 环境 变量的配置。万事开头难,每解决一个问题都是宝贵的经验。

2022-09-18 00:24:00 697

原创 第一个汇编号程序

初识汇编,完成每个hello world

2022-07-14 15:31:10 234

转载 [转]dpdk kni 原理(比较详细的源码分析)

dpdk kni 队列, 线程相关原理

2022-06-14 11:35:50 388

转载 【转】DPDK 知识汇总

dpdk 框架, 大页,网卡操作等知识方面的总结。

2022-06-05 22:48:49 446

转载 dpdk rte_memzone_reserve_aligned()

转:dpdk rte_memzone_reserve实现-smart_y-ChinaUnix博客rte_memzone_reserve_aligned()函数相当于rte_malloc,前者返回的描述符,后者返回可用内存地址.详情再看下链接.dpdk rte_memzone_reserve实现——lvyilong316这个函数的功能是创建一个rte_memzone(代码参考dpdk 16.11)。我们上一篇(http://blog.chinaunix.net/uid-28541...

2022-05-12 16:03:41 659

转载 [转]关于Linux grub配置iommu=pt intel_iommu=on

原文出处: IOMMU(二)-从配置说起 - 知乎做过DPDK/SPDK开发或者用kvm做过pci passthrough的一定知道以下的配置:BIOS中enable vt-d,内核参数配置intel_iommu=on iommu=pt好多人对这些配置很疑惑,不知道这些配置的是做什么的,配或者不配对性能有什么影响。包括我自己曾经也一知半解,今天整理一下,争取让大家柳暗花明。enable vt-d意思很明确,BIOS收集IOMMU硬件相关的信息以及它和PCI设备连接关系的信息,通过..

2022-04-25 19:05:38 10997

原创 嵌入式开发时如何让eth口同时使用socket和ODP

正常情况下, ODP 在对eth口收发包时, 要先在脚本中对eth口进行绑定:vfio-devbind.sh -b vfio-pci 0002:02:00.00002:02:00.0 表示eth0 的bdf 号.有一个问题, 这样操作后, eth0在linux的ifconfig就不能显示了, 就不能配置IP 用于socket了.如何能ODP 使用了也还可以用于socket 呢?用以下配置:echo 1 > /sys/class/net/eth0/device/sriov_n

2022-04-15 13:59:23 3341

转载 linux hexdump-显示文件十六进制格式

linux hexdump-显示文件十六进制格式linux hexdump-显示文件十六进制格式 - 码友 - 博客园

2022-01-06 12:34:26 2550

转载 vm.overcommit_memory的作用

原文:【Redis运维】vm.overcommit_memory内存分配控制-vm.overcommit_memory的作用Linux系统对大部分进行内存申请的程序都回复yes,以便能运行更多的程序。而这些程序申请内存后并不一定会马上使用,这种技术就叫做overcommit。通过vm.overcommit_memory来设置overcommit的内存分配策略,它有三个可选值0:内核将检查是否有足够的内存分配给程序。如果没有则申请失败,并把错误返回给应用进程。而在Redis中这个错误就会表现.

2021-12-09 10:36:54 526

原创 如何快速记住大小端

简单来说,四个字,"大同小异"同,就是你看到的是0x1000那内存中就是0x10 0x00异:就是你看到的0x1000,内存中是0x00 0x10这样交流起来就很方便了.

2021-11-17 18:05:57 119

原创 linuc C程序访问了共享内存,退出后系统内存没有释放(已解决)

目前在一个内存很紧张的板子上,运行了3个主要APP,都会访问同一块共享内存.A:创建共享内存shm1,并长期运行.B:打开shm1,并dump log, 发现内存减少20M, B退出时这20M并没有还给系统.WHY???以上是一个Log,程序中还有好几个Log ,然后导致内存有70M没有还回给OS.感觉是shm的缓存,没有释放.以给下次程序启动后,可以快速使用.那如何强制把这块内存还给OS呢???=>调查中,有识之士有知道的,...

2021-11-01 16:32:28 576

转载 Linux echo 显示内容颜色

echo 显示内容颜色,需要使用 -e 参数-e :打开反斜杠转义 (默认不打开) ,可以转义 “\n, \t” 等-n:在最后不自动换行str="kimbo zhang"echo -e "\033[字背景颜色;文字颜色m ${str} \033[0m"注:文字颜色后面有个m举例1,字体颜色#字体颜色:30m-37m 黑、红、绿、黄、蓝、紫、青、白str="kimbo zhang"echo -e "\033[30m ${str}\033[0m" ## 黑.

2021-08-27 16:43:02 2712

转载 Shell与子Shell中环境变量传递问题

在shell编程中为了程序尽可能模块化与简洁,除了可以用函数的方式,另一种常用方法就是将不同的功能单独写在不同的脚本文件中。在父脚本调用子脚本的过程中,往往会涉及将父脚本中的变量传入子脚本中,或者将子脚本的变量传递到父脚本中,这里就会经常出现一些令人困惑的问题。要么父脚本的变量传递不进去子脚本,要么子脚本中的变量父脚本也获取不到。这里对父脚本调用子脚本,及其变量传递问题做一些总结。父脚本与子脚本示例代码如下,在父子脚本中分别export一个变量。然后在父脚本中分别尝试三种不同的调用方式,在子脚本中获取父

2021-08-23 10:44:40 3614 1

转载 shell中sh, export, source 使用注意变量的作用域

业务场景:我在一个bash脚本中修改了PATH变量的内容,并将其保存到/etc/profile文件中,同时执行了source /etc/profile但是当脚本退出时,我 发现PATH变量还是没有修改生效,但是,如果我在命令行再直接执行source /etc/profile才发现PATH生效了。请问,这是什么原因呢?经过参阅《鸟哥的私房菜》中的相关内容p.307,export和source,总结的知识点是:1.自定义变量和环境变量的区别,两者的差异就在于是否会被子进程所继续引用2.当你

2021-08-20 18:29:18 2656

转载 Linux awk命令用法

概述awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理awk工作流程是这样的:读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键"awk命令形式:awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file[-F|-f|-v] 大参数,-F指定分隔符,-f调用...

2021-08-19 17:32:16 3340

原创 居然有人说为什么要把派生类的对象赋值给基类引用

【纯吐槽,哈哈】最近公司来了一个毕业两年的小白,天天在办公室吐槽别人的代码,为什么要这样,为什么要那样...感觉自己知道完了,而且好多都是人家特意设计的,你这样说就不怕被穿小鞋哦。今天就在那吐槽,为什么要把派生类的对象赋值给基类的引用,听完我也是够了,面向对象最基本的设计思想,尽可能的少改代码。没事我还是多看看书吧,拿C的思想去看C++,java 这些就不好了。就编译语言来说都是相通的,但是每种语言都有自己的侧重点。要用面向对象的语言,最基本的设计模式先熟悉了再来说。语言本来并不难,只.

2021-05-14 10:32:43 182

转载 makefile是如何自动生成的【转】

http://blog.chinaunix.net/uid-8048969-id-4674761.html

2021-05-09 16:59:45 79

转载 以太网包的格式 --转

http://blog.chinaunix.net/uid-20530497-id-2878069.html--原出处Chinaunix首页|论坛|博客登录|注册 博文 博主 技术派+简单生活xuxic.blog.chinaunix.net9/30日 14:00 -10/4日 08:00暂时无法发布内容! 9/30日 14:00 -10/4日 08:00暂时无法发布内容! 博客升级,9/30日 14:00 -10/4日 08:00暂时无法...

2020-10-01 17:48:53 707

转载 LTE 的一些基础知识 【转】

原文出处:https://www.txrjy.com/thread-1013259-1-2.html 查看:4860|回复:0 [原理资料]自己学习LTE的一些笔记[复制链接] xuzefeng 军衔等级: 新兵 注册时间: 2015-12-5 串个门 加好友 打招呼 发消息 电梯直达 1#大中小 发表于 2017...

2020-09-29 11:04:58 2010

转载 Ubuntu18.04 修改DNS [转]

Ubuntu18.04 修改DNShttps://www.runoob.com/w3cnote/ubuntu-modify-dns.htmlUbuntu18.04 修改DNSsudo vim /etc/systemd/resolved.conf修改如下:[Resolve]DNS=119.29.29.29保存退出后systemctl restart systemd-resolved.service

2020-09-14 11:44:04 146

原创 从源码级别分析Python的深拷贝--deepcopy() ---让你彻底明白深拷贝的原理

今天突然有兴趣研究一下python的深拷贝:因为有循环调用 ,我在文中都是用1,2,3这样标明怎么跳代码的,可能要读者多翻一下,没有几页。deepcopy()为入口函数:Import copy if __name__ == '__main__': # main(sys.argv) list1 = [1,2,3] # a = runManualTask() b = copy.deepcopy(list1) def deepcopy(x,

2020-07-31 19:44:00 3249

原创 CHM-- ConcurrentHashMap 学习总结(JDK1.8)

第一次学习CHM的时候,虽然知道了理论,但是还是不深刻。昨天把HashMap的源码看了下,再来理解CHM,就自然多了。HashMap的原码分析,请参考我的另一篇文章:https://blog.csdn.net/coolfishbone_joey/article/details/107696701那CHM和HashMap一比较,印象就深刻多了:1. 相同点:两者的数据结构都是数组 +链表 +红黑树。初始化的数组长度都是16,扩展因子都是0.75。扩容的条件都是,链表长度&...

2020-07-31 10:26:26 356

原创 JDK8 HashMap源码分析-底层结构-扩容-数据搬移

创建HashMap: publicstaticvoidmain(String[]args){ @SuppressWarnings("unchecked") Map<String,String>m=newHashMap();// 从这里入手 m.put("a","a"); m.put("b...

2020-07-30 18:42:08 290

原创 关于MySQL 优化和总结

最近学习了下MySQL优化:从语句的执行流程,包括查询,更新不同的流程。并发带来的三大问题:脏读,幻读,不可重复读。事务四大特性:ACID。事务隔离级别:RU, RC, RR , Serializable。锁的模式(类型): shared, executive.锁的算法:Record,Gap, Next-key.索引和创建:单索引,联合索引。索引的使用规则:什么时候用,什么时候不用。Explain语句中参数和意义,来查看执行计划。大概回忆了下,应该就是以上这...

2020-07-27 10:45:29 79

原创 正向代理与反向代理的异同

正向代理和反向代理,都是client -> proxy -> server1, 2, 3 ...正向的意思是,Proxy是代理client去访问 server,因为client不能直接访问server,client是知道自己要去哪里,只是自己不能直接过去。 比如 client要访问google时,可以通过第三方网站。反向代理意思是,Proxy代理的是server。 client在访问proxy时,其实不知道目的地具体会哪里。由proxy来决定。比如nginx在...

2020-07-24 18:11:57 120

转载 内存分析工具MAT(Memory Analyzer Tool)的安装与使用 【转】

https://www.jianshu.com/p/c6e2abb9f657

2020-07-14 20:59:11 166

effective java 中文第二版

effective java 中文版,第二版, 值得深入学习的JAVA 书籍,保证能用。之前下了一个pdf 打不开。这个是测试能用的。

2018-06-08

空空如也

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

TA关注的人

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