8.1性能工具助手

Linux有丰富的工具,这些工具组合来使用会更加强大。性能工具也一样,单独使用虽然也没有问题,但是和其他的工具组合起来就能显著提高有效性和易用性。

8.1.1 自动执行和记录命令

如同前面章节所述,性能调查最有价值的步骤之一就是保存在调查过程中发出的命令和产生的结果。Linux提供了两个命令:tee和script,前者能够将工具的输出保存为文件,后者能记录每个按键和屏幕上的每一个输出。这些信息保存下来,便于以后的查看。

自动执行命令很重要,因为它可以减少出错的机会,是你在思考问题时不需记住所有的细节。在你一次性键入又长又复杂的命令行之后,bash shell和watch命令能够可以让你周期性地自动执行这些命令,不需要再次输入。

8.1.2 性能统计信息的绘图与分析

Linux有提供gnumeric电子表格,没有装图形界面,不介绍。

8.1.3 调查应用程序使用的库

还有一些Linux的工具能使你确定应用程序使用了哪些库,以及显示给定库提供的所有函数。ldd命令给出一个特定应用程序使用的全部共享库的列表。在你想要跟踪被应用程序使用的库的数量和位置时,这个命令很有效。Linux中还有一个命令,objdump,它可以在指定库或应用程序中搜索并显示其提供全部函数。ltrace只能给出一个应用程序调用函数的名称,但是结合命令ldd和objdump,你就能够利用ltrace的输出来确定指定函数属于哪个库。

8.1.4 创建和调试应用程序

这个需要gcc工具,不介绍。

8.2 工具

8.2.1 bash

bash是Linux默认的shell,在每次使用Linux的时候,最有可能使用到它。bash通常用来编写功能强大的脚本,但是也可以直接在命令行中调用,从而能够让一些复杂的任务自动化。

bash运行时脚本选项,使用while来周期性执行命令

选项

说明

while condition

条件为真时,循环执行

do

表示循环开始

done

表示循环结束

用例示范,ifconfig不能周期性显示它们的统计信息,我们可以使用while来周期性执行ifconfig命令,用来查询接收数据包的实时情况。

while true;do sleep 1;ifconfig eth0|grep "RX   packets";done;

8.2.2 tee

tee是个简单的命令,可以将命令的标准输出保存为文件并且同时进行显示。在想要保存并同时查看性能工具输出的时候,tee是很有帮助的。比如,正在监控一个实时系统的性能统计信息的同时,保存这些数据已备将来对它们进行分析。

语法: -a是追加模式,否则会直接覆盖文件

<command>|tee [-a] [file]

用法示例

vmstat 1 5 |tee /tmp/vmstat_out

8.2.3 script

script命令可以将一个shell会话过程中产生的全部输入和输出保存为文本文件。在调查性能问题的时候,准确记录被执行的命令是很有用的,因为你可以在之后的时间查看执行过的测试。

script命令在执行的时候会启动一个新的shell,并记录这个shell存续期间所有的键盘动作和输入,已经生成的输出,并保存为文件。如果屏幕的输出有彩色或者加粗,会在输出文件中显示为esc字符。可以把TERM环境变量设置为dumb来解决。export TERM=dumb

语法:-a是追加输入,-t是增加计时信息

script [-a] [-t] [file]

用法示例:输入exit或者ctrl-d组合来退出该shell

8.2.4 watch

默认情况下,watch命令会每秒运行一条命令并将其输出显示到屏幕上。与那些不能周期性显示结果的性能工具一起工作时,watch就能发挥作用了。虽说watch的功能可以用shell脚本代替,但是watch的使用更加简单,并且几乎哪里都可以使用。

语法

watch [-d[=cumulative]] [-n sec] <command>

watch命令行选项

-d [=cumulative]

突出显示样本之间变化的输出

-n sec

更新等待的秒数

用法示例:watch会自动清屏的

8.2.5 ldd

ldd会列出对应的二进制文件所需的所有库,以及系统中有哪些文件能实现这些需求

8.2.6 objdump

对于分析二进制文件和库的各个方面来说,objdump是一种复杂而强大的工具。尽管它有其他许多功能,它可以被用来确定给定的库提供了那些函数。

Linux性能优化 第八章 实用工具:性能工具助手的更多相关文章

  1. SQL Server 性能优化之——系统化方法提高性能

    SQL Server 性能优化之——系统化方法提高性能 阅读导航 1. 概述 2. 规范逻辑数据库设计 3. 使用高效索引设计 4. 使用高效的查询设计 5. 使用技术分析低性能 6. 总结 1. 概 ...

  2. JVM性能优化系列-(7) 深入了解性能优化

    7. 深入了解性能优化 7.1 影响系统性能的方方面面 影响系统性能的因素有很多,以下列举了常见的一些系统性能优化的方向: 7.2 常用的性能评价和测试指标 响应时间 提交请求和返回该请求的响应之间使 ...

  3. Java 性能优化手册 — 提高 Java 代码性能的各种技巧

    转载: Java 性能优化手册 - 提高 Java 代码性能的各种技巧 Java 6,7,8 中的 String.intern - 字符串池 这篇文章将要讨论 Java 6 中是如何实现 String ...

  4. Linux性能优化和监控系列(一)——top工具

    解释服务器发生了什么——top工具 在检查服务器的详细工作性能状态前,系统管理员需要对当前服务器状态有总体的了解. top是检查服务器总体状态的强有力工具, 通过top可以获取CPU, Memory, ...

  5. Web性能优化:基本思路和常用工具

    听了荣华的演讲之后,我对性能优化有了更深层次的认识. 性能优化的重要性 性能优化是为了赢得用户,为了降低成本. 性能优化思路 Web常见优化点   Java常见排查工具  

  6. Java性能优化之使用NIO提升性能(Buffer和Channel)

    在软件系统中,由于IO的速度要比内存慢,因此,I/O读写在很多场合都会成为系统的瓶颈.提升I/O速度,对提升系统整体性能有着很大的好处. 在Java的标准I/O中,提供了基于流的I/O实现,即Inpu ...

  7. HTML5前端性能优化——浏览器兼容与前端性能优化

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

  8. Android 性能优化(26)*性能工具之「Batterystats,Battery Historian」Batterystats & Battery Historian Walkthrough

    Batterystats & Battery Historian Walkthrough Working with Batterystats & Battery Historian B ...

  9. Android 性能优化(25)*性能工具之「Systrace」Analyzing UI Performance with Systrace:用Systrace得到ui性能报告

    Analyzing UI Performance with Systrace In this document Overview 简介 Generating a Trace  生成Systrace文件 ...

随机推荐

  1. html5 视频播放插件

    HTML5中加入了浏览器非常友好的标签 <video> ,这个标签非常的厉害,它可以不依靠falsh播放器,在网页中播放视频,目前W3C提供的video只支持mp4,ogg,webm三种视 ...

  2. uglifyjs-webpack-plugin 插件,drop_console 默认为 false(不清除 console 语句),drop_debugger 默认为 true(清除 debugger 语句)

    uglifyjs-webpack-plugin 插件,drop_console 默认为 false(不清除console语句),drop_debugger 默认为 true(清除 debugger 语 ...

  3. taro 列表渲染

    元素的 key 在他的兄弟元素之间应该唯一 数组元素中使用的 key 在其兄弟之间应该是独一无二的.然而,它们不需要是全局唯一的.当我们生成两个不同的数组时,我们可以使用相同的 key key 的取值 ...

  4. HanLP二元核心词典详细解析

    本文分析:HanLP版本1.5.3中二元核心词典的存储与查找.当词典文件没有被缓存时,会从文本文件CoreNatureDictionary.ngram.txt中解析出来存储到TreeMap中,然后构造 ...

  5. c++中无名命名空间的使用

    1. 命名空间作用 命名空间是程序设计者命名的内存区域,程序设计者根据需指定一些有名字的空间域,把一些全局实体分别存放到各个命名空间中,从而与其他全局实体分隔开. 通俗的说,每个名字空间都是一个名字空 ...

  6. Delphi中使用ADO连接Excel

    第一部分: . 设置ADOConnection的ConnectionString属性的OLE DB的提供者要选择Microsoft Jet 4.0 OLE DB Provider(这本来是用于连接Ac ...

  7. linux 服务器之间配置免密登录

    客户机:172.16.1.2 远程机:172.16.1.3 1.远程机 a.允许root用户通过22端口登录 vi /etc/ssh/sshd_config PORT 22 PermitRootLog ...

  8. 【亲测可用,亦可配置同一平台的不同账号,例如阿里云的两个不同账号】Windows下Git多账号配置,同一电脑多个ssh-key的管理

    Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章<Git-TortoiseGit完整配置流程>的拓展,所以需要对上一篇文章有所了解,当然直接 ...

  9. win10和ubuntu16.04双系统时间同步

    在win10安装了ubuntu双系统,发现在两个系统见时间相差8个小时,这是由于windows和和ubuntu对于从主板取得时间后的处理方式不同,如果你把位置设为上海,ubuntu总是把主板时间当作u ...

  10. 廖雪峰Java1-3流程控制-4switch多重选择

    switch语句 根据switch(表达式)跳转到匹配的case结果,继续执行case结果: 的后续语句,遇到break结束执行,没有匹配条件,执行default语句. int i = 3 switc ...