网络架构实战课
15
15
1.0x
00:00/00:00
登录|注册

08|纵向扩展(上):常见的低性能代码逻辑有哪些?

你好,我是谢友鹏。
在前面的课程中,我们讨论了通过横向扩展(scale out)的网络架构提升系统性能,但并非所有场景都适合这种方式。
比如“大象流”(在网络中占用大量带宽的长时间持续传输的大数据流量)场景中,如果单台服务器的处理性能不足,那么无论怎么扩展也难以满足需求。还有,近期热门 AI 领域的模型训练网络,虽然可以通过分而治之的算法来并行处理,但大量矩阵运算要求极高的计算关联性,因此除了横向扩展之外,也需要考虑纵向扩展(scale up)。
人们对性能的追求从未停歇,总是希望在任何情况下最大化单台机器的性能表现,让我们从这节课开始提升单机性能之路。

性能优化的三个层次

影响性能的因素可以分为多个层次:
1.代码逻辑性能的第一个瓶颈往往是代码逻辑的效率。低效的代码逻辑,就像一个技术生疏的驾驶员,即使开的是一辆高性能的车,也无法发挥其最大潜力。因此,代码逻辑决定了系统性能的下限
2.网络模型与协议优化第二个层次是网络模型的选择和网络协议的优化。这就好比一个熟练的驾驶员,不但掌握了驾驶技能,还熟悉车辆原理,能够根据需求对车进行适当配置,使其更加得心应手。
3.单机架构优化第三个层次是架构上的优化。当一个熟练的驾驶员已经将普通车辆的性能发挥到极致,如果想进一步提速,就需要升级到更高性能的车辆。单机架构可以通过 DPDKXDP 等技术,减小用户态与内核态切换的开销,也可以通过软硬件结合、RDMAP4 等技术为 CPU 分担压力。这部分优化决定了单机性能的上限
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. 代码逻辑的效率对系统性能有重要影响,低效的代码逻辑会限制系统性能的下限。 2. 性能优化的三个层次中,第一个层次是代码逻辑性能,需要关注如何提升单机处理性能。 3. 优化方法包括使用跳表优化遍历、使用缓存优化查询、使用缓冲区适应前后端网络性能不匹配、处理器绑定以及使用非阻塞IO函数等。 4. 性能问题定位的基本逻辑通常是:收集信息、做出假设、验证假设,如果做出错误的假设,则重新推断或重复以上步骤。 5. 性能问题定位的方法论可以使用USE方法,即关注Utilization(利用率)、Saturation(饱和度)、Errors(错误)。 6. 市面上的性能分析工具包括采样工具perf、strace、pstack、Wireshark等,以及特定语言的性能分析工具如Golang的pprof。 7. 优化代码逻辑可以通过分析耗时测试结果,结合前面所学的知识进行优化,例如减小用户态与内核态切换的开销、优化数据处理尺寸、并发运行耗时且可并发的操作等.

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《网络架构实战课》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部