您好,欢迎来到聚文网。
登录
免费注册
网站首页
|
搜索
热搜:
购物车
0
我的订单
商品分类
首页
幼儿
文学
社科
教辅
生活
销量榜
深入理解软件性能——一种动态视角
字数: 543
出版社: 人民邮电
作者: [美]理查德· L. 赛茨(Richard L.Sites)|译者:赵利通
商品条码: 9787115616562
版次: 1
开本: 16开
页数: 382
出版年份: 2024
印次: 1
定价:
¥129.8
销售价:
登录后查看价格
¥{{selectedSku?.salePrice}}
库存:
{{selectedSku?.stock}}
库存充足
{{item.title}}:
{{its.name}}
加入购物车
立即购买
加入书单
收藏
精选
¥5.83
世界图书名著昆虫记绿野仙踪木偶奇遇记儿童书籍彩图注音版
¥5.39
正版世界名著文学小说名家名译中学生课外阅读书籍图书批发 70册
¥8.58
简笔画10000例加厚版2-6岁幼儿童涂色本涂鸦本绘画本填色书正版
¥5.83
世界文学名著全49册中小学生青少年课外书籍文学小说批发正版
¥4.95
全优冲刺100分测试卷一二三四五六年级上下册语文数学英语模拟卷
¥8.69
父与子彩图注音完整版小学生图书批发儿童课外阅读书籍正版1册
¥24.2
好玩的洞洞拉拉书0-3岁宝宝早教益智游戏书机关立体翻翻书4册
¥7.15
幼儿认字识字大王3000字幼儿园中班大班学前班宝宝早教启蒙书
¥11.55
用思维导图读懂儿童心理学培养情绪管理与性格培养故事指导书
¥19.8
少年读漫画鬼谷子全6册在漫画中学国学小学生课外阅读书籍正版
¥64
科学真好玩
¥12.7
一年级下4册·读读童谣和儿歌
¥38.4
原生态新生代(传统木版年画的当代传承国际研讨会论文集)
¥11.14
法国经典中篇小说
¥11.32
上海的狐步舞--穆时英(中国现代文学馆馆藏初版本经典)
¥21.56
猫的摇篮(精)
¥30.72
幼儿园特色课程实施方案/幼儿园生命成长启蒙教育课程丛书
¥24.94
旧时风物(精)
¥12.04
三希堂三帖/墨林珍赏
¥6.88
寒山子庞居士诗帖/墨林珍赏
¥6.88
苕溪帖/墨林珍赏
¥6.88
楷书王维诗卷/墨林珍赏
¥9.46
兰亭序/墨林珍赏
¥7.74
祭侄文稿/墨林珍赏
¥7.74
蜀素帖/墨林珍赏
¥12.04
真草千字文/墨林珍赏
¥114.4
进宴仪轨(精)/中国古代舞乐域外图书
¥24.94
舞蹈音乐的基础理论与应用
内容简介
本书不仅介绍了如何测量CPU、内存、磁盘/SSD、网络的性能,如何观察、记录、跟踪、汇总性能指标,还讨论了如何设计和创建性能测试工具KUtrace,以及如何对观察结果进行推理。 本书不仅适合软件开发人员阅读,还适合计算机相关专业的师生参考。
作者简介
理查德· L. 赛茨(Richard L.Sites),美国国家工程院院士。在职业生涯的大部分时间中,他负责硬件与软件的交接,特别关注 CPU/软件性能交互。他担任了 DEC Alpha 处理器的架构师,发明了处理器的性能计数器。他还在 DEC、Adobe、Google 和 Tesla 公司编写过低开销的微代码,负责过软件跟踪
目录
目 录 第 一部分 测量 第 1章 我的程序太慢了 3 1.1 数据中心环境 3 1.2 数据中心的硬件 5 1.3 数据中心的软件 6 1.4 长尾时延 7 1.5 思维框架 9 1.6 数量级估测 9 1.7 为什么事务很慢 10 1.8 5种基本资源 11 1.9 小结 12 第 2章 测量CPU时间 13 2.1 发展历史 14 2.2 现状 17 2.3 测量add指令的时延 18 2.4 直线代码失败 19 2.5 简单循环、循环开销失败、优化编译器失败 19 2.6 死变量失败 22 2.7 更好的循环 23 2.8 依赖变量 24 2.9 实际执行时延 25 2.10 更多细微差别 25 2.11 小结 26 习题 26 第3章 测量内存层次 28 3.1 内存计时 28 3.2 关于内存 29 3.3 缓存组织 30 3.4 数据对齐 32 3.5 页表缓存组织 33 3.6 测量内存的步骤 34 3.7 测量缓存行的大小 34 3.8 问题:预取第N+1行 36 3.9 依赖加载 37 3.10 非随机的DRAM 38 3.11 测量每个缓存级别的总大小 39 3.12 测量每个级别的缓存相联度 41 3.13 页表缓存时间 42 3.14 缓存利用不足 42 3.15 小结 42 习题 43 第4章 CPU与内存的交互 45 4.1 缓存交互 45 4.2 简单矩阵乘法的动态 47 4.3 估测 47 4.4 初始化、反复核对和观察 48 4.5 初始结果 49 4.6 更快的矩阵乘法,转置方法 51 4.7 更快的矩阵乘法,子块方法 53 4.8 感知缓存的计算 54 4.9 小结 55 习题 55 第5章 测量磁盘/SSD的传输时间 56 5.1 关于硬盘 56 5.2 关于SSD 58 5.3 软件磁盘访问和磁盘缓冲 60 5.4 磁盘读取有多快 62 5.5 一次粗略估算 65 5.6 磁盘写入有多快 66 5.7 结果 66 5.8 从磁盘读取 67 5.9 写入磁盘 71 5.10 从SSD读取 74 5.11 写入SSD 75 5.12 多次传输 76 5.13 小结 77 习题 77 第6章 测量网络流量 79 6.1 关于以太网 81 6.2 关于集线器、交换机和路由器 82 6.3 关于TCP/IP 83 6.4 关于数据包 84 6.5 关于RPC 85 6.6 空程差 87 6.7 观察网络流量 88 6.8 示例RPC消息的定义 90 6.9 示例日志设计 92 6.10 使用RPC的示例客户-服务器系统 93 6.11 示例服务器程序 94 6.12 自旋锁 95 6.13 示例客户端程序 96 6.14 测量一个示例客户-服务器RPC 98 6.15 后处理RPC日志 99 6.16 观察 100 6.17 小结 101 习题 102 第7章 磁盘和网络数据库的交互 103 7.1 时间对齐 103 7.2 多个客户端 109 7.3 自旋锁的应用 109 7.4 实验1 110 7.5 磁盘数据库 113 7.6 实验2 113 7.7 实验3 117 7.8 日志 119 7.9 理解事务时延的变化 120 7.10 小结 120 习题 121 第二部分 观察 第8章 日志 125 8.1 观察工具 125 8.2 日志 125 8.3 基本日志 126 8.4 扩展日志 127 8.5 时间戳 127 8.6 RPC ID 128 8.7 日志文件的格式 129 8.8 管理日志文件 130 8.9 小结 131 第9章 聚合措施测量 132 9.1 均匀的事件率与阵发的事件率 133 9.2 测量间隔 133 9.3 时间线 134 9.4 进一步汇总时间线 136 9.5 直方图的时间尺度 138 9.6 聚合每个事件的测量结果 140 9.7 一段时间的值的模式 142 9.8 更新间隔 143 9.9 事务采样 144 9.10 小结 145 第 10章 仪表板 147 10.1 示例服务 147 10.2 示例仪表板 149 10.3 主仪表板 149 10.4 实例仪表板 153 10.5 服务器仪表板 154 10.6 健全检查 154 10.7 小结 155 习题 155 第 11章 其他现有工具 156 11.1 观察工具的分类 156 11.2 要观察的数据 158 11.3 top命令 159 11.4 /proc和/sys伪文件 160 11.5 time命令 160 11.6 perf命令 161 11.7 oprofile 162 11.8 strace 165 11.9 ltrace 168 11.10 ftrace 169 11.11 mtrace 172 11.12 blktrace 174 11.13 tcpdump和Wireshark 177 11.14 locktrace 179 11.15 输入负载、出站调用 179 11.16 小结 180 习题 181 第 12章 跟踪工具 182 12.1 跟踪工具的优势 182 12.2 跟踪工具的缺点 183 12.3 3个起始问题 183 12.4 示例1:早期的程序计数器跟踪 186 12.5 示例2:每个函数的计数和时间 188 12.6 案例分析:Gmail的按函数跟踪 191 12.7 小结 196 第 13章 优秀观察工具的设计原则 197 13.1 需要观察什么 197 13.2 有多频繁?要多久 198 13.3 开销有多大 199 13.4 设计的后果 200 13.5 案例分析:直方图桶 200 13.6 设计数据显示 202 13.7 小结 203 第三部分 内核-用户跟踪 第 14章 KUtrace的目标、设计、 实现 207 14.1 概述 207 14.2 目标 208 14.3 设计 209 14.4 实现 211 14.5 内核补丁和Linux内核可加载模块 211 14.6 控制程序 212 14.7 后处理 213 14.8 关于安全问题的一点说明 213 14.9 小结 213 第 15章 KUtrace中的Linux内核补丁 214 15.1 跟踪缓冲区数据结构 215 15.2 原始跟踪块的格式 216 15.3 跟踪条目 217 15.4 IPC跟踪条目 218 15.5 时间戳 219 15.6 事件编号 219 15.7 嵌套的跟踪条目 219 15.8 代码 220 15.9 数据包跟踪 221 15.10 AMD/Intel x86-64补丁 222 15.11 小结 224 习题 224 第 16章 KUtrace的Linux内核可加载模块 225 16.1 内核接口数据结构 225 16.2 模块加载/卸载 226 16.3 初始化和控制跟踪 226 16.4 实现跟踪调用 227 16.5 Insert1 227 16.6 InsertN 229 16.7 切换到一个新的跟踪块 230 16.8 小结 230 第 17章 KUtrace的用户态的运行时控制 231 17.1 控制跟踪 232 17.2 独立的kutrace_control程序 232 17.3 底层的kutrace_lib库 233 17.4 可加载模块的控制接口 233 17.5 小结 234 第 18章 KUtrace的后处理 235 18.1 后处理的细节 235 18.2 rawtoevent程序 236 18.3 eventtospan程序 237 18.4 spantotrim程序 239 18.5 spantospan程序 239 18.6 samptoname_k和samptoname_u程序 240 18.7 makeself程序 240 18.8 KUtrace的JSON格式 240 18.9 小结 242 第 19章 KUtrace中软件动态的显示 243 19.1 概述 243 19.2 区域①—控件 244 19.3 区域②—y轴 246 19.4 区域③—主时间线 246 19.5 区域④—IPC图例 251 19.6 区域⑤—x轴 252 19.7 区域⑥—保存/还原 252 19.8 辅助控件 252 19.9 小结 253 第四部分 推理 第 20章 寻找什么 257 20.1 概述 257 20.2 寻找原因 258 第 21章 执行太多 259 21.1 概述 259 21.2 程序 259 21.3 谜团 260 21.4 探索和分析 261 21.5 理解谜团 265 21.6 小结 265 第 22章 执行缓慢 267 22.1 概述 267 22.2 程序 268 22.3 谜团 268 22.4 浮点运算对立程序 270 22.5 内存对立程序 273 22.6 理解谜团 274 22.7 小结 274 第 23章 等待CPU 276 23.1 程序 276 23.2 谜团1 276 23.3 探索和分析 277 23.4 谜团2 279 23.5 理解谜团2 280 23.6 附加谜团 282 23.7 小结 284 习题 284 第 24章 等待内存 285 24.1 程序 285 24.2 谜团1 286 24.3 探索和分析 286 24.4 谜团2:访问页表 290 24.5 理解谜团2 290 24.6 小结 292 习题 292 第 25章 等待磁盘 293 25.1 程序 293 25.2 谜团 294 25.3 探索和分析 294 25.4 读取40 MB 296 25.5 顺序读取4 KB的块 297 25.6 随机读取4 KB的块 299 25.7 在SSD上写入和同步 40 MB 301 25.8 在SSD上读取40 MB 301 25.9 两个程序同时访问两个文件 302 25.10 理解谜团 303 25.11 小结 304 习题 304 第 26章 等待网络 305 26.1 概述 305 26.2 程序 306 26.3 实验1 307 26.4 实验1中的谜团 308 26.5 实验1的探索与分析 309 26.6 实验1中RPC之间的时间 313 26.7 实验2 315 26.8 实验3 315 26.9 实验4 316 26.10 理解谜团 319 26.11 附加异常 320 26.12 小结 322 第 27章 等待锁 323 27.1 概述 323 27.2 程序 327 27.3 实验1:长时间持有锁 330 27.4 实验1中的谜团 331 27.5 探索和分析实验1 332 27.6 实验2:修复锁捕获 334 27.7 实验3:通过多个锁修复锁争用 335 27.8 实验4:通过锁住更少的工作来修复锁争用 337 27.9 实验5:通过为仪表板使用RCU来修复锁争用 338 27.10 小结 340 第 28章 等待时间 341 28.1 定期工作 341 28.2 超时 342 28.3 时间分片 342 28.4 内在的执行延迟 343 28.5 小结 343 第 29章 等待队列 344 29.1 概述 344 29.2 请求的分布 346 29.3 队列的结构 347 29.4 工作任务 348 29.5 主任务 348 29.6 Dequeue操作 348 29.7 Enqueue操作 349 29.8 PlainSpinLock类 349 29.9 “工作”例程 350 29.10 简单的示例 350 29.11 哪些地方可能发生了问题 351 29.12 CPU频率 352 29.13 复杂的示例 353 29.14 等待CPU:RPC日志 353 29.15 等待CPU:KUtrace 354 29.16 PlainSpinLock存在的缺陷 357 29.17 根本原因 358 29.18 修复PlainSpinLock:可观察性 359 29.19 负载均衡 360 29.20 队列深度:可观察性 361 29.21 结尾处的自旋 361 29.22 剩下的最后一个缺陷 362 29.23 交叉检查 362 29.24 小结 363 习题 363 第30章 全书回顾 365 30.1 你学到了什么 365 30.2 我们没有讲什么 367 30.3 接下来的工作 367 30.4 全书小结 368 附录A 示例服务器 369 附录B 跟踪条目 372 术语表 377 参考文献 383 KUtrace HTML图例 384
×
Close
添加到书单
加载中...
点此新建书单
×
Close
新建书单
标题:
简介:
蜀ICP备2024047804号
Copyright 版权所有 © jvwen.com 聚文网