• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Linux常用性能调测命令简介

linux 搞代码 3年前 (2022-05-09) 33次浏览 已收录 0个评论
文章目录[隐藏]

一、 Linux常用命令

1 top

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

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

<code class="bash">d 指定每两次屏幕信息刷新之间的工夫距离。当然用户能够应用s交互命令来扭转之。 

p 通过指定监控过程ID来仅仅监控某个过程的状态。 

q 该选项将使top没有任何提早的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。 

S 指定累计模式 。

s 使top命令在平安模式中运行。这将去除交互命令所带来的潜在危险。 

i 使top不显示任何闲置或者僵死过程。 

c 显示整个命令行而不只是显示命令名。

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

<code class="bash">f或者F 从以后显示中增加或者删除我的项目。 

o或者O 扭转显示我的项目的程序。 

l 切换显示均匀负载和启动工夫信息。 

m 切换显示内存信息。 

t 切换显示过程和CPU状态信息。 

c 切换显示命令名称和残缺命令行。

M 依据驻留内存大小进行排序。

P 依据CPU应用百分比大小进行排序。

输入参数介绍:

<code class="bash">total 过程总数 

running 正在运行的过程数 

sleeping 睡眠的过程数 

stopped 进行的过程数 

zombie 僵尸过程数

Cpu(s):

<code class="bash">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
输入:

个别咱们最关怀的几个:

<code class="bash">%usr 零碎上程序运行在用户空间的工夫占CPU总运行工夫的比例 。

%sys 零碎上所有过程运行在内核空间占CPU总工夫的比例 。

%idle 零碎闲暇工夫占CPU总运行工夫的比例 。

%iowait CPU期待磁盘IO解决的工夫占CPU运行总工夫的比例。

3 free

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

<code class="bash">      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

<code class="bash">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行是自系统启动以来的均匀后果,前面输入的采样周期内的均匀后果,输入后果的字段含意解释如下:

<code class="bash">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]

<code class="bash">-d 输入磁盘的详细信息 

-k 单位k 

-x 输入所有详细信息

输入:

[ ] # iostat -kx 1 100

<code class="bash">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

输入:

<code class="bash">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

罕用参数:

<code class="bash">lsof -p pid //查看过程pid的所有句柄 

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

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

8 Netstat

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

参数阐明:

<code class="bash">-a (all)显示所有选项,默认不显示LISTEN相干 

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

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

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

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

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

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

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

-s 按各个协定进行统计 

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

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

应用举例:

<code class="bash">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等逻辑语句来帮忙你去掉无用的信息。

应用参数阐明:

<code class="bash">-i 指定tcpdump 须要监听的接口. 任意网口any,指定网口lo或者eth0等 

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

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

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

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

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

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

<code class="bash">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跟踪程序运行过程中执行零碎调用的接管到的信号,并将零碎调用名,参数,返回值,信息及耗费的工夫输入到规范输入或者指定文件

命令参数阐明:

<code class="bash">-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里罕用的命令

<code class="bash">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,缩小过程用户态到内核态切换及内存拷贝次数

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

<code class="bash">1 调用read函数,文件数据被copy到内核缓冲区 

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

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

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

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

运行流程如下:

<code class="bash">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/


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Linux常用性能调测命令简介

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址