0、开篇词:万变不离其宗,性能优化也有章可循你好,我是陶辉。欢迎你和我一起学习“系统性能优化”。 从2004年毕业到现在,无论我在华为、思科、腾讯、阿里巴巴等等哪家公司,我的工作总是与“性能”相伴,从底层、应用层到前端,我一直都很关心系统如何能够服务更多的用户,提供更快的体验。换句话说啊,性能...2025-11-05系统性能调优必知必会
1、CPU缓存:怎样写代码能够让CPU执行得更快?你好,我是陶辉。 这是课程的第一讲,我们先从主机最重要的部件CPU开始,聊聊如何通过提升CPU缓存的命中率来优化程序的性能。 任何代码的执行都依赖CPU,通常,使用好CPU是操作系统内核的工作。然而,当我们编写计算密集型的程序时,CPU的执行效率就开...2025-11-05系统性能调优必知必会
2、内存池:如何提升内存分配的效率?你好,我是陶辉。 上一讲我们提到,高频地命中CPU缓存可以提升性能。这一讲我们把关注点从CPU转移到内存,看看如何提升内存分配的效率。 或许有同学会认为,我又不写底层框架,内存分配也依赖虚拟机,并不需要应用开发者了解。如果你也这么认为,我们不妨看看这...2025-11-05系统性能调优必知必会
3、索引:如何用哈希表管理亿级对象?你好,我是陶辉。 上一讲我们谈到,Ptmalloc2为子线程预分配了64MB内存池,虽然增大了内存消耗,但却加快了分配速度,这就是以空间换时间的思想。 在内存有限的单片机上运行嵌入式程序时,我们会压缩数据的空间占用,以时间换空间;但在面向海量用户的分...2025-11-05系统性能调优必知必会
4、零拷贝:如何高效地传输文件?你好,我是陶辉。 上一讲我们谈到,当索引的大小超过内存时,就会用磁盘存放索引。磁盘的读写速度远慢于内存,所以才针对磁盘设计了减少读写次数的B树索引。 磁盘是主机中最慢的硬件之一,常常是性能瓶颈,所以优化它能获得立竿见影的效果。 因此,针对磁盘的优化技...2025-11-05系统性能调优必知必会
5、协程:如何快速地实现高并发服务?你好,我是陶辉。 上一讲谈到,零拷贝通过减少上下文切换次数,提升了文件传输的性能。事实上高并发服务也是通过降低切换成本实现的,这一讲我们来看看它是如何做到的。 如果你需要访问多个服务来完成一个请求的处理,比如实现文件上传功能时,首先访问Redis缓存...2025-11-05系统性能调优必知必会
6、锁:如何根据业务场景选择合适的锁?你好,我是陶辉。 上一讲我们谈到了实现高并发的不同方案,这一讲我们来谈谈如何根据业务场景选择合适的锁。 我们知道,多线程下为了确保数据不会出错,必须加锁后才能访问共享资源。我们最常用的是互斥锁,然而,还有很多种不同的锁,比如自旋锁、读写锁等等,它们分...2025-11-05系统性能调优必知必会
7、性能好,效率高的一对多通讯该如何实现?你好,我是陶辉。从这一讲开始,我们将从单机进入网络层面的性能优化。 我们接触过的绝大多数通讯方式,无论是面向连接的HTTP协议,还是无连接的DNS协议,都是一对一收发消息的。其实,除了一对一,还有一对多的通讯方式,它在网络资源的利用上效率要比一对一高...2025-11-05系统性能调优必知必会
8、事件驱动:C10M是如何实现的?你好,我是陶辉。 上一讲介绍了广播与组播这种一对多通讯方式,从这一讲开始,我们回到主流的一对一通讯方式。 早些年我们谈到高并发,总是会提到C10K,这是指服务器同时处理1万个TCP连接。随着服务器性能的提升,近来我们更希望单台服务器的并发能力可以达到...2025-11-05系统性能调优必知必会
9、如何提升TCP三次握手的性能?你好,我是陶辉。 上一讲我们提到TCP在三次握手建立连接、四次握手关闭连接时是怎样产生事件的,这两个过程中TCP连接经历了复杂的状态变化,既容易导致编程出错,也有很大的优化空间。这一讲我们看看在Linux操作系统下,如何优化TCP的三次握手流程,提升...2025-11-05系统性能调优必知必会