• 深入理解软件性能一种动态视角
图书条目标准图
21年品牌 40万+商家 超1.5亿件商品

深入理解软件性能一种动态视角

正版新书 新华官方库房直发 可开电子发票

85.67 6.6折 129.8 全新

库存7件

北京海淀
认证卖家担保交易快速发货售后保障

作者(美)理查德· L. 赛茨(Richard L.Sites)

出版社人民邮电出版社

出版时间2024-01

版次1

装帧其他

货号文轩12.19

上书时间2024-12-21

咚友图书专营店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
图书标准信息
  • 作者 (美)理查德· L. 赛茨(Richard L.Sites)
  • 出版社 人民邮电出版社
  • 出版时间 2024-01
  • 版次 1
  • ISBN 9787115616562
  • 定价 129.80元
  • 装帧 其他
  • 开本 16开
  • 页数 404页
  • 字数 543千字
【内容简介】
:
    本书不仅介绍了如何测量CPU、内存、磁盘SSD、网络的性能,如何观察、记录、跟踪、汇总性能指标,还讨论了如何设计和创建性能测试工具KUtrace,以及如何对观察结果进行推理。
    本书不仅适合软件开发人员阅读,还适合计算机相关专业的师生参考。
【作者简介】
:
    理查德·L.赛茨(Richard L.Sites),美国国家工程院院士。在职业生涯的大部分时间中,他负责硬件与软件的交接,特别关注CPU/软件性能交互。他担任了DEC Alpha处理器的架构师,发明了处理器的性能计数器。他还在DEC、Adobe、Google和Tesla公司编写过低开销的微代码,负责过软件跟踪。
【目录】

目  录 部分 测量章 我的程序太慢了 31.1 数据中心环境 31.2 数据中心的硬件 51.3 数据中心的软件 61.4 长尾时延 71.5 思维框架 91.6 数量级估测 91.7 为什么事务很慢 101.8 5种基本资源 111.9 小结 12第 2章 测量CPU时间 132.1 发展历史 142.2 现状 172.3 测量add指令的时延 182.4 直线代码失败 192.5 简单循环、循环开销失败、优化编译器失败 192.6 死变量失败 222.7 更好的循环 232.8 依赖变量 242.9 实际执行时延 252.10 更多细微差别 252.11 小结 26习题 26第3章 测量内存层次 283.1 内存计时 283.2 关于内存 293.3 缓存组织 303.4 数据对齐 323.5 页表缓存组织 333.6 测量内存的步骤 343.7 测量缓存行的大小 343.8 问题:预取第N 1行 363.9 依赖加载 373.10 非随机的DRAM 383.11 测量每个缓存级别的总大小 393.12 测量每个级别的缓存相联度 413.13 页表缓存时间 423.14 缓存利用不足 423.15 小结 42习题 43第4章 CPU与内存的交互 454.1 缓存交互 454.2 简单矩阵乘法的动态 474.3 估测 474.4 初始化、反复核对和观察 484.5 初始结果 494.6 更快的矩阵乘法,转置方法 514.7 更快的矩阵乘法,子块方法 534.8 感知缓存的计算 544.9 小结 55习题 55第5章 测量磁盘/SSD的传输时间 565.1 关于硬盘 565.2 关于SSD 585.3 软件磁盘访问和磁盘缓冲 605.4 磁盘读取有多快 625.5 一次粗略估算 655.6 磁盘写入有多快 665.7 结果 665.8 从磁盘读取 675.9 写入磁盘 715.10 从SSD读取 745.11 写入SSD 755.12 多次传输 765.13 小结 77习题 77第6章 测量网络流量 796.1 关于以太网 816.2 关于集线器、交换机和路由器 826.3 关于TCP/IP 836.4 关于数据包 846.5 关于RPC 856.6 空程差 876.7 观察网络流量 886.8 示例RPC消息的定义 906.9 示例日志设计 926.10 使用RPC的示例客户-服务器系统 936.11 示例服务器程序 946.12 自旋锁 956.13 示例客户端程序 966.14 测量一个示例客户-服务器RPC 986.15 后处理RPC日志 996.16 观察 1006.17 小结 101习题 102第7章 磁盘和网络数据库的交互 1037.1 时间对齐 1037.2 多个客户端 1097.3 自旋锁的应用 1097.4 实验1 1107.5 磁盘数据库 1137.6 实验2 1137.7 实验3 1177.8 日志 1197.9 理解事务时延的变化 1207.10 小结 120习题 121第二部分 观察第8章 日志 1258.1 观察工具 1258.2 日志 1258.3 基本日志 1268.4 扩展日志 1278.5 时间戳 1278.6 RPC ID 1288.7 日志文件的格式 1298.8 管理日志文件 1308.9 小结 131第9章 聚合措施测量 1329.1 均匀的事件率与阵发的事件率 1339.2 测量间隔 1339.3 时间线 1349.4 进一步汇总时间线 1369.5 直方图的时间尺度 1389.6 聚合每个事件的测量结果 1409.7 一段时间的值的模式 1429.8 更新间隔 1439.9 事务采样 1449.10 小结 1450章 仪表板 14710.1 示例服务 14710.2 示例仪表板 14910.3 主仪表板 14910.4 实例仪表板 15310.5 服务器仪表板 15410.6 健全检查 15410.7 小结 155习题 1551章 其他现有工具 15611.1 观察工具的分类 15611.2 要观察的数据 15811.3 top命令 15911.4 /proc和/sys伪文件 16011.5 time命令 16011.6 perf命令 16111.7 oprofile 16211.8 strace 16511.9 ltrace 16811.10 ftrace 16911.11 mtrace 17211.12 blktrace 17411.13 tcpdump和Wireshark 17711.14 locktrace 17911.15 输入负载、出站调用 17911.16 小结 180习题 1812章 跟踪工具 18212.1 跟踪工具的优势 18212.2 跟踪工具的缺点 18312.3 3个起始问题 18312.4 示例1:早期的程序计数器跟踪 18612.5 示例2:每个函数的计数和时间 18812.6 案例分析:G的按函数跟踪 19112.7 小结 1963章 观察工具的设计原则 19713.1 需要观察什么 19713.2 有多频繁?要多久 19813.3 开销有多大 19913.4 设计的后果 20013.5 案例分析:直方图桶 20013.6 设计数据显示 20213.7 小结 203第三部分 内核-用户跟踪4章 KUtrace的目标、设计、实现 20714.1 概述 20714.2 目标 20814.3 设计 20914.4 实现 21114.5 内核补丁和Linux内核可加载模块 21114.6 控制程序 21214.7 后处理 21314.8 关于安全问题的一点说明 21314.9 小结 2135章 KUtrace中的Linux内核补丁 21415.1 跟踪缓冲区数据结构 21515.2 原始跟踪块的格式 21615.3 跟踪条目 21715.4 IPC跟踪条目 21815.5 时间戳 21915.6 事件编号 21915.7 嵌套的跟踪条目 21915.8 代码 22015.9 数据包跟踪 22115.10 AMD/Intel x86-64补丁 22215.11 小结 224习题 2246章 KUtrace的Linux内核可加载模块 22516.1 内核接口数据结构 22516.2 模块加载/卸载 22616.3 初始化和控制跟踪 22616.4 实现跟踪调用 22716.5 Insert1 22716.6 InsertN 22916.7 切换到一个新的跟踪块 23016.8 小结 2307章 KUtrace的用户态的运行时控制 23117.1 控制跟踪 23217.2 独立的kutrace_control程序 23217.3 底层的kutrace_lib库 23317.4 可加载模块的控制接口 23317.5 小结 2348章 KUtrace的后处理 23518.1 后处理的细节 23518.2 rawtoevent程序 23618.3 eventtospan程序 23718.4 spantotrim程序 23918.5 spantospan程序 23918.6 samptoname_k和samptoname_u程序 24018.7 makeself程序 24018.8 KUtrace的JSON格式 24018.9 小结 2429章 KUtrace中软件动态的显示 24319.1 概述 24319.2 区域①—控件 24419.3 区域②—y轴 24619.4 区域③—主时间线 24619.5 区域④—IPC图例 25119.6 区域⑤—x轴 25219.7 区域⑥—保存/还原 25219.8 辅助控件 25219.9 小结 253第四部分 推理第 20章 寻找什么 25720.1 概述 25720.2 寻找原因 258第 21章 执行太多 25921.1 概述 25921.2 程序 25921.3 谜团 26021.4 探索和分析 26121.5 理解谜团 26521.6 小结 265第 22章 执行缓慢 26722.1 概述 26722.2 程序 26822.3 谜团 26822.4 浮点运算对立程序 27022.5 内存对立程序 27322.6 理解谜团 27422.7 小结 274第 23章 等待CPU 27623.1 程序 27623.2 谜团1 27623.3 探索和分析 27723.4 谜团2 27923.5 理解谜团2 28023.6 附加谜团 28223.7 小结 284习题 284第 24章 等待内存 28524.1 程序 28524.2 谜团1 28624.3 探索和分析 28624.4 谜团2:访问页表 29024.5 理解谜团2 29024.6 小结 292习题 292第 25章 等待磁盘 29325.1 程序 29325.2 谜团 29425.3 探索和分析 29425.4 读取40 MB 29625.5 顺序读取4 KB的块 29725.6 随机读取4 KB的块 29925.7 在SSD上写入和同步40 MB 30125.8 在SSD上读取40 MB 30125.9 两个程序同时访问两个文件 30225.10 理解谜团 30325.11 小结 304习题 304第 26章 等待网络 30526.1 概述 30526.2 程序 30626.3 实验1 30726.4 实验1中的谜团 30826.5 实验1的探索与分析 30926.6 实验1中RPC之间的时间 31326.7 实验2 31526.8 实验3 31526.9 实验4 31626.10 理解谜团 31926.11 附加异常 32026.12 小结 322第 27章 等待锁 32327.1 概述 32327.2 程序 32727.3 实验1:长时间持有锁 33027.4 实验1中的谜团 33127.5 探索和分析实验1 33227.6 实验2:修复锁捕获 33427.7 实验3:通过多个锁修复锁争用 33527.8 实验4:通过锁住更少的工作来修复锁争用 33727.9 实验5:通过为仪表板使用RCU来修复锁争用 33827.10 小结 340第 28章 等待时间 34128.1 定期工作 34128.2 超时 34228.3 时间分片 34228.4 内在的执行延迟 34328.5 小结 343第 29章 等待队列 34429.1 概述 34429.2 请求的分布 34629.3 队列的结构 34729.4 工作任务 34829.5 主任务 34829.6 Dequeue操作 34829.7 Enqueue操作 34929.8 PlainSpinLock类 34929.9 “工作”例程 35029.10 简单的示例 35029.11 哪些地方可能发生了问题 35129.12 CPU频率 35229.13 复杂的示例 35329.14 等待CPU:RPC日志 35329.15 等待CPU:KUtrace 35429.16 PlainSpinLock存在的缺陷 35729.17 根本原因 35829.18 修复PlainSpinLock:可观察性 35929.19 负载均衡 36029.20 队列深度:可观察性 36129.21 结尾处的自旋 36129.22 剩下的最后一个缺陷 36229.23 交叉检查 36229.24 小结 363习题 363第30章 全书回顾 36530.1 你学到了什么 36530.2 我们没有讲什么 36730.3 接下来的工作 36730.4 全书小结 368附录A 示例服务器 369附录B 跟踪条目 372术语表 377参考文献 383KUtrace HTML图例 384
作者介绍
理查德· L. 赛茨(Richard L.Sites),美国国家工程院院士。在职业生涯的大部分时间中,他负责硬件与软件的交接,特别关注 CPU/软件性能交互。他担任了 DEC Alpha 处理器的架构师,发明了处理器的性能计数器。他还在 DEC、Adobe、Google 和 Tesla 公司编写过低开销的微代码,负责过软件跟踪
序言
点击展开 点击收起

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP