出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列。

本文档主要是结合Linux 大牛, 高级性能架构师 Gregg 更新 Linux 性能调优工具的博文,搜集Linux系统性能优化相关文章整理后的一篇综合性文章,主要是结合博文对涉及到的原理和性能测试的工具展开说明。

背景知识:具备背景知识是分析性能问题时需要了解的。比如硬件 cache;再比如操作系统内核。应用程序的行为细节往往是和这些东西互相牵扯的,这些底层的东西会以意想不到的方式影响应用程序的性能,比如某些程序无法充分利用 cache,从而导致性能下降。比如不必要地调用过多的系统调用,造成频繁的内核 / 用户切换等。

性能分析工具

首先来看一张图:

用法的英文_awk用法_shell中awk的用法

上图是 Gregg 的一次性能分析的分享,这里面的所有工具都可以通过 man来获得它的帮助文档,下面简单介绍介绍一下常规的用法:

–虚拟内存统计

(tics,虚拟内存统计)是 Linux 中监控内存的常用工具,可对操作系统的虚拟内存、进程、CPU 等的整体情况进行监视。 的常规用法: times即每隔 秒采样一次,共采样 times次,如果省略 times,则一直采集数据,直到用户手动停止为止。简单举个例子:

可以使用 ctrl+c停止 采集数据。

第一行显示了系统自启动以来的平均值,第二行开始显示现在正在发生的情况,接下来的行会显示每5秒间隔发生了什么,每一列的含义在头部,如下所示:

内存不足的表现:free 急剧减少,回收 和 cache 也无济于事,大量使用交换分区(swpd),页面交换(swap)频繁,读写磁盘数量(io)增多,缺页中断(in)增多,上下文切换(cs)次数增多,等待IO的进程数(b)增多,大量CPU时间用于等待IO(wa)

–用于报告中央处理器统计信息

用于报告中央处理器(CPU)统计信息和整个系统、适配器、tty 设备、磁盘和 CD-ROM 的输入/输出统计信息,默认显示了与 相同的 cpu 使用信息,使用以下命令显示扩展的设备统计:

第一行显示的是自系统启动以来的平均值,然后显示增量的平均值,每个设备一行。

常见 linux 的磁盘 IO 指标的缩写习惯:rq 是 ,r 是 read,w 是 write,qu 是 queue,sz 是 size,a 是,tm 是 time,svc 是 。

dstat–系统监控工具

dstat 显示了 cpu 使用情况,磁盘 io 情况,网络发包情况和换页情况,输出是彩色的,可读性较强,相对于 和 的输入更加详细且较为直观。在使用时,直接输入命令即可,当然也可以使用特定参数。

如下:dstat –

用法的英文_shell中awk的用法_awk用法

iotop–LINUX进程实时监控工具

iotop命令是专门显示硬盘IO的命令,界面风格类似top命令,可以显示IO负载具体是由哪个进程产生的。是一个用来监视磁盘I/O使用状况的top类工具,具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。

可以以非交互的方式使用:

iotop –bod

查看每个进程的 I/O,可以使用

, –d

–监控系统资源情况

主要用于监控全部或指定进程占用系统资源的情况,如 CPU,内存、设备 IO、任务切换、线程等。

使用方法:

–d

还可以用以统计CPU使用信息:

–u

统计内存信息:

–r

top

任务区域默认显示:进程 ID,有效用户,进程优先级,NICE 值,进程使用的虚拟内存,物理内存和共享内存,进程状态,CPU 占用率,内存占用率,累计 CPU 时间,进程命令行信息。

htop

htop 是 Linux 系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要 。

用法的英文_shell中awk的用法_awk用法

Htop 可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。

与 top 相比,htop 有以下优点:

是 的缩写,是实时系统监控工具。其报告CPU的一些统计信息,这些信息存放在 /proc/stat文件中。在多 CPUs 系统里,其不但能查看所有 CPU 的平均状况信息,而且能够查看特定 CPU 的信息。常见用法:

–P ALL times

用于显示与 IP、TCP、UDP和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

常见用法:

–npl # 可以查看你要打开的端口是否已经打开。

–rn # 打印路由表信息。

–in# 提供系统上的接口信息,打印每个接口的MTU,输入分组数,输入错误,输出分组数,输出错误,冲突以及当前的输出队列的长度。

ps–显示当前进程的状态

ps 参数太多,具体使用方法可以参考 man ps

常用的方法:

ps aux #

ps –ef |grep #

杀掉某一程序的方法:

ps aux | grep | grep –v grep | awk ‘{print$2}’ xargs kill-9

杀掉僵尸进程:

ps –eal | awk ‘{if($2== “Z”){print$4}}’ | xargs kill-9

跟踪程序执行过程中产生的系统调用及接收到的信号,帮助分析程序或命令执行中遇到的异常情况。

举例:查看 在 linux 上加载哪种配置文件,可以通过运行下面的命令:

–e –print– > /dev/null

能够打印系统总共运行了多长时间和系统的平均负载, 命令最后输出的三个数字的含义分别是 1分钟,5分钟,15分钟内系统的平均负荷。

lsof

lsof(list open files)是一个列出当前系统打开文件的工具。通过 lsof 工具能够查看这个列表对系统检测及排错,常见的用法:

查看文件系统阻塞

lsof /boot

查看端口号被哪个进程占用

lsof -i : 3306

查看用户打开哪些文件

lsof –u

查看进程打开哪些文件

lsof –p 4838

查看远程已打开的网络链接

lsof –i @192.168.34.128

perf

perf 是 Linux 自带的系统性能优化工具。优势在于与 Linux 的紧密结合,它可以最先应用到加入 的new ,用于查看热点函数,查看 cashe miss 的比率,从而帮助开发者来优化程序性能。

性能调优工具如 perf, 等的基本原理都是对被监测对象进行采样,最简单的情形是根据 tick 中断进行采样,即在 tick 中断内触发采样点,在采样点里判断程序当时的上下文。

假如一个程序 90% 的时间都花费在函数 foo 上,那么 90% 的采样点都应该落在函数 foo 的上下文中。运气不可捉摸,但我想只要采样频率足够高,采样时间足够长,那么以上推论就比较可靠。因此,通过 tick 触发采样,我们便可以了解程序中哪些地方最耗时间,从而重点分析。

汇总

结合以上常用的性能测试命令并联系文初的性能分析工具的图,就可以初步了解到性能分析过程中哪个方面的性能使用哪方面的工具(命令)。

常用的性能测试工具

熟练并精通了第二部分的性能分析命令工具,引入几个性能测试的工具,介绍之前先简单了解几个性能测试工具:

Linux tools | Linux 性能观测工具

shell中awk的用法_用法的英文_awk用法

Linux tools | Linux 性能测评工具

用法的英文_awk用法_shell中awk的用法

是一款性能测评工具,对于不同模块的性能测试可以使用相应的工具。

Linux tools | Linux 性能调优工具

用法的英文_awk用法_shell中awk的用法

是一款性能调优工具,主要是从linux内核源码层进行的调优。

Linux sar | linux性能观测工具

用法的英文_awk用法_shell中awk的用法

sar( 系统活动情况报告)是目前LINUX上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC 有关的活动等方面。sar 的常规使用方式:

sar [] [-A] [-o file] t [n]

其中:t 为采样间隔,n 为采样次数,默认值是1;-o file 表示将命令结果以二进制格式存放在文件中,file 是文件名。 为命令行选项。

END

官方站点:

Linux命令大全:

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,永久会员只需109元,全站资源免费下载 点击查看详情
站 长 微 信: nanadh666

声明:1、本内容转载于网络,版权归原作者所有!2、本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。3、本内容若侵犯到你的版权利益,请联系我们,会尽快给予删除处理!