关于linux:Linux常用性能调测命令简介

4次阅读

共计 5756 个字符,预计需要花费 15 分钟才能阅读完成。

一、Linux 常用命令

1 top

简介:top 命令是 Linux 下罕用的性能剖析工具,可能实时显示零碎中各个过程的资源占用情况,相似于 Windows 的工作管理器。

top 应用格局:top[-] [d] [p] [q] [C] [S] [s] [n]

d 指定每两次屏幕信息刷新之间的工夫距离。当然用户能够应用 s 交互命令来扭转之。p 通过指定监控过程 ID 来仅仅监控某个过程的状态。q 该选项将使 top 没有任何提早的进行刷新。如果调用程序有超级用户权限,那么 top 将以尽可能高的优先级运行。S 指定累计模式。s 使 top 命令在平安模式中运行。这将去除交互命令所带来的潜在危险。i 使 top 不显示任何闲置或者僵死过程。c 显示整个命令行而不只是显示命令名。

top 罕用参数,top 是交互式命令,以下几个参数常常用到,在 top 界面输出以下字母:

 f 或者 F 从以后显示中增加或者删除我的项目。o 或者 O 扭转显示我的项目的程序。l 切换显示均匀负载和启动工夫信息。m 切换显示内存信息。t 切换显示过程和 CPU 状态信息。c 切换显示命令名称和残缺命令行。M 依据驻留内存大小进行排序。P 依据 CPU 应用百分比大小进行排序。

输入参数介绍:

total 过程总数 

running 正在运行的过程数 

sleeping 睡眠的过程数 

stopped 进行的过程数 

zombie 僵尸过程数

Cpu(s):

12.5% us 用户空间占用 CPU 百分比 

8.4% sy 内核空间占用 CPU 百分比 

0.0% ni 用户过程空间内扭转过优先级的过程占用 CPU 百分比 

74.67% id 闲暇 CPU 百分比 

1.4% wa 期待输入输出的 CPU 工夫百分比 

0.0%hi:硬件 CPU 中断占用百分比 

3.1%si:软中断占用百分比 

0.0%st:虚拟机占用百分比

按 1 切换过程查看单个 cpu 详情模式


2 mpstat

简介:mpstat(multi-processor statistics),它能实时检测多处理器零碎上的每个 cpu 的应用状况。

格局:mpstat [-P {0|1|…|ALL} ] [interval] [count]

常用命令举例:mpstat -P ALL 1 100
输入:

个别咱们最关怀的几个:

%usr 零碎上程序运行在用户空间的工夫占 CPU 总运行工夫的比例。%sys 零碎上所有过程运行在内核空间占 CPU 总工夫的比例。%idle 零碎闲暇工夫占 CPU 总运行工夫的比例。%iowait CPU 期待磁盘 IO 解决的工夫占 CPU 运行总工夫的比例。

3 free

命令格局:free -m
数据读取自 /proc/meminfo 文件

      1 2 3 4 5 6 
       total used free shared buffers cached 
1 Mem: 15793 147001093 0 3237922 
2 -/+ buffers/cache: 64549339 
3 Swap: 2039 2009 30

第一行的输入时从操作系统(OS)来看的。也就是说,从 OS 的角度来看,计算机上一共有:

15793MB(缺省时 free 的单位为 KB)物理内存,即 F1;

在这些物理内存中有 14700MB(即 F1)被应用了;

还用 1093(即 F1)是可用的;

A buffer is something that has yet to be“written”to disk.

A cache is something that has been“read”from the disk and stored for later use.

也就是说 buffer 是用于寄存要输入到 disk(块设施)的数据的,而 cache 是寄存从 disk 上读出的数据。这二者是为了进步 IO 性能的,并由 OS 治理。

F2=F1 – F1 – F1
F2 = F1 + F1 + F1


4 vmstat

简介:vmstat(virtual memory statistics),实时的输入零碎各资源的应用状况,如过程信息,CPU 使用率,内存应用及 I / O 应用等状况

[] # vmstat 5 4

procs ———–memory———- —swap– —–io—- –system– —–cpu—– 
r b swpd free buff cache si so bi bo in cs us sy id wa st 
0 0 2056748 283348 400532 8761104 0 0 5 170 0 0 10 6 83 1 0 
1 0 2056748 173896 400540 8761836 0 0 0 483 76313 112604 14 12 75 0 0 
1 0 2056748 176040 400548 8762240 0 0 0 268 77209 109122 11 8 80 0 0 
1 0 2056748 178884 400556 8762576 0 0 0 234 76773 109424 11 9 79 0 0

留神,第 1 行是自系统启动以来的均匀后果,前面输入的采样周期内的均匀后果,输入后果的字段含意解释如下:

Procs: 过程信息,r 示意运行队列 (就是说多少个过程真的调配到 CPU) 的过程数,b 示意不可中断睡眠过程数,阻塞过程。Memory: 内存信息,swpd 示意虚拟内存的应用数量,单位都是 KB。Swap: 替换分区(虚拟内存)的应用信息,单位 KB/s,si 示意数据由磁盘替换至内存的速率,so 示意数据由内存替换至磁盘的速率,如果这两个值常常变动,阐明内存不足。io: 块设施的应用信息,单位 blocks/s,bi 示意从块设施读取块的速率,bo 示意向块设施写入块的速率。System: 零碎信息,in 示意每秒产生的中断次数,cs 示意每秒产生上下文切换(过程切换)次数。CPU: CPU 的应用信息,这四个参数见后面介绍

5 iostat

简介:iostat 次要用于监控零碎设施的 IO 负载状况,iostat 首次运行时显示自系统启动开始的各项统计信息,之后运行 iostat 将显示自上次运行该命令当前的统计信息。

命令:参数很多,这里只列了我罕用的几个参数

iostat [-d] [-kx] [interval] [count]

-d 输入磁盘的详细信息 

-k 单位 k 

-x 输入所有详细信息

输入:

[] # iostat -kx 1 100

Linux 2.6.32.43-tlinux-1.0.17-default (V_*...*) 07/16/17 x86_64 (8 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle 
     1.86 0.00 1.60 0.07 0.00 96.46

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util 
sda 0.12 39.41 0.95 6.78 92.35 184.79 71.78 0.06 8.33 0.75 0.58

%util:在统计工夫内所有解决 IO 工夫,除以总共统计工夫。例如,如果统计距离 1 秒,该设施有 0.8 秒在解决 IO,而 0.2 秒闲置,那么该设施的 %util = 0.8/1 = 80%,所以该参数暗示了设施的忙碌水平。个别地,如果该参数是 100% 示意设施曾经靠近满负荷运行了。


6 df

简介:df 命令用于显示磁盘分区上的可应用的磁盘空间。默认显示单位为 KB。

命令: df

输入:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             10321208   5368524   4428396  55% /
/dev/sda3             20642428   9695556   9898296  50% /usr/local
/dev/sda4            928412856 742056300 139195844  85% /data
tmpfs                  4025928         0   4025928   0% /dev/shm

补充一个按目录大小排序命令:du -h –max-depth=1|sort -hr


7 lsof

简介:lsof(list open file),列出以后零碎关上的文件描述符。用此命令查看过程关上了哪些文件描述符,罕用于查看是否有文件句柄泄露。

格局:lsof

罕用参数:

lsof -p pid // 查看过程 pid 的所有句柄 

lsof -i// 显示所有关上的端口 

lsof -i:80 // 显示所有关上 80 端口的过程


8 Netstat

简介:Netstat 命令用于显示各种网络相干信息,如网络连接,路由表等。

参数阐明:

-a (all)显示所有选项,默认不显示 LISTEN 相干 

-t (tcp)仅显示 tcp 相干选项 

-u (udp)仅显示 udp 相干选项 

-n 回绝显示别名,能显示数字的全副转化成数字

-l 仅列出有在 Listen (监听) 的服務状态 

-p 显示建设相干链接的程序名 

-r 显示路由信息,路由表 

-e 显示扩大信息,例如 uid 等 

-s 按各个协定进行统计 

-c 每隔一个固定工夫,执行该 netstat 命令

提醒:LISTEN 和 LISTENING 的状态只有用 - a 或者 - l 能力看到

应用举例:

netstat -a 列出所有端口 

netstat -at 列出所有 tcp 端口 

netstat -au 列出所有 udp 端口 

netstat - l 只显示监听端口 

netstat - p 显示过程名

查看 hlwmp 信息:


9 sar

简介:sar(System Activity Reporter 系统活动状况报告)是目前 Linux 上最为全面的零碎性能剖析工具之一,能够从多方面对系统的流动进行报告,包含:文件的读写状况、零碎调用的应用状况、磁盘 I /O、CPU 效率、内存应用情况、过程流动及 IPC 无关的流动等。

查看网卡流量命令:sar -n DEV 2 100

输入:


10 tcpdump

简介:tcpdump 能够将网络中传送的数据包的“头”齐全截获下来提供剖析。它反对针对网络层、协定、主机、网络或端口的过滤,并提供 and、or、not 等逻辑语句来帮忙你去掉无用的信息。

应用参数阐明:

-i 指定 tcpdump 须要监听的接口. 任意网口 any,指定网口 lo 或者 eth0 等 

-s 指定抓包长度 0,示意整个包都抓,如果不设置默认将会是 68 字节 

-w 把包数据间接写入文件而不进行剖析和打印输出 

-x 以十六进制显示输入内容 

-n 不对地址 (比方, 主机地址, 端口号) 进行数字示意到名字示意的转换.

还有很多选项,这里不一一列出,能够查帮忙文档

罕用条件语句,不一一列举,能够查资料:

host 

src host 

dst host 

Port 

and or not 

tcp 

Udp

常见应用命令举例:
sudo /usr/sbin/tcpdump -i eth1 -s 0 src host 10.120.100.33 and port 26941 -w /tmp/captuer.cap


11 strace

简介:strace 跟踪程序运行过程中执行零碎调用的接管到的信号,并将零碎调用名,参数,返回值,信息及耗费的工夫输入到规范输入或者指定文件

命令参数阐明:

-c 统计每个零碎调用执行的工夫,执行次数和出错次数 

-f 跟踪由 fork 调用生成的子过程 

-t 在输入的每一行后面加上工夫信息 

-e trace=set 只跟踪指定的零碎调用如,-e trace=open, close, read 等 

-e trace=file 只跟踪文件操作相干的零碎调用 

-e trace=network 只跟踪网络相干的零碎调用 

-o 将后果输入到文件 

-p pid 指定过程


12 pstack

简介:pstack 用来查看过程的堆栈快照

命令:pstack pid

输入:pstack pid,输入过程的各线程的堆栈


13 perf top -p pid

简介:perf 是 Linux kernel 自带的零碎性能优化工具,perf 能够用于查看热点函数,从而帮忙开发者来优化程序性能。

命令:perf top -p pid 查看某个过程的函数热点

输入:


二、GDB 应用介绍

1 查看 core 文件

配置 core 文件大小,ulimit -c unlimited

查看生成的 coredump 文件

/home/user_00/services/spp_hlwcdkey/bin 下
gdb ./spp_hlwcdkey_worker /data/coredump/core_xxxx

2 用 GDB 启动过程

gdb –args ./spp_hlwcdkey_worker ../etc/spp_worker.xml

3 gdb attach 到曾经运行的过程

/home/user_00/services/spp_hlwcdkey/bin
gdb -p 12509

4 GDB 里罕用的命令

bt 查看堆栈 

f x 进入某层调用的函数 

P 打印某个变量 

B 设置断点 b func b file.cpp:linenum b class:func 

Info b 查看设置的断点 

N 执行下一步 

C 继续执行上一个命令 

Run 运行

Run 运行


三、性能调测简介

1 CPU 运算

聚合运算,缩小循环次数,批量 mt_access

2 内存拷贝

缩小内存拷贝,内存池
援用传递

3 磁盘操作

聚合读写文件
sendfile,缩小过程用户态到内核态切换及内存拷贝次数

当须要对一个文件进行传输的时候,其具体流程细节如下:

1 调用 read 函数,文件数据被 copy 到内核缓冲区 

2 read 函数返回,文件数据从内核缓冲区 copy 到用户缓冲区 

3 write 函数调用,将文件数据从用户缓冲区 copy 到内核与 socket 相干的缓冲区

4 数据从 socket 缓冲区 copy 到相干协定引擎

硬盘—> 内核 buf—> 用户 buf—>socket 相干缓冲区—> 协定引擎

运行流程如下:

1 sendfile 零碎调用,文件数据被 copy 至内核缓冲区 

2 再从内核缓冲区 copy 至内核中 socket 相干的缓冲区 

3 最初再 socket 相干的缓冲区 copy 到协定引擎

硬盘 -> 内核 buf———————————————->socket 相干缓冲区 -> 协定引擎

传文件 fd 及读的 offset 即可

而在内核版本 2.4 之后,sendfile 实现了更简略的形式,零碎调用形式依然一样,细节与 2.1 版本的不同之处在于,当文件数据被复制到内核缓冲区时,不再将所有数据 copy 到 socket 相干的缓冲区,而是仅仅将记录数据地位和长度相干的数据保留到 socket 相干的缓存,而理论数据将由 DMA 模块间接发送到协定引擎,再次缩小了一次 copy 操作

4 收发包

Epoll 边缘模式收发包


四、Spp 自带工具查看 qps

命令:
/home/user_00/services/spp_query_vipinfo/bin/stat.sh -worker

输入:


蓝鲸智云简介

腾讯蓝鲸智云(简称蓝鲸)软件体系是一套基于 PaaS 的技术解决方案,致力于打造行业当先的一站式自动化运维平台。目前曾经推出社区版、企业版、私有云版,欢送体验。请点击拜访蓝鲸官网:http://bk.tencent.com/

正文完
 0