首页
学习
活动
专区
工具
TVP
发布

皮振伟的专栏

专栏成员
108
文章
312619
阅读量
79
订阅数
[linux][tcp]使用tcprtt排查网络延迟问题
前言 网络后端业务,经常会遇到延迟抖动的问题。那么问题来了,如何排除出来是网络的问题呢,还是业务的逻辑问题呢,或者是其他的调度问题呢? 分析 SRTT 在TCP的连接中,有一个指标叫做SRTT(smoothed round trip time),关于SRTT的计算方法,可以参考linux/net/ipv4/tcp_probe.c,具体的计算逻辑可以参考代码,以及注释中的论文,不在这里展开(主要是作者看不懂)。 所以,能够dump出来的TCP连接的srtt,生成柱状图观察出来延迟的区间变化,我们就可以知道网络连接的srtt是否抖动。如果业务延迟发生了抖动,srtt很稳定,就可以说明大概率不是网络的问题,可能是业务的问题,或者调度的问题等等; 反之,如果srtt页发生了抖动,那么可以先检查一下网络连接。 和tcp probe的关系 tcp probe是内核提供的debug模块,也可以完成类似的功能,不过在高版本的内核上,已经移除掉了。 从原理上来看,都是基于kprobe原理,hook住tcp_rcv_established函数,来dump出来必要的数据。 但是,在使用性上没有bcc方便。需要说明的是,基于kprobe原理的工具都有overhead,在特别频繁调用到的路径上,需要谨慎使用。 tcprtt使用方法和例子
皮振伟
2020-09-23
2.9K0
[linux][redis]redis对cpu亲和性的支持
前言 redis在最近的版本中,开始了对多线程的支持。加上之前对多进程的支持,模型的复杂度也比过去复杂了不少。 redis本身又是一个对性能、延迟非常敏感的业务,多种因素都可能导致小问题。基于上述原因,作者对redis做了CPU亲和性的系统支持,并合入了upstream。 分析 代码 Redis 6.0.2版本中开始支持 https://github.com/antirez/redis/commit/ae306a3df6cf63b31a0814cb5393a9df59947d2e
皮振伟
2020-05-26
1.6K0
[linux][qemu]PVPanic的缺陷和完善
前文《[linux][qemu]PVPanic的实现原理以及应用》中,介绍了pvpanic的原理和基本的使用方法,KVM虚拟化场景下,使用pvpanic驱动可以监控到Guest的panic。
皮振伟
2020-02-25
2.1K0
[linux][block]readahead导致的md-raid1读速度慢问题
前言 为了提高虚拟机的网盘的高科用,同时挂载了两块,在Guest内部使用RAID1,如果后端一块发生故障,可以保证在10s内failover,恢复业务运行。当前的配置是把RAID1的md设备格式化成ext4文件系统,挂载后使用。 atop每天大约生成了200M+的文件,文件在md设备上。发现在查看atop文件的时候,耗时很长,大约估计需要30s。 分析 1,使用filemap分析文件的物理分布 首先怀疑是ext4的文件在物理分布上的情况,有可能是比较零碎,会导致读消耗更高的IOPS。 作者写过一个工具,用来dump出来文件的物理layout情况,代码路径: https://github.com/pacepi/tool/blob/master/filemap.c 编译后执行,
皮振伟
2019-05-06
1.7K0
[x86][kvm]avx512指令相关
前文《[x86][linux]AVX512指令引起的进程crash》中,介绍了一次因为avx512指令导致的进程crash。
皮振伟
2018-10-23
5.2K0
[python][profiling]python的性能监控的几种方法
前言: 编译型语言,比如C,C++,Go编译出来的二进制,可以使用perf来分析性能。对于编译出来的elf格式,使用dwarf来分析symbol。 对于python这种解释型语言,就会比较麻烦。因为python进程的stack是Cpython的stack,并非对应的py的stack。 分析: 1,cProfile python的官方提供了profiling工具,https://docs.python.org/2/library/profile.html 用法上,需要修改代码,重新执行。对于线上业务,其实是不太友好的。另外就是如果父进程启动之后,启动子进程执行,就没法工作了。 相比这种方式,作者更倾向旁路的方式,对于一个running的python进程进行profiling,业务进程不需要修改,也无感知(允许一定范围内的性能下降)。像perf一样,不侵入进程的情况下进行性能分析,用起来更舒服一些。 2,cpython的stack 来一段测试代码:
皮振伟
2018-10-10
1.8K0
​[qemu][http]qemu的网络类型disk技术分析
前言: qemu的disk设备后端存储支持了多种类型。 本文简单简单列举几种,对比一下其中的特点。再重点分析http类型。 分析: 1,disk types qemu支持的disk类型,以及使用方法,参考libvirt的官方文档http://localhost/formatdomain.html#elementsDisks,其中常用的类型: file,就是文件类型,一般常用raw格式和qcow2格式。qemu-img info xxx.img可以查看具体类型和一些参数。对于file类型的数据,读写都需要经
皮振伟
2018-04-09
2.3K0
没有更多了
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档