一、 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/