天猫|引人入胜,实战讲解“Java 性能调优六大工具”之 linux 命令行工具( 二 )


用的物理内存、 空闲物理内存和内核缓冲的使用量 。Swap 行依次表示
交换区总量、已使用的交换区大小、空闲交换区大小和缓冲交换区大小 。
top 命令输出结果的后半部分是进程信息区 , 显示系统内各个进程的资源使用情况 。 在 Top 命令的输出结果中 , 可能出现的列及其含义如下(因为代码或开发环境不同 , 以下列不一定全部显示):
·PID:进程 ID 。
·PPID:父进程 ID 。
·UID:进程所有者的用户 ID 。
·USER:进程所有者的用户名 。
·GROUP:进程所有者的组名 。
·TTY:启动进程的终端名 。 不是从终端启动的进程则显示为“?” 。
·PR:优先级 。
·NI:nice 值 。 负值表示高优先级 , 正值表示低优先级 。
·P:最后使用的 CPU , 仅在多 CPU 环境中有意义 。
·%CPU:上次更新到现在的 CPU 时间占用百分比 。
·TIME:进程使用的 CPU 时间总计 , 单位为秒 。
·TIME+:进程使用的 CPU 时间总计 , 单位为 1/100s 。
·%MEM:进程使用的物理内存百分比 。
·VIRT:进程使用的虚拟内存总量 , 单位为 KB , VIRT=SWAP+RES 。
·SWAP:进程使用的虚拟内存中被换出的大小 , 单位为 KB 。
·RES:进程使用的未被换出的物理内存大小 , 单位为 KB , RES=CODE+DATA 。 ·CODE:可执行代码占用的物理内存大小 , 单位为 KB 。
·DATA:可执行代码以外的部分(数据段+栈)占用的物理内存大小 , 单位为 KB 。
·SHR:共享内存大小 , 单位为 KB 。 ·nFLT:页面错误次数 。 ·nDRT:最后一次写入到现在被修改过的页面数 。
·S:进程状态 。 D 表示不可中断的睡眠状态 , R 表示运行 , S 表示睡眠 , T 表示跟踪或停止 , Z 表示僵尸进程 。
·COMMAND:命令名/命令行 。
·WCHAN:若该进程在睡眠 , 则显示睡眠中的系统函数名 。
·Flags:任务标志 , 参考 sched.h 。
在 top 命令下按 F 键可以进行列的选择 , 按 O 键可以更改列的显示顺序 。 此外 , top 命令还有以下一些实用的交互指令 。
·H:显示帮助信息 。
·K:终止一个进程 。
·Q:退出程序 。
·C:切换显示命令的名称和完整的命令行 。
·M:根据驻留内存大小进行排序 。
·P:根据使用 CPU 的百分比大小进行排序 。
·T:根据时间/累计时间进行排序 。
·数字 1:显示所有 CPU 的负载情况 。
注意:使用 top 命令可以从宏观上观察系统的各个进程对 CPU 的占用情况及内存使用情况 。
二 , sar 命令
sar 命令也是 Linux 系统中重要的性能监测工具之一 , 它可以周期性地对内存和 CPU 使用情况进行采样 。 基本语法如下:

interval 和 count 分别表示采样周期和采样数量 。 options 选项可以指定 sar 命令对哪些性能数据进行采样(不同版本的 sar 命令选项可能有所不同 , 可以通过 sar-h 命令查看) 。
·-A:所有报告的总和 。
·-u:CPU 的利用率 。
·-d:硬盘使用报告 。
·-b:I/O 的情况 。
·-q:查看队列长度 。
·-r:内存使用统计信息 。
·-n:网络信息统计 。
·-o:采样结果输出到文件 。
下面的代码使用 sar 命令统计 CPU 的使用情况 , 每秒采样一次 , 共采样 3 次 。

下面的代码用于获取内存的使用情况 。

下面的代码用于获取 I/O 信息 。

注意:sar 命令可以查看 I/O 信息、内存信息及 CPU 的使用情况 。
三 , vmstat 命令
vmstat 也是一款功能比较齐全的性能监测工具 , 它可以统计 CPU、内存及 swap 的使用情况等信息 。 和 sar 工具类似 , vmstat 也可以指定采样周期和采样次数 。 下面的代码表示每秒采样一次 , 共计 3 次 。