一.磁盘 1.机械磁盘 2.固态磁盘 3.相同磁盘随机I/O比连续I/O慢很多 4.最小单位 5.接口 6.RAID陈列卡 7.网路存储 二.通用块层 1.概念 2.第一功能 3.第二功能 4.I/O调度算法 三.I/O栈 1.Linux存储系统I/O栈全景图 2.全景图详解 1.文件系统层 2.通用块层 3.设备层 4.存储系统的I/O 5.优化…
一.内存的分配和回收 1.管理内存的过程中,也很容易发生各种各样的“事故”, 对应用程序来说,动态内存的分配和回收,是既核心又复杂的一的一个逻辑功能模块.管理内存的过程中,也很容易发生各种各样的“事故”, 比如,没正确回收分配后的内存,导致了泄漏.访问的是已分配内存边界外的地址,导致程序异常退出,等等. 你在程序中定义了一个局部变量,比如一个整数数组 int data[64] ,就定义了一个可以存储 64 个整数的内存段.由于这是一个局部变量,它会从内它会从内存空间的栈中分配内存 1.栈内存由系…
一.性能优化方法论 不可中断进程案例 二.怎么评估性能优化的效果? 1.评估思路 2.几个为什么 1.为什么要选择不同维度的指标? 应用程序和系统资源是相辅相成的关系 2.性能优化的最终目的和结果? 好的应用程序 3.为什么必须要使用应用程序的指标,来评估性能优化的整体效果? 系统优化总是为应用程序服务的 4.为什么需要用系统资源的指标,来观察和分析瓶颈的来源 系统资源的使用情况是影响应用程序性能的根源 三.多个性能问题同时存在,要怎么选择? 四.有多种优化方法时,要如何选择? 五.系统优化 六…
一.free数据的来源 1.碰到看不明白的指标时该怎么办吗? 不懂就去查手册.用 man 命令查询 free 的文档.就可以找到对应指标的详细说明.比如,我们执行 man fre... 2.free数据的来源 [root@ccb-installment-api ~]# man free NAME free - Display amount of free and used memory in the system SYNOPSIS free [options] DESCRIPTION free…
一.案例环境描述 1.环境准备 2CPU,4GB内存 预先安装docker sysstat工具 2.温馨提示 案例中 Python 应用的核心逻辑比较简单,你可能一眼就能看出问题,但实际生产环境中的源码就复杂多了.所以,我依旧建议,操作之前别看源码,避免先入为主,要把它当成一个黑盒来分析.这样 你可以更好把握住,怎么从系统的资源使用问题出发,分析出瓶颈所在的应用,以及瓶颈在应用中大概的位置 3.应用环境 1.运行目标应用 docker run -v /tmp:/tmp --name=app -i…
一.案例环境描述 1.环境准备 2CPU,4GB内存 预先安装docker sysstat工具 apt install docker.io sysstat nake git 案例总共由三个容器组成: 1.包括一个 MySQL 数据库应用.2.一个商品搜索应用3.一个数据处理的应用. 其中,商品搜索应用以 HTTP 的形式提供了一个接口: /:返回 Index Page:/db/insert/products/:插入指定数量的商品信息/products/:查询指定商品的信息,并返回处理时间. 2.…
一.上节回顾 上一节,我们一起回顾了常见的文件系统和磁盘 I/O 性能指标,梳理了核心的 I/O 性能观测工具,最后还总结了快速分析 I/O 性能问题的思路. 虽然 I/O 的性能指标很多,相应的性能分析工具也有好几个,但理解了各种指标的含义后,你就会发现它们其实都有一定的关联. 顺着这些关系往下理解,你就会发现,掌握这些常用的瓶颈分析思路,其实并不难.找出了 I/O 的性能瓶颈后,下一步要做的就是优化了,也就是如何以最快的速度完成 I/O 操作,或者换个思路,减少甚至避免磁盘的 I/O 操作.…
一.上节回顾 上一节,我带你一起学习了网络性能的评估方法.简单回顾一下,Linux 网络基于 TCP/IP协议栈构建,而在协议栈的不同层,我们所关注的网络性能也不尽相同. 在应用层,我们关注的是应用程序的并发连接数.每秒请求数.处理延迟.错误数等,可以使用 wrk.Jmeter 等工具,模拟用户的负载,得到想要的测试结果. 而在传输层,我们关注的是 TCP.UDP 等传输层协议的工作状况,比如 TCP 连接数.TCP 重传.TCP 错误数等.此时,你可以使用 iperf.netperf 等,来测…
一.内存映射 内存管理也是操作系统最核心的功能之一,内存主要用来存储系统和应用程序的指令.数据.缓存等 1.我们通说的内存指的是物理内存还是虚拟内存? 我们通常说的内存容量,其实这指的是物理内存,物理内存也称为主存,大多数计算机用的主存都是动态随机访问内存(DRAM).只有内核才可以直接访问物理内存. 那么,进程要访问内存时,该怎么办呢? 2.进程是如何访问内存的? Linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的.这样,进程就可以很方便地访问内存,更确切地说是…
一.坏境准备 1.拓扑图 2.安装包 在第9节的基础上 在VM2上安装hping3依奈包 wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz tar xf libpcap-1.9.0.tar.gz cd libpcap-1.9.0/ ./configure && make && make install [root@luoahong pcap]# pwd /root/libpcap-1.9.0/pcap [roo…