测来测去19:Enable DPDK i40e vector rx function

Vector Rx Function在DPDK i40e网卡的驱动中提供有利用向量指令收包的方法,在一般场景下可以大幅提升性能。当针对基于DPDK的应用做性能诊断时可以用perf top命令直观观察有没有i40e_recv_pkts_vec这个方法出现,如果没有则可以判定当前的应用没有使用向量指令集优化过的收/发包方法。 i40e_set_rx_function一般来说,DPDK和编译器会根...

Continue Reading →

Quickwords33:How uprobe works

背景用uprobe也有一段时间了,确实是一个很有价值的工具。我这个人有个特点,就是如果不知道这件事背后的原理,即便工具很好用,但用起来始终心里不踏实,像是房本上没加名字,住着没有安全感。对于uprobe这么fancy的工具还是很有必要了解一下具体的工作机制。一方面是打消“神秘感”,一方面是看看是否能激发别的灵感。 添加uprobe之后发生了什么我们可以猜到的是,给二进制文件添加uprobe之...

Continue Reading →

十八岁这天的日记

上中学的时候,按历任语文老师的要求,写过好几本日记。这里面有一本是最不一样的,因为高三了,语文老师可能也认为“写日记”这个事确实太闲情逸致了一些,所以不再像以前一样要求上交日记本批改。我因此也得以在上面写了一些真正的日记。 高中时期正是有了心思的年纪,也是刚刚掌握了一点“文学技巧”就手痒痒的时候。所以那时的日记很多都是一些喃喃的梦呓。但不得不承认,这一时期对我影响很大,确实刻意练习过一种适合...

Continue Reading →

几句话说清楚32:Git命令极简使用指南

基本上可以Cover 90%以上的工作场景。 要开始在现有Master上搞点什么确保你在master分支上git checkout master 创建一个新的分支git checkout -b mydevbranch 修改了代码之后可以先用git diff看看自己的修改详情,然后再看一眼git status,修改的文件。如果没问题 git add -u,把已经被追踪的文件加进去。 如果有...

Continue Reading →

测来测去18:使用LD_PRELOAD搞砸一切

LD_PRELOADLD_PRELOAD是一个神奇的指令,关于它的介绍可以参考这篇文章,这篇文章。 有用的事用LD_PRELOAD可以做很多有用的事情,比如替换malloc和free来检测内存泄露,这里有一个实际的Github开源软件。 搞点别的LD_PRELOAD虽然很强大,但针对不是动态链接的方法就无能为力。检查一个ELF文件中哪些方法是可以被LD_PRELOAD改造的,可以用: rea...

Continue Reading →

测来测去17:Adding dynamic probe to gain insight of DPDK application

Dynamic Trace Framework曾经想给DPDK添加一个trace framework,但使用的方法是添加一个专门的rte_trace库,涉及一整套trace buffer和控制相关的操作,同时需要修改原本DPDK应用的代码,使用起来成本还是比较高的。在逐渐熟悉了uprobe的操作之后,其实可以用uprobe完成绝大部分这个trace framework所做的工作,例如方法执行...

Continue Reading →

测来测去16:Adding new kprobe to ftrace tracing

添加ftrace新事件Ftrace自己带很多事件,之前一直以为在内核方面ftrace的触角就到此为止了。今天才了解到kprobe也可以像uprobe一样自己动态定义一个出来。这样默认的ftrace没有的事件也就可以通过添加新kprobe事件的方式添加了。 kproble + uprobe都支持动态自定义添加,感觉这个电脑在做什么终于可以有一个比较全面的认识了。 为什么不用eBPF?像bc...

Continue Reading →

测来测去15:DPDK VxLAN Inner L4 CSUM OFFLOAD

IXGBE以IXGBE驱动为例,看一下如何让把内层报文Checksum的计算Offload给网卡。 本质上来说,是在DPDK的mbuf结构中,将L2 Header的长度配置为外层VxLAN报文+内层L2 Header的总长度,这样对网卡来说,该mbuf对应的报文就是一个L2 Header长得令人发指的普通非隧道报文,但是这样就可以计算内层L3/L4 Header的Checksum了。 ixg...

Continue Reading →

Quickwords31:What Is Inclusive and Exclusive Cache

一般对Cache的认知方式我们比较熟悉的对Cache的理解是,首先有3级,L1,L2和L3。这三级依次远离CPU核心,查询数据的速度也依次减慢。当CPU需要一个地址上的数据时,会先去L1查找;当L1没有这个数据的时候,去L2查找;L2也没有的时候,去L3查找。如果还没有,就去内存上去查找。这是我们看待Cache和CPU查询数据时的一般方式。 这里面其实没有涉及一个问题,就是L1中包含的数据,...

Continue Reading →

应许之日

很庆幸自己能活这么久,站在此时此刻的人生节点上,可以闻到更好的时光还在后面。 回头看看来时的路,似乎人生的前半程,都是在一片鸿蒙中打滚。不知道自己是谁,不知道自己是个怎样的人,不知道接下来要干什么,不知道明天和今天会有什么不同。也不知道如何去找到自己的位置,如何处理与其他人的关系,如何取得想取得的,留住想留住的,以及摆脱想摆脱的。似乎所有的得失,都只是随机的事件,而我只是被时光推挤着前行,如...

Continue Reading →

© 2020 DecodeZ All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero