展开全部

主编推荐语

无论是Linux软件开发人员、系统管理员或终端用户,本书都是一本很好的参考书。

内容简介

本书介绍了目前重要和常用的Linux优化工具,以及如何应用它们来使应用程序/系统的性能达到优。读者可以通过众多案例,清晰地明了影响性能的关键部分及解决方案。

目录

  • 版权信息
  • 译者序
  • 前言
  • 致谢
  • 第1章 性能追踪建议
  • 1.1 常用建议
  • 1.1.1 记大量的笔记(记录所有的事情)
  • 1.1.2 自动执行重复任务
  • 1.1.3 尽可能选择低开销工具
  • 1.1.4 使用多个工具来搞清楚问题
  • 1.1.5 相信你的工具
  • 1.1.6 利用其他人的经验(慎重)
  • 1.2 性能调查概要
  • 1.2.1 找到指标、基线和目标
  • 1.2.2 追踪近似问题
  • 1.2.3 查看问题是否早已解决
  • 1.2.4 项目开始(启动调查)
  • 1.2.5 记录,记录,记录
  • 1.3 本章小结
  • 第2章 性能工具:系统CPU
  • 2.1 CPU性能统计信息
  • 2.1.1 运行队列统计
  • 2.1.2 上下文切换
  • 2.1.3 中断
  • 2.1.4 CPU使用率
  • 2.2 Linux性能工具:CPU
  • 2.2.1 vmstat(虚拟内存统计)
  • 2.2.2 top(2.0.x版本)
  • 2.2.3 top(3.x.x版本)
  • 2.2.4 procinfo(从/proc文件系统显示信息)
  • 2.2.5 gnome-system-monitor
  • 2.2.6 mpstat(多处理器统计)
  • 2.2.7 sar(系统活动报告)
  • 2.2.8 oprofile
  • 2.3 本章小结
  • 第3章 性能工具:系统内存
  • 3.1 内存性能统计信息
  • 3.1.1 内存子系统和性能
  • 3.1.2 内存子系统(虚拟存储器)
  • 3.2 Linux性能工具:CPU与内存
  • 3.2.1 vmstat(II)
  • 3.2.2 top(2.x和3.x)
  • 3.2.3 procinfo(II)
  • 3.2.4 gnome-system-monitor(II)
  • 3.2.5 free
  • 3.2.6 slabtop
  • 3.2.7 sar(II)
  • 3.2.8 /proc/meminfo
  • 3.3 本章小结
  • 第4章 性能工具:特定进程CPU
  • 4.1 进程性能统计信息
  • 4.1.1 内核时间vs.用户时间
  • 4.1.2 库时间vs.应用程序时间
  • 4.1.3 细分应用程序时间
  • 4.2 工具
  • 4.2.1 time
  • 4.2.2 strace
  • 4.2.3 ltrace
  • 4.2.4 ps(进程状态)
  • 4.2.5 ld.so(动态加载器)
  • 4.2.6 gprof
  • 4.2.7 oprofile(II)
  • 4.2.8 语言:静态(C和C++)vs.动态(Java和Mono)
  • 4.3 本章小结
  • 第5章 性能工具:特定进程内存
  • 5.1 Linux内存子系统
  • 5.2 内存性能工具
  • 5.2.1 ps(II)
  • 5.2.2 /proc/<PID>
  • 5.2.3 memprof
  • 5.2.4 valgrind(cachegrind)
  • 5.2.5 kcachegrind
  • 5.2.6 oprofile(III)
  • 5.2.7 ipcs
  • 5.2.8 动态语言(Java和Mono)
  • 5.3 本章小结
  • 第6章 性能工具:磁盘I/O
  • 6.1 磁盘I/O介绍
  • 6.2 磁盘I/O性能工具
  • 6.2.1 vmstat(III)
  • 6.2.2 iostat
  • 6.2.3 sar(III)
  • 6.2.4 lsof(列出打开文件)
  • 6.3 缺什么
  • 6.4 本章小结
  • 第7章 性能工具:网络
  • 7.1 网络I/O介绍
  • 7.1.1 链路层的网络流量
  • 7.1.2 协议层网络流量
  • 7.2 网络性能工具
  • 7.2.1 mii-tool(媒体无关接口工具)
  • 7.2.2 ethtool
  • 7.2.3 ifconfig(接口配置)
  • 7.2.4 ip
  • 7.2.5 sar(IV)
  • 7.2.6 gkrellm
  • 7.2.7 iptraf
  • 7.2.8 netstat
  • 7.2.9 etherape
  • 7.3 本章小结
  • 第8章 实用工具:性能工具助手
  • 8.1 性能工具助手
  • 8.1.1 自动执行和记录命令
  • 8.1.2 性能统计信息的绘图与分析
  • 8.1.3 调查应用程序使用的库
  • 8.1.4 创建和调试应用程序
  • 8.2 工具
  • 8.2.1 bash
  • 8.2.2 tee
  • 8.2.3 script
  • 8.2.4 watch
  • 8.2.5 gnumeric
  • 8.2.6 ldd
  • 8.2.7 objdump
  • 8.2.8 GNU调试器(gdb)
  • 8.2.9 gcc(GNU编译器套件)
  • 8.3 本章小结
  • 第9章 使用性能工具发现问题
  • 9.1 并非总是万灵药
  • 9.2 开始追踪
  • 9.3 优化应用程序
  • 9.3.1 内存使用有问题?
  • 9.3.2 启动时间有问题?
  • 9.3.3 加载器引入延迟了吗?
  • 9.3.4 CPU使用(或完成时长)有问题?
  • 9.3.5 应用程序的磁盘使用有问题?
  • 9.3.6 应用程序的网络使用有问题?
  • 9.4 优化系统
  • 9.4.1 系统是受CPU限制的吗?
  • 9.4.2 单个进程是受CPU限制的吗?
  • 9.4.3 一个或多个进程使用了大多数的系统CPU吗?
  • 9.4.4 一个或多个进程使用了单个CPU的大多数时间?
  • 9.4.5 内核服务了许多中断吗?
  • 9.4.6 内核的时间花在哪儿了?
  • 9.4.7 交换空间的使用量在增加吗?
  • 9.4.8 系统是受I/O限制的吗?
  • 9.4.9 系统使用磁盘I/O吗?
  • 9.4.10 系统使用网络I/O吗?
  • 9.5 优化进程CPU使用情况
  • 9.5.1 进程在用户还是内核空间花费了时间?
  • 9.5.2 进程有哪些系统调用,完成它们花了多少时间?
  • 9.5.3 进程在哪些函数上花了时间?
  • 9.5.4 热点函数的调用树是怎样的?
  • 9.5.5 Cache缺失与热点函数或源代码行是对应的吗?
  • 9.6 优化内存使用情况
  • 9.6.1 内核的内存使用量在增加吗?
  • 9.6.2 内核使用的内存类型是什么?
  • 9.6.3 特定进程的驻留集大小在增加吗?
  • 9.6.4 共享内存的使用量增加了吗?
  • 9.6.5 哪些进程使用了共享内存?
  • 9.6.6 进程使用的内存类型是什么?
  • 9.6.7 哪些函数正在使用全部的栈?
  • 9.6.8 哪些函数的文本大小最大?
  • 9.6.9 进程使用的库有多大?
  • 9.6.10 哪些函数分配堆内存?
  • 9.7 优化磁盘I/O使用情况
  • 9.7.1 系统强调特定磁盘吗?
  • 9.7.2 哪个应用程序访问了磁盘?
  • 9.7.3 应用程序访问了哪些文件?
  • 9.8 优化网络I/O使用情况
  • 9.8.1 网络设备发送/接收量接近理论极限了吗?
  • 9.8.2 网络设备产生了大量错误吗?
  • 9.8.3 设备上流量的类型是什么?
  • 9.8.4 特定进程要为流量负责吗?
  • 9.8.5 流量是哪个远程系统发送的?
  • 9.8.6 哪个应用程序套接字要为流量负责?
  • 9.9 尾声
  • 9.10 本章小结
  • 第10章 性能追踪1:受CPU限制的应用程序(GIMP)
  • 10.1 受CPU限制的应用程序
  • 10.2 确定问题
  • 10.3 找到基线/设置目标
  • 10.4 为性能追踪配置应用程序
  • 10.5 安装和配置性能工具
  • 10.6 运行应用程序和性能工具
  • 10.7 分析结果
  • 10.8 转战网络
  • 10.9 增加图像缓存
  • 10.10 遇到(分片引发的)制约
  • 10.11 解决问题
  • 10.12 验证正确性
  • 10.13 后续步骤
  • 10.14 本章小结
  • 第11章 性能追踪2:延迟敏感的应用程序(nautilus)
  • 11.1 延迟敏感的应用程序
  • 11.2 确定问题
  • 11.3 找到基线/设置目标
  • 11.4 为性能追踪配置应用程序
  • 11.5 安装和配置性能工具
  • 11.6 运行应用程序和性能工具
  • 11.7 编译和检查源代码
  • 11.8 使用gdb生成调用跟踪
  • 11.9 找到时间差异
  • 11.10 尝试一种可能的解决方案
  • 11.11 本章小结
  • 第12章 性能追踪3:系统级迟缓(prelink)
  • 12.1 调查系统级迟缓
  • 12.2 确定问题
  • 12.3 找到基线/设置目标
  • 12.4 为性能追踪配置应用程序
  • 12.5 安装和配置性能工具
  • 12.6 运行应用程序和性能工具
  • 12.7 模拟解决方案
  • 12.8 报告问题
  • 12.9 测试解决方案
  • 12.10 本章小结
  • 第13章 性能工具:下一步是什么
  • 13.1 Linux工具的现状
  • 13.2 Linux还需要什么样的工具
  • 13.2.1 漏洞1:性能统计信息分散
  • 13.2.2 漏洞2:没有可靠并完整的调用树
  • 13.2.3 漏洞3:I/O的归因
  • 13.3 Linux的性能调优
  • 13.3.1 可用的源代码
  • 13.3.2 容易联系开发者
  • 13.3.3 Linux还年轻
  • 13.4 本章小结
  • 附录A 性能工具的位置
  • 附录B 安装oprofile
展开全部

评分及书评

评分不足
1个评分
  • 用户头像
    给这本书评了
    5.0

    如果你使用 Linux,维护它并用其进行开发,你就会处于一种奇特但良好的处境中。你能访问和接触的源代码、开发者和邮件列表是前所未有的,通常,这些邮件列表中会记录着多年前的设计决策。Linux 是发现和修复性能问题的优良环境。与之形成鲜明对比的是专有环境,在这种环境下,很难直接接触到软件开发者,同时也很难找到大多数设计决策讨论的书面记录,而访问源代码则几乎是不可能的。

      转发
      评论

    出版方

    机械工业出版社有限公司

    机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。