您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > Linux性能分析学习笔记
性能分析学习笔记Author:GeekwolfBlog:://weibo.com/geekwolf注:本文只是大概总结了下性能分析牵涉部分问题,以后会逐渐完善丰富,也算最近大半个月的学习成果吧~一、单位换算1K=10^3Bytes1Ki=2^10Bytes1M=10^6Bytes1Mi=2^20Bytes1G=10^9Bytes1Gi=2^30Bytes1T=10^12Bytes1Ti=2^40Bytesdf-Hdf-h1B(ytes)=8b(it)具体到某个命令的显示单位是什么最好通过man手册查看确认二、性能分析工具1、分析工具vmstat:内存使用情况分析(procps软件包还有topfree命令)iostat:磁盘IO使用情况mpstat:CPU相关统计信息sar:综合系统报告工具|awk:对数据进行格式化主要的性能因素cpu、mem、磁盘io、网络相关CPU信息:LANG=C(指定此关键变量,统计数据的时间24小时计)mpstatNM(N:统计间隔NM:统计M次)-P:指定哪个核cat/proc/cpuinfolscpu查看cpu的架构(util-linux-ng包)内存信息:free-m(m以1000为单位,查看帮助)[root@cloudadmin~]#free-mtotalusedfreesharedbufferscachedMem:7862717268903331534-/+buffers/cache:53032558Swap:95361349402实际使用的内存是5303,7172-5303=buffers+cachedcat/proc/meminfoInactive:表示不经常被访问的内存空间vmstatb:不可中断睡眠一般是IO事件的进程数量磁盘IO信息:iostat110maniostat查看相关参数的单位网络信息:netstat–ntlp显示tcp的监听端口netstat–ntlp显示tcpudp的监听端口netstat–r显示路由表netstat–rn显示路由表不做名称解析(较快)netstat–an显示本地的连接综合命令sar:脚本命令说明/usr/lib64/sa/sa1负责收集并存储每天系统动态信息到一个二进制的文件中。它是通过计划任务工具cron来运行,是为sadc所设计的程序前端程序/usr/lib64/sa/sa2负责把每天的系统活跃性息写入总结性的报告中。它是为sar所设计的前端,要通过cron来调用,参数-A指定了从二进制文件中提取哪些数据存储到文本文件中/usr/lib64/sa/sadc是系统动态数据收集工具,收集的数据被写一个二进制的文件中,它被用作sar工具的后端/usr/bin/sadf显示被sar通过多种格式收集的数据/usr/bin/sar负责收集、报告并存储系统活跃的信息详细信息参考mansar的命令详解当前状态的统计信息sar1100sar–f/var/log/sa/sa22查看22号sa信息文件2.计划任务记录历史统计信息默认安装好sysstat之后会生成/etc/cron.d/sysstat更改性能搜集策略修改文件/usr/lib64/sa/sa1(4244行)exec${ENDIR}/sadc-F-L${SADC_OPTIONS}11–exec${ENDIR}/sadc-F-L${SADC_OPTIONS}$*-可以添加sar的性能参数比如搜集电源相关的信息exec${ENDIR}/sadc-SPOWE-F-L${SADC_OPTIONS}11–exec${ENDIR}/sadc-SPOWER-F-L${SADC_OPTIONS}$*-sar配置文件/etc/sysconfig/sysstatHISTORY=28保存多少天servicesysstatstartchkconfigsysstatonAWK命令:awk-F:‘{print$1}’/etc/passwd查看passwd的第一列awk-F:'NR=10{printNR,$1}'/etc/passwd打印出前十行记录的行号和第一列awk-F:'NR=10&&NR=15{printNR,$1}'/etc/passwdawk-F:'!NR==1{printNR,$1}'/etc/passwdawk-F:'{print$0,NF}'/etc/passwd$0表示所有,NF表示以:为间隔符时有多少个字段awk-F:'{print$0,$NF}'/etc/passwd$NF表示以:为间隔符时最后一个字段值$(NF-1)最后一列的前一列awk‘/^22/{print$0}’/etc/passwdawk-F:‘$1~/^r/{print$0}’/etc/passwdawk'/^[^a-zA-Z]+$/{print$0}'1.txt表示匹配行首到行尾没有大小写字母的记录,+表示匹配前一个字符一次或者以上,$行尾grep‘r..k’/etc/passwd点点表示中间任意两个字符grep‘r.k’/etc/passwd点表示中间任意单个字符grep‘^r[abde]’/etc/passwd表示开头匹配ra或rb或rd或regrep‘^r[a-z]’/etc/passwdgrep‘^r[a-z][A-Z]’/etc/passwd表示r后面有两个字符,一个小写,一个大写grep‘^r[a-zA-Z]’/etc/passwd[]表示一个字符grep‘^r[a-zA-Z0-9]’/etc/passwdgrep‘^r[^a-z]’/etc/passwd[]中的^表示不是,非grep‘^ar*’/etc/passwd*表示匹配*前面字符的任意个grep‘^r.*bash$’/etc/passwd表四匹配以r开始以bash结尾的任意字符简单正则:awk使用正则时要放进//^abcabc开头bash$bash结尾*匹配前面的子表达式零次或多次(大于等于0次)+匹配前面的子表达式一次或多次(大于等于1次)?匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“do”。?等价于{0,1}。{n}n是一个非负整数。匹配确定的n次{n,}n是一个非负整数。至少匹配n次{n,m}m和n均为非负整数,其中n=m。最少匹配n次且最多匹配m次.点匹配除“\n”之外的任何单个字符x|y匹配x或y^$空行^$有一个空格的行^+$表示至少有一个空格\bgeekwolf\b精确匹配geekwolf\b匹配一个单词边界\B匹配非单词边界,“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”\d匹配一位数字[0-9],如:0\d\d-\d\d\d\d\d\d\d\d以0开头,然后2个数字,然后一个连字号”-”,最后是8个数字,简写:0\d{2}-\d{8}\D非数字[^0-9]\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v]\S匹配任何非空白字符。等价于[^\f\n\r\t\v]\w匹配字母或数字或下划线或汉字。等价于“[A-Za-z0-9_]”\W匹配任何非单词字符。等价于“[^A-Za-z0-9_]”、绘图工具gnuplot绘图工具实例:sar–q采集数据获取1m5m15m负载数据并用gnuplot绘图sar–q120file.txtawk‘/^[^a-zA-Z]+$/{print$1,$(NF-2),$(NF-1),$NF}’file.txtformat.txtyum–yinstallgnuplotvimload.gnuplotsetxdatatime设置x轴的格式是时间格式settimefmt“%H:%M:%S”时间格式是%H:%M%S,根据具体时间格式而定setformatx“%H:%M:%S”设置横着的时间格式setxlabel“Time”设置x轴的名字是Timesetylabel“loadaverage”设置y轴的名字是loadaveragesetterminalpngsize1024,768设置输出的图片格式是png分辨率为1024x768setoutput“/tmp/file.png”设置输出图片的位置plot“/root/format.txt”using1:2title“1-load”withlines,”/root/format.txt”using1:3titile“5-load”withlines,”/root/format.txt”using1:4title“15-load”withlines使用format.txt文件的第1列和第2列,名字是1-load,线绘制gnuplotload.gnuplot会在/tmp下生成file.png图片,使用eog命令可以打开图片或者gnuplot–persistload.gnuplot(如果不设置output,会直接打开)其他gnuplot参数参考绘图工具RRDtool是指RoundRobinDatabase工具,Roundrobin是一种处理定量数据、以及当前元素指针的技术。想象一个周边标有点的圆环--这些点就是时间存储的位置。从圆心画一条到圆周的某个点的箭头--这就是指针。就像我们在一个圆环上一样,没有起点和终点,你可以一直往下走下去。过来一段时间,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护。RRDtool处理RRD数据库。它用向RRD数据库存储数据、从RRD数据库中提取数据(来源百度问答)。为了方便理解其工作原理,本人做了一个rrdtool存储结构图:1、DS用于定义DataSoure。也就是用于存放脚本的结果的变量名(DSN)。如eth0_in,eth0_out,lo_in,lo_out。DSN从1-19个字符,必须是0-9,a-z,A-Z。2、DST的选择是十分重要的,如果选错了DST,即使你的脚本取的数据是对的,放入RRDtool后也是错误的,更不用提画出来的图是否有意义了。DST描述:A)COUNTER:必须是递增的,除非是计数器溢出(overflows)。在这种情况下,RRDtool会自动修改收到的值。例如网络接口流量、收到的packets数量都属于这一类型。B)DERIVE:和COUNTER类似。但可以是递增,也可以递减,或者一会增加一会儿减少。C)ABSOLUTE:ABSOLUTE比较特殊,它每次都假定前一个interval的值是0,再计算平均值。D)GAUGE:GAGUE和上面三种不同,它没有“平均”的概念,RRDtool收到值之后字节存入RRA中。E)COMPUTE:COMPUTE比较特殊,它并不接受输入,它的定义是一个表达式,能够引用其他DS并自动计算出某个值。这五种类型有什么区别?不防测试一下便知。3、CDP:ConsolidationDataPoint。RRDtool使用多个PDP合并为(计算出)一个CDP。也就是执行上面的CF操作后的结果。这个值就是存入RRA文件的数据,绘图时使用的也是这些数据。4、CF就是ConsolidationFunction的缩写。也就是合并(统计)功能。有AVERAGE、MAX、MIN、LAST四种分别表示对多个PDP进行取平均、取最大值、取最小值、取当前值四种类型。具体作用等到update操作时再说。5、PDP:PrimaryDataPoint。正常情况下每个intervalRRDtool都会收到一个值;RRDt
本文标题:Linux性能分析学习笔记
链接地址:https://www.777doc.com/doc-3352902 .html