热烈庆祝8总力克猫传腹病魔康复痊愈

8总是今年3月出生的一只蓝白相间的英国短毛猫,因为脑袋上的蓝色花斑从中间裂开一个“八”字形的缝,因此被称为8总。 8总最开始被当成是一只小母猫,主要是因为他的母亲,另外一只蓝白,生的一窝小猫里面,只有它是蓝白相间的小猫。其他所有小猫都随了父亲,都是纯色的蓝猫。不过后来事实证明,这一窝小猫里,8总其实是唯一的公猫。 甫一降世,8总就是这一窝小猫里面表现最活跃的那只。第一个翻越猫产房,第一...

Continue Reading →

测来测去20:快速定位short-lived进程对性能的负面影响

案例遇到过的一个案例是这样:DPDK应用在小流量的情况下丢包,并且是间歇性地丢。很自然的,会怀疑有其他进程抢占分配给DPDK的CPU核。 这个案例里Kernel里面CPU隔离的参数都是配好的,不过并非所有的进程都完全按照内核的要求行事。比如一些自己在代码里面调用了sched_setaffinity方法的程序。 比较特殊的是,抢占这个CPU核的进程是一个生命周期非常短(short-live...

Continue Reading →

测来测去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 →

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