首页>参考读物>计算机科学与技术>计算机科学理论与基础知识

高性能计算的问题解决之道:Linux态势感知方法、实用工具及实践技巧
作者 : [美]伊戈尔·卢布希斯(Igor Ljubuncic) 著
译者 : 张文力 译
出版日期 : 2018-01-31
ISBN : 978-7-111-58978-5
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 266
开本 : 16
原书名 : Problem-solving in High Performance Computing: A Situational Awareness Approach with Linux
原出版社: Elsevier (Singapore) Pte Ltd
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书由Intel资深工程师撰写,针对如何解决复杂高性能计算中的问题这一主题,深入剖析了其独到的方法论。该方法论将大型计算网格视为内聚系统,将孤立故障与复合问题区别开来,通过关键任务环境中的真实案例,从分析问题到解决问题再到优化系统,层层深入,为不同用户提供高度模块化的可扩展工具及解决方案。

图书特色

Intel资深架构师的深度分享,“方法+工具+技巧”成就数据中心的问题“终结者” 
Linux态势感知创新方法,用数学取代直觉,将系统故障排除的艺术转化为产品

数据中心7×24小时全天候运行,支撑着数以亿计的互联网服务和高性能计算任务,任何一个微小的bug都有可能导致沉重的损失。然而,面对来自数据中心的故障警报,我们却几乎没有一种统一的方法来解决问题。

本书创造性地引入态势感知方法,基于统计工程和实验设计,将故障排除这门依赖直觉的艺术转化为高效的工作流程。作者将多年来为基于Intel的系统开发解决方案的经验以生动的形式呈现于书中,既包含对技术性问题的分析,又包含对技能的扩展和深入。特别是,在内核调试中通过对系统崩溃的再现来快速定位bug,充分展现了Linux内核的魅力。跟随作者精心设计的学习路径,你将逐步熟悉不同工具的使用技巧,从基础问题进阶高级实战,层层深入,最终成为解决问题的高手。

本书是为你准备的:
你的数据中心承担着关键计算任务,不容有失,如何提供零失误的技术保障?
你的系统陷入重度危机,特别工作小组怎样通力攻关,用最短时间恢复服务?
你编写脚本、调试工具、绘制图表、挖掘数据,同时也日益桎梏于知识与经验。
日志在屏幕上滚动,监控在捕捉系统的“呼吸”,而你仍然感受不到问题爆发的前兆。
客户抱怨应接不暇,面对相同问题你却只是重复“发明轮子”,没有一套科学的方法。

译者简介

张文力
中国科学院计算技术研究所博士,普林斯顿大学计算机系访问学者。现为计算所计算机体系结构国家重点实验室助理研究员,中国计算机学会高性能计算专委委员。近20年长期从事高性能计算、大数据、面向应用的系统优化等方向的研究,对云计算、数据中心网络关键技术以及原型验证系统有深入研究。
她曾先后参与曙光4000、5000和6000(中国首次在全球高性能计算机TOP500排行榜中名列第二)的系统研制工作。近期承担和参与的项目包括国家重点研发计划、国家自然科学基金重点项目、中国科学院战略性先导专项课题、华为联合实验室项目等。在国际国内知名期刊、学术会议发表论文数十篇,拥有多项专利授权。

作者简介

伊戈尔·卢布希斯(Igor Ljubuncic)
曾任Intel工程计算部门的操作系统架构师,为全球高性能Linux计算环境提供解决方案;还曾任Rackspace云计算中心的首席工程师;现在是一名自由作家和商业顾问。他在高性能计算领域深耕十余年,专注于数据中心和物联网技术等,拥有15项美国专利,编著了7本开源技术方面的书籍。此外,他还是一名奇幻小说畅销书作家。

图书前言

我花了大部分的Linux职业生涯在数着成千上万的服务器,就像一个音乐家盯着乐谱能看到在和声中隐藏的波形。过了一段时间,我开始了解数据中心的工作模式和行为。它们就像活着、会呼吸一般,有自己的跌宕起伏、周期和不同寻常。它们远不止是简单的叠加,当你把人作为元素添加到方程中,更是变得不可预知。
在诸如大型数据中心、云平台架构和高性能的环境中,大型部署管理是一项非常微妙的任务。它需要大量的经验、努力和对技术的理解来创造一个成功而高效的工作流程。未来的愿景和经营战略也是需要的。但在相当多的时候,其中某一个重要部分是缺失的。
在解决问题时,没有通盘战略。
本书是我的一个创造性尝试。那些年,在我设计解决方案和产品致力于使我掌控的数据中心变得更好、更强大且更高效的时候,也暴露了我在解决问题上的根本差距。人们很难完全理解这意味着什么。是的,它涉及工具和非法侵入系统。你可能会编写一些脚本,或者花很长时间盯着日志在屏幕上滚动。你可能会绘制图表来显示数据趋势。你可能会向同事请教他们领域的问题。你可能会参与或领导特别工作组试图解决危急问题和恢复供电。但在最后,就像拼图一样,没有一个统一的方法能解决所有的问题。
态势感知的问题解决方法借鉴自科学领域,它试图用数学来代替人的直觉。我们将使用统计工程和实验设计以对抗混乱。我们会慢慢地、系统地、一步一步地工作,努力找到一种统一的方法用于解决同类问题。我们关注打破数据神话,摆脱一些波及数据中心的偏见和传统。然后,我们将把系统故障排除的艺术转化为产品。这可能听起来很残酷,艺术将按重量出售,但当你深入阅读本书的时候,其中的必要性就变得显而易见。你的那些不自在,在原本无论接触监控、变化控制和管理、自动化以及其他哪怕是最好的实践都会有的不自在,统统将会慢慢融入现代数据中心。
最后同样重要的是,请不要忘记我们尽一切努力去研究和解决问题的初衷——乐趣和好奇心,这正是让我们成为工程师和科学家的真正原因,正是让我们热爱数据中心技术编织的混乱、忙碌而又疯狂的世界的原因。
快来和我们一路同行吧。

Igor Ljubuncic

上架指导

计算机\高性能计算

封底文字

数据中心7×24小时全天候运行,支撑着数以亿计的互联网服务和高性能计算任务,任何一个微小的bug都有可能导致沉重的损失。然而,面对来自数据中心的故障警报,我们却几乎没有一种统一的方法来解决问题。

本书创造性地引入态势感知方法,基于统计工程和实验设计,将故障排除这门依赖直觉的艺术转化为高效的工作流程。作者将多年来为基于Intel的系统开发解决方案的经验以生动的形式呈现于书中,既包含对技术性问题的分析,又包含对技能的扩展和深入。特别是,在内核调试中通过对系统崩溃的再现来快速定位bug,充分展现了Linux内核的魅力。跟随作者精心设计的学习路径,你将逐步熟悉不同工具的使用技巧,从基础问题进阶高级实战,层层深入,最终成为解决问题的高手。

本书是为你准备的:
·你的数据中心承担着关键计算任务,不容有失,如何提供零失误的技术保障?
·你的系统陷入重度危机,特别工作小组怎样通力攻关,用最短时间恢复服务?
·你编写脚本、调试工具、绘制图表、挖掘数据,同时也日益桎梏于知识与经验。
·日志在屏幕上滚动,监控在捕捉系统的“呼吸”,而你仍然感受不到问题爆发的前兆。
·客户抱怨应接不暇,面对相同问题你却只是重复“发明轮子”,没有一套科学的方法。

译者序

高性能计算已成为继理论科学和实验科学之后科学研究的第三大支柱,越来越多的科学发现和工程设计成果都依赖于高性能计算系统。高性能计算已经全面应用到国家安全、政府决策、科学研究、工业设计等诸多层面,典型应用包括生物工程、新药研制、石油物探、运载器设计(航空航天、舰船、汽车)、材料工程、核爆模拟、尖端武器制造、密码研究和各类大规模信息处理等。各国正在积极研制的E级(每秒百亿亿次)计算系统有望在2020~2022年出现。近几年来,以电子商务、微信为代表的互联网服务使得万众受益,大规模系统是这些服务的核心基础设施,而系统平均无故障时间(Mean Time To Failure,MTTF)则会随节点数增加而显著降低。互联网服务系统往往包含数以千计的磁盘和服务器,在这种情况下,即便不计成本地使用MTTF达到4年的设备,在一个拥有1000个节点的集群中,也会每周发生近5次故障。若适当考虑成本因素而采用MTTF为两年的设备,每周的故障次数将达到近10次。故障停机对互联网服务企业直接意味着巨额损失,大规模IT系统需要更好的设计和管理来处理更频繁的故障。
工欲善其事,必先利其器。基于Linux态势感知方法来解决高性能计算的问题,是本书的一个创造性尝试。正如作者所说,在解决大系统问题时,没有通盘战略,你可能会编写一些脚本或者花很长时间盯着日志在屏幕上滚动,你可能会绘制图表来显示数据趋势,你可能会向同事请教他们领域的问题,你可能会参与或领导特别工作组试图解决危急问题或恢复供电,但在最后,就像拼图一样,没有一个统一的方法能解决所有的问题。在诸如大型数据中心、云平台架构和高性能的环境中,大型部署管理是一项非常微妙的任务,它需要大量的经验、努力和对技术的理解来创造一个成功而高效的工作流程。所谓态势感知的问题解决方法,是借鉴自科学领域的一种方法,试图用数学来代替人的直觉,使用统计工程和实验设计以对抗混乱,系统地、循序渐进地工作,努力找到一种统一的方法用于解决同类问题。作者分享了多年来为基于英特尔的系统开发解决方案的经验,即如何在涉及数千台服务器、数十万个核、分布式数据中心和PB级共享数据的环境下排除故障,他的经验涵盖全栈,从识别问题、理解问题到再现问题,再到使用系统化的自上而下的方法来解决问题。自始至终,本书提供了独特的实践中的例子,强调了高性能计算机系统的规模和操作复杂性。
本书共11章。前6章主要介绍在解决高性能计算问题方面遇到的一些纯技术性问题,后5章侧重于扩展技能和理解,介绍一种完整的整体态势感知方法,深入数学模型和最佳实践,以及监控和配置管理,这使我们更有信心应对新的挑战。
第1章介绍了一种可以说是在数据中心应该如何解决问题的近乎方法论的观点。
第2章讨论解决问题和研究的基本方法,专门介绍在研究中可能会遇到的一些常见的陷阱。
第3章围绕着解决问题使用的一些常见应用程序和工具,比如ps、top、vmstat、iostat等,建立起报告的症状与软硬件资源的实际行为之间的联系。
第4章讲述进程空间和内核,为了使用工具来揭示任务结构和操作系统本身,我们需要对底层构建模块有更深入的了解。
第5章专注于深入分析和刻画(profile)应用程序,以及分析内核本身,通过使用不同的工具为问题创建一个更完整的多维画面,并提出相关的解决方案。
第6章进一步讨论内核崩溃分析和内核调试器的使用。包含研究过程中最复杂的部分,从Kdump实用程序的设置开始,然后是深入的内核崩溃分析,最后是kdb工具的简要概述。
第7章关于问题的解决形成了一个具有多层工具和实践的完整原则。首先以实用的方式组织数据,然后与供应商和行业进行内部和外部接洽。随着问题的解决,一个复杂的周期(包括测试、验证和分阶段实施)将在几个关键组件上帮助你做出正确的决定。
第8章详细阐述了建立稳健有效的监测环境的考虑因素、方法和工具。解决问题的下一个步骤是确保我们能在数据中发现规律,将它们关联到产生数据的源代码,并试图在第一时间阻止问题出现。
第9章介绍环境变化和控制环境的后续过程。我们的关键工具是版本控制和配置管理软件。
第10章通过几个实际的例子说明如何在合适的时候做出必要的调整,调整环境与需求相匹配,并提供必要的操作灵活性,从而避免之后不得不工作在“救火”模式。
第11章总结全书,通过解决问题、在研究中使用系统化的方法,尝试避免工作过程中的经典错误和陷阱。
对于每一章内容,作者都力争以最小的篇幅介绍更多的知识,从工具和工具间对比到基本使用、基础实例、高级实例,层层深入,系统全面。作者运用形象的表达,生动地讲解原本枯燥的知识,能够让读者保持持久的学习热情。比如第6章的内核Kdump调试部分,内核崩溃所产生的转储(dump)文件可以对调试工作产生难以想象的巨大影响,但随着作者的介绍,你可以进行故意崩溃,可以进行回溯,可以通过异常信号快速定位bug,让读者深刻领略了Linux内核的魅力。纸上得来终觉浅,绝知此事要躬行。在复杂的环境中,比如在一个大规模的履行关键使命的数据中心,要想真正掌握解决问题的方法和技巧,还需要不断实践本书方法并认真地研究系统问题。
本书由中国科学院计算技术研究所张文力博士翻译完成。首先,我要感谢机械工业出版社曲熠编辑的邀请,感谢她的信任、支持和理解。其次,感谢实验室主任陈明宇研究员的支持,感谢课题组的宋辉和梁冬协助完成部分章节的初稿,还要感谢宋纪涛的校译与润色。在此书翻译过程中,我带领团队承担着国家和中国科学院重要研究课题和项目,以及华为公司的数据中心合作项目等,由于任务繁重,翻译工作主要在休息时间完成,感谢我的家人、幼子在此过程中给予的配合、理解和大力支持。
关于此书的翻译工作,译者已尽最大的努力完善,如有不尽之处敬请批评指正。总之,这是一次宝贵的体验!

张文力
2017年11月

图书目录

译者序
前 言
致 谢
引言 数据中心与高端计算 1
数据中心一览 1
现代数据中心布局 1
欢迎来到BORG,抵抗是徒劳的 2
那就是力量 2
企业与Linux 2
经典的办公室 2
Linux计算环境 3
Linux云 3
10000个1不等于10000 3
问题的非线性扩展 3
大数定律 4
同质化 4
企业的当务之急 4
7天24小时全天候开放 5
任务危急 5
停机时间等于金钱 5
千里之堤溃于蚁穴 5
参考文献 5
第1章 你有问题吗 6
问题的识别 6
如果森林里有一棵树倒下,没人能听到 6
一步一步地识别 7
总是优先使用简单工具 7
过多的知识导致误区 9
问题的定义 9
当前发生或可能的问题 10
停机规模和严重性与业务需求 11
已知与未知 13
问题的再现 13
你能隔离问题吗 13
偶发性问题需要特殊处理 14
计划如何控制混乱 14
放手是最难的事 15
因与果 16
不要流连于症状 16
先有鸡还是先有蛋 16
严格控制环境改变,直到你理解了问题的本质 18
如果改变,确保你知道预期结果是什么 18
结论 19
参考文献 19
第2章 开始研究 20
隔离问题 20
推动从生产到测试 20
重新运行获得结果所需的最小集 21
忽略偏见信息,避免假设 21
与健康系统和已知参考的比较 22
那不是程序错误,而是一个特性 22
将预期结果与正常系统作比较 23
性能和行为的参考是必需的 24
对变化的线性与非线性响应 24
一次一个变量 25
线性复杂度的问题 25
非线性问题 25
响应可能会延迟或掩盖 25
Y到X而不是X到Y 26
组件搜索 26
结论 26
第3章 基础研究 27
刻画系统状态 27
环境监控 27
机器可访问性、响应性和正常
运行时间 27
本地和远程登录以及管理控制台 29
喊狼来了的监控 29
读取系统信息和日志 30
使用ps和top 30
系统日志 36
进程记账 39
检查命令执行的模式 40
与问题表现相关 41
避免快速的结论 41
统计作为辅助 41
vmstat 41
iostat 43
系统活动报告(SAR) 47
结论 49
参考文献 50
第4章 深入探讨系统 51
使用/proc 51
层次 52
每个进程的变量 52
内核数据 56
进程空间 60
检查内核可调参数 63
sys子系统 63
内存管理 64
文件系统管理 65
网络管理 65
SunRPC 66
内核 67
sysctl 69
结论 70
参考文献 70
第5章 变身极客——跟踪和调试应用 72
使用strace和ltrace 72
strace 72
ltrace 86
结合两种工具获得最佳结果 87
其他工具 90
使用perf 93
介绍 93
为什么不用OProfile 94
前提 94
基本使用 94
基础实例 99
高级实例 103
小结 107
使用gdb 107
介绍 107
前提 108
简单实例 108
不那么简单的实例 113
其他有用的命令 122
结论 124
参考文献 124
第6章 极客进级——应用和内核核心、内核调试器 126
收集应用核心 126
如何转储应用核心 127
收集内核核心(Kdump) 132
Kdump服务概览 133
Kdump配置 137
测试配置 143
Kdump网络转储功能 145
Kdump使用 146
小结 147
崩溃分析(crash) 147
前提 147
运行crash 148
内核崩溃核心分析 156
超级极客技能:C代码分析 167
小例子 168
中级例子 172
困难的例子 176
内核崩溃的bug报告 182
崩溃分析结果 184
内核bug与硬件错误 185
小结 186
内核调试器 186
内核编译 186
进入调试器 187
基本命令 187
小结 189
结论 189
参考文献 189
第7章 问题的解决方案 191
如何处理收集到的数据 191
文档 191
数据的杂乱 193
最佳实践 195
搜索引擎、邮件列表以及供应商支持 202
找到根本原因 203
消除问题 204
实现和跟踪 206
结论 207
参考文献 208
第8章 监控和预防 209
监控什么数据 209
过多的数据比没有数据更糟 209
Y到X将定义你所需要的监控 210
不要害怕改变 210
如何监控和分析趋势 211
设置你关心的监控 211
监控不等于报告 212
不监控随机指标 212
定义数学趋势 213
如何应对趋势 215
当它来得太晚 216
内务管理 217
预防是解决问题的关键 217
配置审核 218
为什么审核有用 218
控制环境的变化 219
安全方面 219
系统数据收集工具 219
定制工具 220
商业支持 220
结论 221
参考文献 221
第9章 让你的环境更安全、更健壮 222
版本控制 222
为什么需要版本控制 222
Subversion、Git及相关软件 223
简单回滚 223
配置管理 223
变懒:自动化 224
大环境下的熵 225
掌控混乱 225
配置管理软件 225
环境中引入变化的正确方法 226
一次一个变化 226
不要急着冲到截止时间 227
理解影响 228
没报告问题意味着什么都没有 228
连锁反应 228
结论 229
参考文献 229
第10章 微调系统性能 230
日志大小与日志轮转 230
系统日志会一直增长 230
慢点,倒带 232
确定消息的内容 232
文件系统调优 234
Ext3/4文件系统 234
XFS文件系统 235
sysfs文件系统 236
层次 236
block子系统 237
FS子系统 237
内核子系统 237
模块子系统 238
结合proc和sys 238
内存管理实例 238
CPU调度实例 238
网络优化实例 241
结论 243
参考文献 243
第11章 整合所有的部分 245
自上而下的方法 245
保持简单:从简单开始 245
首先理解环境 245
它就像洋葱:分层而且会使你流泪 246
“自我消失”的问题会重现,且 扩大影响 246
没有捷径:努力是金科玉律 246
使用的方法学 247
文档 247
一种清晰的方法 247
Y到X应该是座右铭 247
统计工程不受重视 248
数学是强大的,但没人用 248
使用的工具 248
使用的工具概述 248
所选工具的优缺点 249
从简单到复杂 249
不要过多涉猎:知识是你的敌人 249
逐步进阶的方法 249
不要害怕退步 250
有时你只需要缓解问题 250
操作约束 250
钱,钱,钱 250
你的客户永远无法忍受停机 250
你将不得不妥协 251
聪明的做法 251
分享就是关怀 251
请教别人:他们以前碰到过类似问题 252
工作安全根本没有安全可言 252
授人以鱼或者授人以渔 253
只有你知道什么对你而言是最好的 253
结论 253

教学资源推荐
作者: [美]大卫·P. 威廉姆森(David P. Williamson) 著
作者: 顾小丰 孙世新 卢光辉 编著
作者: [美] 彼得 J. 丹宁(Peter J. Denning),克雷格 H. 马特尔(Craig H. Martell) 著
作者: (美)Alfred V. Aho; Monica S. Lam; Ravi Sethi; Jeffrey D. Ullman 著
参考读物推荐
作者: 邹恒明 著
作者: 戴艳 等编著
作者: 于中华,黄桂钦等