第一次知道Brendan Gregg,是我还在Juniper的时候。插点花絮,关于Juniper,你可以百度下“程序员薪水最高的25家公司”,那就是因为这条新闻才打定了主意去的Juniper, 只能说,Juniper的HR们很优秀。 言归正传,我那会在Juniper主要是研究网络性能优化的一些东西,Juniper的系统是BSD,所以我就研究上了Dtrace,而Dtrace Toolkit以及Dtrace书的的作者就是Brendan Gregg。 不过我并没有因此而跟Brendan Gregg正面刚,我刚的是Oleksandr Tymoshenko,Dtrace on MIPS的作者,因为在MIPS上Dtrace的fbt/pid这两个特性没有实现,所以我就给Oleksandr Tymoshenko发了封邮件请教这个问题。Oleksandr Tymoshenko很热情,很快的回复了我"The problem with fbt on MIPS is that there is no clear way to determine function boundaries", 就是MIPS代码的编译很随意,函数与函数之间没有一个清晰的边界。 举个例子,x86上的一个function,它的汇编代码一般是这样的: begin with: push %ebp mov %esp,%ebp <function body> end with: ret 它有很清晰的指令来区分函数的开始与结束。 而在MIPS上就没有很严格的指令来做区分,毕竟MIPS是RISC,指令比X86是少的可怜。 以这个故事开头,主要是想给大家一个直观感受,给Dtrace做出重要贡献的Brendan Gregg,他在计算机体系结构方面的知识是多么的强大。 对于Brendan Gregg这个名字你可能会感觉陌生,不过对于下面这个图,相信你一定不会陌生:

performance tools

这个图就是出自Brendan Gregg之手。 对于Brendan Gregg的事迹我就不在赘述,感兴趣的可以直接去看他的博客,相信你一定会获益良多。 ( 博客1 博客2 ) 关于他的个人博客,我再说一件事。 我们的服务器上曾经出现过很随机的TCP重传问题,就是那种不知道什么时候会出现什么时候又自动恢复的问题,这种问题往往令人很头疼,因为它是随机出现的而且每次的时间也都短暂,等你反应过来要上去抓取现场信息了它可能就已经消失了。 对于TCP重传问题,显然是需要抓包分析,常用的抓包分析工具在Linux上就是tcpdump了。tcpdump是个非常重的抓包工具,它会抓取进出interface的所有包,显然这对系统的性能会有很大的影响。所以我们用tcpdump来抓包,一般都是在问题出现时上去抓取,抓取一段时间后再停掉它。所以tcpdump对于这种随机出现并且持续时间短的tcp重传问题就爱莫能助了,你不能够一直让它在那里运行着抓包,这对系统影响太大了。 于是Brendan Gregg就开发出了一个轻量级的tcp重传抓取工具: tcpretrans。这个工具它只抓取所有重传的包,具体的原理是借助Linux Kernel的ftrace机制在tcp_retransmit_skb这个函数加了一个hook来获取重传包的skb地址,然后以这个skb的地址作为hash key去/proc/net/tcp这个文件里面匹配tcp连接信息,然后把发生重传的这个tcp连接的信息(time,src,sport,dst,dport,state)给打印出来。由于它只抓取该服务器发出的重传包,所以它的系统开销是很小的,我们完全可以把它部署到服务器上一直运行着去抓包。 这个工具也确实有效的帮助我们分析清楚了不少TCP重传的问题。 不过可惜,这个工具有个缺点,对于持续时间不足1s的TCP连接,它是抓取不到tcp连接五元组信息的,所以我给它改写了下,增加了一个选项,利用ftrace的trace_pipe来实时的统计所有重传包,不过显然这样子对系统性能是有一些影响的,不适合一直运行着。 Brendan Gregg的很多博客我都是看了很多遍,它对我对系统的理解确实帮助很大,所以为了从物质上来回报这个大哥,我就花了351¥去amazon上买了他的《systems performance》这本书。 这本书可以称得上是一个系统分析大全,他整理了各种分析工具,cpu/内存/磁盘/网络/文件系统等各方面的,所以它其实也可以作为一个参考书,当你遇到很棘手的问题时翻一翻它没准就能豁然开朗。 不过这本书并不仅仅是个工具大全,工具介绍只是占了这本书的很小一部分,它最主要的是对系统分析方法论的归纳总结以及技术层面的解释,以及对于一些计算机的基本概念,比如延时,响应时间,利用率,吞吐量等做了非常彻底的解释,就是给你说明白为什么会是这样子,为什么会有这个概念出来,以及怎么样去分析这些个概念。 不过,话说回来,如果你能看懂他的博文,而且也不打算像我一样回报这个大神什么,你就没有必要买这本书了。他的博文就是这本书的一个浓缩,或者说精华吧。 这本书还被翻译成了中文版,不过我不建议大家看中文翻译版,我现在已经不再看各种翻译书了,计算机的东西需要看翻译版么?! 而且这本书的英文确实也很好懂。

关于我跟Brendan之间的交集,还有一件事。 我在2017年给Linux内核贡献了一个增强tcp_set_state这个tracepoint的patchset(见net: tracepoint: replace tcp_set_state tracepoint with inet_sock_set_state tracepoint),然后Brendan看到这个改动后,发邮件给我和networking的掌门人David Miller问这个patchset是否会出现在4.15的内核上,我答复他说不会出现在4.15上会出现在4.16上。后来Brendan把我的这个patchset写在了他的一篇blog里:TCP Tracepoints 可见Brendan一直在密切关注Linux社区的技术动态,尤其是涉及到问题分析以及性能优化手段的技术动态。所以关注Brendan你也可以了解到Linux社区一些有价值的最新技术动态。

Brendan Gregg: 一个实战派大神相关推荐

  1. PMCAFF | 一个CRM产品大神的产品之路

    文 | 吴波 文前声明:此文,我纯属想到哪里写到哪里,请用审视的目光看此文,因为,会很疼! 看到这个题目,估计兄弟们会说,这孙子终于沦落到记流水账的地步了.哇哈哈!BOB.WU出品必属精品.不按常理出 ...

  2. 公司挖来一个阿里Java大神,生产环境故障调优很溜

    目录 线上系统是如何运行的? CPU 是如何并发运行多个线程的? 线程太多会导致什么样的后果? 经常听说的 CPU 使用率和负载到底是什么? 如何通过 top 命令来查看 CPU 使用率和负载? 今天 ...

  3. 阿里云服务器安装oracle11g-整理实战各路大神汇总

    Oracle静默安装,是一种高效.便捷的安装方法.很多时候我们在服务器上安装oracle,只有终端环境,用不了OUI(即图形界面)的安装方式,只能采用静默安装. 一.安装前准备 1.检查swap 关于 ...

  4. 发现一个骨灰级图形学大神的博客

    这家伙是个老外,从DOS时代起就用开始写图形程序了,今天终于见到了他的博客: http://iquilezles.org/www/index.htm

  5. 这几excel操作技巧,每一个都是大神和菜鸟的分水岭!

    我们在工作的时候对遇到一些数据以及一些文件需要进行处理,在很多的地方都会接触到excel,但是对于一般人来说excel大部分都是停留在初级水平,所以想要进行一些高层次的操作一般都不知道如何去进行,小编 ...

  6. 删除vlan 华为s5720_小白一个!向大神请教华为S5720S配置问题(已解决) - 网络管理论坛 - 51CTO技术论坛_中国领先的IT技术社区...

    发表于 2018-7-14 12:31 | 来自 51CTO网页 引用:原帖由 semivowels 于 2018-7-14 02:04 发表 HUAWEI> system-view [HUAW ...

  7. 酷派手机android版本,酷派大神的手机系统是什么?酷派大神能升级安卓4.3吗?...

    酷派大神的手机系统是什么 酷派大神运行基于Android4.2.2深度定制的CoolLife UI 5.5系统. CoolLife UI的解锁方式有很多种,用户可以根据自己的喜好自行设置,默认的解锁方 ...

  8. 如何在大学里成为IT技术大神?

    阅读本文大概需要 20 分钟. 写在前面 前文回顾:机器学习实战--住房月租金预测(2) 这篇文章并非原创,在大一的时候完全是被标题所吸引,好在文章没有让自己失望,现在回顾自己学习编程的日子里,正是这 ...

  9. 白杨SEO:你愿意和我用五年做一件事吗?白杨流量汇,与流量实战派一起向前

    你好,我是白杨SEO. 5年前,我是某云视频公司一枚产品运营. 更多图片,在公众号白杨SEO上可以查看. 2017年4月,报名28推公益新媒体实战培训.从最开始的相关的50个好友开始,到现在五个微信2 ...

最新文章

  1. Python 的练手项目有哪些值得推荐?
  2. JavaScript有关的10个怪癖和秘密(转)
  3. 新的GNSS精度度量是怎样定义的?
  4. SQL中like的用法
  5. 小白学数据分析------日活跃人数分析
  6. XSS与CSRF两种跨站攻击比较
  7. Windows平台RTMP|RTSP播放器实现画面全屏功能
  8. excel三次样条函数_用于数字成像的双三次插值技术?
  9. 传统语音识别GMM和HMM
  10. 饿了么:日订单量超900万的架构设计及演进之路
  11. Apache Flink ML 2.0.0 发布公告
  12. oracle没有卸载,oracle卸载没有正确卸载怎么办??
  13. 【油猴插件】用Tampermonkey来实现百度云满速下载和批量离线
  14. Python基础练习-每日一题-大家来找茬!
  15. 小米平板2刷哪个系统更流畅_大神教你小米平板2如何刷Windows 10系统
  16. win7无法查看win10工作组计算机,win7不显示工作组解决方法
  17. Andorid通话自动录音
  18. 观光公交(codevs 1139)题解
  19. 关于IOS设备window onscroll滚动条滚动事件不触发的问题
  20. MIT Technology Review 2020年“十大突破性技术”解读 【中国科学基金】2020年第3期发布...

热门文章

  1. 联通短消息服务器域名,中国联通域名服务器地址
  2. 怎样成为精力管理的高手-听书有感
  3. 2021/7/8——集训Day.3
  4. GDOI2017游记
  5. 内是不是半包围结构_半包围结构是什么意思 半包围结构字的书写规则
  6. 一些应急响应教学视频笔记
  7. 武大的计算机博士,史上最牛武汉大学之博士招生黑幕
  8. 纯CSS实现枫叶下落
  9. 优步UBER司机全国各地奖励政策汇总 (4月4日-4月10日)
  10. 【李开复】成功、自信、快乐(三)