描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111589785
内容简介
本书由Intel架构师撰写,创造性地采用Linux态势感知方法来解决高性能计算的问题,涵盖技术、监控和配置管理等多个方面。书中针对大规模数据中心、云平台架构和高性能计算环境,建立了一套基于统计工程和实验设计的方法论,从识别问题和理解问题,到再现问题和解决问题,一步一步地排除故障,形成了一套高效的工作流程。书中包含大量实战案例和代码,并介绍了不同工具的使用技巧,适合从事高性能计算相关工作的技术人员和管理人员参考。
目 录
Contents 目 录
译者序
前 言
致 谢
引言 数据中心与高端计算 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
blo
译者序
前 言
致 谢
引言 数据中心与高端计算 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
blo
前 言
前 言?Preface我花了大部分的Linux职业生涯在数着成千上万的服务器,就像一个音乐家盯着乐谱能看到在和声中隐藏的波形。过了一段时间,我开始了解数据中心的工作模式和行为。它们就像活着、会呼吸一般,有自己的跌宕起伏、周期和不同寻常。它们远不止是简单的叠加,当你把人作为元素添加到方程中,更是变得不可预知。
在诸如大型数据中心、云平台架构和高性能的环境中,大型部署管理是一项非常微妙的任务。它需要大量的经验、努力和对技术的理解来创造一个成功而高效的工作流程。未来的愿景和经营战略也是需要的。但在相当多的时候,其中某一个重要部分是缺失的。
在解决问题时,没有通盘战略。
本书是我的一个创造性尝试。那些年,在我设计解决方案和产品致力于使我掌控的数据中心变得更好、更强大且更高效的时候,也暴露了我在解决问题上的根本差距。人们很难完全理解这意味着什么。是的,它涉及工具和非法侵入系统。你可能会编写一些脚本,或者花很长时间盯着日志在屏幕上滚动。你可能会绘制图表来显示数据趋势。你可能会向同事请教他们领域的问题。你可能会参与或领导特别工作组试图解决危急问题和恢复供电。但在后,就像拼图一样,没有一个统一的方法能解决所有的问题。
态势感知的问题解决方法借鉴自科学领域,它试图用数学来代替人的直觉。我们将使用统计工程和实验设计以对抗混乱。我们会慢慢地、系统地、一步一步地工作,努力找到一种统一的方法用于解决同类问题。我们关注打破数据神话,摆脱一些波及数据中心的偏见和传统。然后,我们将把系统故障排除的艺术转化为产品。这可能听起来很残酷,艺术将按重量出售,但当你深入阅读本书的时候,其中的必要性就变得显而易见。你的那些不自在,在原本无论接触监控、变化控制和管理、自动化以及其他哪怕是好的实践都会有的不自在,统统将会慢慢融入现代数据中心。
后同样重要的是,请不要忘记我们尽一切努力去研究和解决问题的初衷——乐趣和好奇心,这正是让我们成为工程师和科学家的真正原因,正是让我们热爱数据中心技术编织的混乱、忙碌而又疯狂的世界的原因。
快来和我们一路同行吧。
Igor Ljubuncic致 谢?Acknowledgements写这本书的时候,我会偶尔离开办公桌,四处与人交谈。他们的意见和建议帮助塑造了这本书,使它拥有更漂亮的形式。因此,我要感谢Patrick Hauke确保这个项目终完成,感谢David Clark编辑书稿并调整句子段落,感谢Avikam Rozenfeld提供有用的技术反馈和理念,感谢Tom Litterer在正确的方向上做正确的引导,后同样重要的是,感谢其他那些在英特尔的聪明而又努力工作的人。
女士们,先生们,请允许我脱帽致敬。
Igor Ljubuncic
在诸如大型数据中心、云平台架构和高性能的环境中,大型部署管理是一项非常微妙的任务。它需要大量的经验、努力和对技术的理解来创造一个成功而高效的工作流程。未来的愿景和经营战略也是需要的。但在相当多的时候,其中某一个重要部分是缺失的。
在解决问题时,没有通盘战略。
本书是我的一个创造性尝试。那些年,在我设计解决方案和产品致力于使我掌控的数据中心变得更好、更强大且更高效的时候,也暴露了我在解决问题上的根本差距。人们很难完全理解这意味着什么。是的,它涉及工具和非法侵入系统。你可能会编写一些脚本,或者花很长时间盯着日志在屏幕上滚动。你可能会绘制图表来显示数据趋势。你可能会向同事请教他们领域的问题。你可能会参与或领导特别工作组试图解决危急问题和恢复供电。但在后,就像拼图一样,没有一个统一的方法能解决所有的问题。
态势感知的问题解决方法借鉴自科学领域,它试图用数学来代替人的直觉。我们将使用统计工程和实验设计以对抗混乱。我们会慢慢地、系统地、一步一步地工作,努力找到一种统一的方法用于解决同类问题。我们关注打破数据神话,摆脱一些波及数据中心的偏见和传统。然后,我们将把系统故障排除的艺术转化为产品。这可能听起来很残酷,艺术将按重量出售,但当你深入阅读本书的时候,其中的必要性就变得显而易见。你的那些不自在,在原本无论接触监控、变化控制和管理、自动化以及其他哪怕是好的实践都会有的不自在,统统将会慢慢融入现代数据中心。
后同样重要的是,请不要忘记我们尽一切努力去研究和解决问题的初衷——乐趣和好奇心,这正是让我们成为工程师和科学家的真正原因,正是让我们热爱数据中心技术编织的混乱、忙碌而又疯狂的世界的原因。
快来和我们一路同行吧。
Igor Ljubuncic致 谢?Acknowledgements写这本书的时候,我会偶尔离开办公桌,四处与人交谈。他们的意见和建议帮助塑造了这本书,使它拥有更漂亮的形式。因此,我要感谢Patrick Hauke确保这个项目终完成,感谢David Clark编辑书稿并调整句子段落,感谢Avikam Rozenfeld提供有用的技术反馈和理念,感谢Tom Litterer在正确的方向上做正确的引导,后同样重要的是,感谢其他那些在英特尔的聪明而又努力工作的人。
女士们,先生们,请允许我脱帽致敬。
Igor Ljubuncic
评论
还没有评论。