目录
1. CPU类
1.1. 什么是缓存命中率?
缓存命中率:通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力越强。
缓存的粒度越小,命中率就越高,对象缓存是缓存粒度最小的,因此被命中的几率更高。
- 命中时:可以直接通过缓存获取到需要的数据。
- 未命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。
命中率 = 命中数 / (命中数 + 未命中数)
1.2. 什么是上下文切换?
上下文切换指的是内核在CPU上对进程或者线程进行切换,频繁的切换会对性能造成负面影响,切换次数越低越好。
vmstat # 查看整体上下文切换次数
--cs列表示每秒上下文切换次数
pidstat -w # 查看每个进程的上下文切换次数
--cswch/s :每秒自愿上下文切换的总数
--nvcswch/s:每秒非自愿上下文切换的总数
1.3. 线程与进程
- 进程是正在运行的程序的实例,每一个进程都有它自己的地址空间。
- 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
可以从进程ID中看出,线程的父ID为进程ID
1.4. 并发与并行
- 并发:一个CPU处理器同时处理多个线程任务(CPU在多个线程之间快速的交替执行CPU把运行时间划分成若干个(微小)时间段,公平的分配给各个线程执行,在一个时间段的线程运行时,其他线程处于挂起状态,这种就称之为并发)。
- 并行:多个CPU处理器同时处理多个线程任务(当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这就被称之为并行)。
并发:1个人按顺序削完5苹果。
并行:5个人同时削5个苹果,每人1个,互不干涉。
2. 内存类
2.1. free 命令
free # 查看内存使用情况(默认单位:KB,可以通过-k、-m、-g、-h指定单位)
--mem :表示物理内存
--swap:表示交换分区
-- -/+ buffers/cache used:实际使用的内存(used - buffers - cached)
-- -/+ buffers/cache free:实际可用内存(free + buffers + cached)
--total :总内存大小
--used :已使用的内存
--free :空闲的内存
--shared :多个进程共享的内存总额
--buffers:块设备的读写缓冲区
--cached :page cache的内存,即文件系统的cache。
如果cache的值很大,则说明cache住的文件数量很多。如果频繁访问到的文件都能被cache住,那么磁盘的读I/O必定会非常小,但是过大的文件cache可能会影响到内存的使用效率,导致操作系统上其他进程的内存不够大,甚至还会使用到swap空间。
2.2. 物理内存和交换分区
- 物理内存就是机器本身的内存大小(由内存条大小数量决定)。
- 交换分区(swap)就是Linux下的虚拟内存分区。需要拿出一部分硬盘空间来充当内存使用,当物理内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。
3. 磁盘类
3.1. TPS、QPS、IOPS
- TPS(Transactions Per Second):每秒处理的事务数。TPS包括一条消息入和出,加上一次用户数据库访问(业务TPS = CAPS × 每个呼叫平均TPS)。评价系统性能均以每秒钟完成的技术交易的数量来衡量。系统整体处理能力取决于处理能力最低模块的TPS值。
- QPS(Queries Per Second):每秒查询数,包括了用户请求服务器、服务器自己的内部处理、服务器返回给用户。一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入QPS中。
QPS基本类似于TPS,但是不同的是,对于一个页面的一次访问,形成一个TPS;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入QPS之中。
因特网上,经常用每秒查询率来衡量域名系统服务器的机器的性能,即为QPS。对应fetches/sec,即每秒的响应请求数,也就是最大吞吐能力。
- IOPS(Input/Output Per Second):每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。随机读写频繁的应用,如OLTP(Online Transaction Processing),IOPS是关键衡量指标。另一个重要指标是数据吞吐量(Throughput),指单位时间内可以成功传输的数据数量。对于大量顺序读写的应用,如VOD(Video On Demand),则更关注吞吐量指标。
IOPS的计算公式:IOPS = 1000ms / (寻道时间 + 旋转延迟时间)
4. 网络类
4.1. 网络带宽
网络带宽是指在单位时间(一般指的是1秒钟)内能传输的数据量。网络和高速公路类似,带宽越大,就类似高速公路的车道越多,其通行能力越强。
网络传输速率 = 带宽 / 8
例如带宽为1000M,那么实际的传输速率 = 1000M / 8 = 125M/s
ifconfig # 查看网卡名
ethtool [网卡名] |grep Speed # 查看带宽
4.2. 吞吐量和吞吐率
- 吞吐量是指系统在单位时间内处理请求的数量,表现了一个系统的承压能力。
- 吞吐率是一种关于计算机或数据通信系统(如网桥、路由器、网关或广域网连接等)数据传输率的测度。
吞吐率作为一个重要的衡量指标,最主要应用在并行处理上,属于系统结构中最重要的一个变量,它的定义是:单位时间的吞吐量。吞吐率在性能测试中指单位时间内在网络上传输的数据量。