摘要: 上一节我们学习了 Linux 磁盘 I/O 的工作原理,并了解了由文件系统层、通用块层和设备层构成的 Linux 存储系统 I/O 栈。 其中,通用块层是 Linux 磁盘 I/O 的核心。向上,它为文件系统和应用程序,提供访问了块设备的标准接口;向下,把各种异构的磁盘设备,抽象为统一的块设备,并会 阅读全文
posted @ 2020-11-23 21:55 元贞 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 上一节,我们学习了 Linux 文件系统的工作原理。简单回顾一下,文件系统是对存储设备上的文件,进行组织管理的一种机制。而 Linux 在各种文件系统实现上,又抽象了一层虚拟文件系统 VFS,它定义了一组,所有文件系统都支持的,数据结构和标准接口。 这样,对应用程序来说,只需要跟 VFS 提供的统一 阅读全文
posted @ 2020-11-23 20:53 元贞 阅读(353) 评论(0) 推荐(0) 编辑
摘要: 通过前面 CPU 和内存模块的学习,我相信,你已经掌握了 CPU 和内存的性能分析以及优化思路。从这一节开始,我 们将进入下一个重要模块——文件系统和磁盘的 I/O 性能。 同 CPU、内存一样,磁盘和文件系统的管理,也是操作系统最核心的功能。 磁盘为系统提供了最基本的持久化存储。 文件系统则在磁盘 阅读全文
posted @ 2020-11-23 17:44 元贞 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 问题 1:网络收发过程中缓冲区的位置 第一点,是网络收发过程中,收发队列和缓冲区位置的疑问。 在 关于 Linux 网络,你必须要知道这些 中,我曾介绍过 Linux 网络的收发流程。这个流程涉及到了多个队列和缓冲区,包括: 网卡收发网络包时,通过 DMA 方式交互的环形缓冲区; 网卡中断处理程序为 阅读全文
posted @ 2020-11-23 15:48 元贞 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 在优化网络的性能时,你可以结合 Linux 系统的网络协议栈和网络收发流程,然后从应用程序、套接字、传输层、网络层再到链路层等每个层次,进行逐层优化。上一期我们主要学习了应用程序和套接字的优化思路,比如: 在应用程序中,主要优化 I/O 模型、工作模型以及应用层的网络协议; 在套接字层中,主要优化套 阅读全文
posted @ 2020-11-23 15:41 元贞 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 上一节,我们了解了 NAT(网络地址转换)的原理,学会了如何排查 NAT 带来的性能问题,最后还总结了 NAT 性能优化的基本思路。我先带你简单回顾一下。 NAT 基于 Linux 内核的连接跟踪机制,实现了 IP 地址及端口号重写的功能,主要被用来解决公网 IP 地址短缺的问题。 在分析 NAT 阅读全文
posted @ 2020-11-23 15:13 元贞 阅读(872) 评论(0) 推荐(0) 编辑
摘要: 上一节,我们学习了 NAT 的原理,明白了如何在 Linux 中管理 NAT 规则。先来简单复习一下。 NAT 技术能够重写 IP 数据包的源 IP 或目的 IP,所以普遍用来解决公网 IP 地址短缺的问题。它可以让网络中的多台主机,通过共享同一个公网 IP 地址,来访问外网资源。同时,由于 NAT 阅读全文
posted @ 2020-11-23 11:07 元贞 阅读(721) 评论(0) 推荐(0) 编辑
摘要: 上一节,探究了网络延迟增大问题的分析方法,并通过一个案例,掌握了如何用 hping3、tcpdump、Wireshark、strace 等工具,来排查和定位问题的根源。 简单回顾一下,网络延迟是最核心的网络性能指标。由于网络传输、网络包处理等各种因素的影响,网络延迟不可避免。但过大的网络延迟,会直接 阅读全文
posted @ 2020-11-23 10:51 元贞 阅读(921) 评论(0) 推荐(0) 编辑
摘要: 上一节,学习了碰到分布式拒绝服务(DDoS)的缓解方法。简单回顾一下,DDoS 利用大量的伪造请求,导致目标服务要耗费大量资源,来处理这些无效请求,进而无法正常响应正常用户的请求。 由于 DDoS 的分布式、大流量、难追踪等特点,目前确实还没有方法,能够完全防御 DDoS 带来的问题,我们只能设法缓 阅读全文
posted @ 2020-11-23 10:30 元贞 阅读(702) 评论(0) 推荐(0) 编辑