Unix/Linux - 系统性能
你好,有抱负的技术爱好者们!作为你友好的邻里计算机科学老师,我很高兴引导你进入Unix/Linux系统性能的迷人世界。如果你是编程新手,不用担心——我们将从基础开始,逐步深入学习。所以,拿起一杯咖啡(或者如果你喜欢,也可以是茶),让我们一起开始吧!
性能组件
在我们开始调整系统之前,理解组成系统性能的各个部分至关重要。将你的计算机想象为一个精心调校的乐团——每个组件都在创造和谐表演中扮演着关键角色。
1. CPU 使用率
中央处理器(CPU)就像我们乐团的指挥。它负责执行指令并协调所有其他组件。当我们谈论CPU使用率时,我们是在说这位指挥有多忙。
2. 内存使用率
内存,或者RAM,就像我们乐团的乐谱。它存储CPU需要快速访问的数据。如果我们耗尽内存,我们的性能可能会大幅下降。
3. 磁盘 I/O
磁盘输入/输出(I/O)就像乐手拿起新乐器或乐谱的过程。它包括从硬盘读取或写入数据,这相比于访问RAM可能是较慢的操作。
4. 网络性能
网络性能类似于我们的乐团如何相互聆听并保持同步。它涉及网络数据传输的速度和效率。
性能工具
现在我们理解了组件,让我们来看看一些可以用来测量和改善系统性能的工具。我喜欢将这些工具想象成我们乐团的调音仪器。
1. top 命令
top
命令就像是你系统的仪表盘。它提供了正在运行的过程和系统资源的实时视图。
$ top
这个命令将显示一个持续更新的进程列表,默认按CPU使用率排序。让我们分解你将看到的内容:
- PID:进程ID
- USER:进程的所有者
- PR:优先级
- NI:优先级值(影响优先级)
- VIRT:使用的虚拟内存
- RES:使用的物理内存
- SHR:共享内存
- S:进程状态
- %CPU:CPU使用率
- %MEM:内存使用率
- TIME+:总CPU时间
- COMMAND:命令名称
2. vmstat 命令
vmstat
命令就像是你系统的心脏听诊器——它报告关于进程、内存、分页、块I/O、捕获和CPU活动的信息。
$ vmstat 2 5
这个命令将每2秒显示一次系统统计信息,共5次迭代。输出包括:
- r:等待运行时间的进程数
- b:处于不可中断睡眠状态的进程数
- swpd:使用的虚拟内存量
- free:空闲内存量
- buff:用作缓冲区的内存量
- cache:用作缓存的内存量
- si:从磁盘交换到内存的内存量
- so:交换到磁盘的内存量
- bi:从块设备接收的块数
- bo:发送到块设备的块数
- in:每秒的中断数
- cs:每秒的上下文切换数
- us:运行非内核代码的时间
- sy:运行内核代码的时间
- id:空闲时间
- wa:等待I/O的时间
3. iostat 命令
iostat
命令就像是你磁盘驱动器的速度表。它报告CPU统计信息和设备分区的输入/输出统计信息。
$ iostat -x 2 5
这个命令将每2秒显示一次扩展统计信息,共5次迭代。输出包括:
- Device:设备名称
- rrqm/s:每秒合并的读取请求
- wrqm/s:每秒合并的写入请求
- r/s:每秒读取次数
- w/s:每秒写入次数
- rkB/s:每秒读取的千字节
- wkB/s:每秒写入的千字节
- avgrq-sz:平均请求大小(扇区)
- avgqu-sz:平均队列长度
- await:I/O请求的平均时间
- svctm:平均服务时间
- %util:I/O请求期间CPU时间的百分比
4. netstat 命令
netstat
命令就像是你网络的交通控制器。它显示网络连接、路由表、接口统计信息、伪装连接和多播成员资格。
$ netstat -tuln
这个命令将显示:
- 活动的Internet连接(TCP和UDP)
- 监听套接字
- 数字地址和端口号
输出包括:
- Proto:协议(TCP或UDP)
- Recv-Q:接收队列中的数据
- Send-Q:发送队列中的数据
- Local Address:本地端点
- Foreign Address:远程端点
- State:套接字状态
5. sar 命令
sar
(系统活动报告器)命令就像是你系统的黑匣子记录器。它收集、报告和保存系统活动信息。
$ sar -u 2 5
这个命令将每2秒显示一次CPU使用统计信息,共5次迭代。输出包括:
- %user:用户级别CPU利用率的百分比
- %nice:带优先级nice的用户级别CPU利用率的百分比
- %system:系统级别CPU利用率的百分比
- %iowait:CPU空闲时系统有未完成的磁盘I/O请求的时间百分比
- %steal:虚拟CPU在虚拟处理器服务另一个虚拟处理器时处于非自愿等待的时间百分比
- %idle:CPU空闲且系统没有未完成的磁盘I/O请求的时间百分比
以下是这些性能工具的总结表:
命令 | 目的 | 关键信息 |
---|---|---|
top | 实时系统监控 | 进程列表、CPU使用率、内存使用率 |
vmstat | 虚拟内存统计 | 进程、内存、分页、I/O、CPU活动 |
iostat | I/O统计 | CPU统计、设备I/O统计 |
netstat | 网络统计 | 网络连接、路由表、接口统计 |
sar | 系统活动报告 | CPU使用率、内存使用率、I/O活动、网络活动 |
记住,熟练使用这些工具就像学习演奏乐器一样——需要练习!如果一开始觉得难以应对,不要气馁。从其中一个工具开始,彻底理解它的输出,然后再继续下一个。
在我多年的教学经验中,我发现学生如果经常在自己的系统上尝试这些工具,会对系统性能有更深入的理解。这就像学会聆听乐团中的每个乐器——突然间,你可以准确地找出可以改进的地方。
所以,亲爱的学生们,我鼓励你们打开终端,开始探索。谁知道呢?你可能会成为下一个伟大的系统性能指挥!
Credits: Image by storyset