动态跟踪系统的性能模型研究及基于动态跟踪技术的机群监测软件的设计与实现
| 目录 | 第1-7页 |
| 图表 | 第7-9页 |
| 摘要 | 第9-10页 |
| Abstract | 第10-11页 |
| 第一章 引言 | 第11-15页 |
| ·背景和工作 | 第11-13页 |
| ·全文结构 | 第13-15页 |
| 第二章 机群及机群监测软件 | 第15-39页 |
| ·集群 | 第15页 |
| ·集群的分类 | 第15-19页 |
| ·按功能分类 | 第15-17页 |
| ·按体系结构分类 | 第17-18页 |
| ·按操作系统分类 | 第18页 |
| ·按来源分类 | 第18-19页 |
| ·按规模分类 | 第19页 |
| ·集群的优点 | 第19-20页 |
| ·机群 | 第20-21页 |
| ·系统监测 | 第21-25页 |
| ·单机的监测 | 第22-23页 |
| ·按触发机制分类 | 第22页 |
| ·按实现手段分类 | 第22-23页 |
| ·按进行数据分析的时机分类 | 第23页 |
| ·机群的监测 | 第23-25页 |
| ·监测数据的用途 | 第24-25页 |
| ·现有的机群监测软件 | 第25-36页 |
| ·Pablo | 第25-26页 |
| ·MAT | 第26-27页 |
| ·Paradyn | 第27-29页 |
| ·Supermon | 第29页 |
| ·Ganglia | 第29-31页 |
| ·DCMM2 | 第31-32页 |
| ·ParaGraph | 第32页 |
| ·VAMPIR | 第32页 |
| ·IBM CSM | 第32-33页 |
| ·RVision | 第33-34页 |
| ·Shrimp | 第34页 |
| ·DDCS | 第34-36页 |
| ·机群监测系统的评估标准 | 第36-39页 |
| ·现有机群监测软件的评估及规律现象 | 第37-39页 |
| 第三章 动态代码插桩技术 | 第39-45页 |
| ·代码插桩技术的分类 | 第39-40页 |
| ·动态二进制代码插桩 | 第40-42页 |
| ·基于即时编译的动态插桩技术 | 第40-41页 |
| ·结合虚拟化技术的动态插桩技术 | 第41-42页 |
| ·基于探测器方式的动态插桩技术 | 第42页 |
| ·动态插桩技术的取舍 | 第42-43页 |
| ·DTrace与SystemTap的比较 | 第43-44页 |
| ·进一步的工作 | 第44-45页 |
| 第四章 动态跟踪系统运行机制的解析 | 第45-60页 |
| ·动态跟踪系统的软件架构 | 第45-46页 |
| ·一个典型的动态跟踪的执行过程 | 第46-48页 |
| ·探测器触发时的程序栈 | 第48-53页 |
| ·函数边界跟踪探测器的内核栈 | 第49-50页 |
| ·系统调用跟踪提供器的内核栈 | 第50页 |
| ·静态定义跟踪提供器的内核栈 | 第50页 |
| ·进程跟踪提供器的内核栈 | 第50-51页 |
| ·用户程序静态定义提供器的内核栈 | 第51页 |
| ·异步时钟提供器的内核栈 | 第51-53页 |
| ·探测器的触发流程 | 第53-58页 |
| ·内核函数边界跟踪提供器——FBT | 第54-55页 |
| ·内核静态定义跟踪提供器——SDT | 第55-56页 |
| ·系统调用跟踪提供器——Systrace | 第56页 |
| ·快速陷阱元提供器——Fasttrap | 第56-58页 |
| ·异步时钟提供器——Profile | 第58页 |
| ·探测器复用和D虚拟机 | 第58-60页 |
| 第五章 动态跟踪系统的性能模型 | 第60-81页 |
| ·探测器带来的影响 | 第60-61页 |
| ·DTrace用户进程带来的影响 | 第61-62页 |
| ·DTrace给系统带来的影响 | 第62-63页 |
| ·实测数据 | 第63-75页 |
| ·测试方法 | 第63-65页 |
| ·高分辨率时间戳的获取 | 第63-64页 |
| ·内存读写速度的测量 | 第64-65页 |
| ·实测环境 | 第65页 |
| ·测试用例 | 第65页 |
| ·模型参数测定 | 第65-75页 |
| ·虚拟指令的时耗 | 第66-67页 |
| ·内建变量的时耗 | 第67-68页 |
| ·动作的时耗 | 第68-69页 |
| ·探测器触发流程的时耗 | 第69-70页 |
| ·进程切换的时耗 | 第70-72页 |
| ·数据传递过程中的时耗 | 第72-73页 |
| ·DTrace用户进程的时耗 | 第73-75页 |
| ·模型验证 | 第75-79页 |
| ·验证程序的设计 | 第75页 |
| ·验证函数的选择 | 第75-76页 |
| ·验证数据的观测方法 | 第76页 |
| ·参数数据的验证 | 第76-77页 |
| ·线性增加的性能消耗的验证 | 第77-79页 |
| ·动态跟踪系统的评估 | 第79-81页 |
| 第六章 动态跟踪系统的扩展 | 第81-107页 |
| ·DTrace的缺憾 | 第81页 |
| ·内核套接字(Kernel Socket) | 第81-85页 |
| ·基本接口 | 第82-83页 |
| ·连接限制 | 第83-84页 |
| ·事件通知机制 | 第84-85页 |
| ·动态跟踪系统的改进 | 第85-97页 |
| ·新进程的分类 | 第86页 |
| ·mdtrace整体设计 | 第86-93页 |
| ·扩展的D脚本 | 第88-89页 |
| ·mdtrace的运行流程 | 第89-92页 |
| ·mdtrace_t结构 | 第92-93页 |
| ·Exec()系统调用的处理过程和改进方法 | 第93-95页 |
| ·Fork()系统调用的处理过程和改进方法 | 第95-97页 |
| ·mdtrace的代码流程 | 第97-99页 |
| ·动态发现的流程 | 第97-99页 |
| ·回调函数的流程 | 第99页 |
| ·fork和exec的时耗分析 | 第99-101页 |
| ·改进中的一些探讨 | 第101-104页 |
| ·使用内核套接字进行逆向通讯的原因 | 第101-102页 |
| ·"exec发现"和"fork发现"设计的比较 | 第102-103页 |
| ·工作线程的限制 | 第103-104页 |
| ·实用举例 | 第104-107页 |
| 第七章 基于动态跟踪技术的机群监测软件 | 第107-142页 |
| ·设计目标 | 第107页 |
| ·功能列表 | 第107-109页 |
| ·DDTS的功能列表 | 第107-108页 |
| ·DDTC的功能列表 | 第108-109页 |
| ·机群监控软件的整体流程 | 第109页 |
| ·DDTS精灵进程的流程 | 第109-111页 |
| ·DDTS采集到的原始数据 | 第111-112页 |
| ·DDTC中各模块的工作流程 | 第112-126页 |
| ·节点管理 | 第112-113页 |
| ·机群配置文件 | 第112-113页 |
| ·心跳管理 | 第113-115页 |
| ·心跳检测的流程 | 第114-115页 |
| ·脚本分派 | 第115-118页 |
| ·扩展 | 第116-117页 |
| ·Nodename扩展 | 第117-118页 |
| ·响应控制 | 第118-123页 |
| ·自动反馈 | 第118-122页 |
| ·主动反馈 | 第122-123页 |
| ·数据存储 | 第123-126页 |
| ·原始数据的格式 | 第123-124页 |
| ·日志文件名 | 第124页 |
| ·日志文件的格式 | 第124页 |
| ·记录重放 | 第124-125页 |
| ·数据记录及日志重放模块的接口 | 第125-126页 |
| ·插件机制 | 第126-133页 |
| ·DDTC插件的功能 | 第127-129页 |
| ·开源图表库 | 第129页 |
| ·插件接口 | 第129-131页 |
| ·插件配置文件 | 第131-132页 |
| ·插件实例 | 第132-133页 |
| ·实测与分析 | 第133-142页 |
| ·机群搭建 | 第133-134页 |
| ·软件部署 | 第134-135页 |
| ·MPI的部署 | 第134页 |
| ·MPI测试 | 第134-135页 |
| ·机群监测的部署 | 第135页 |
| ·案例分析 | 第135-138页 |
| ·计算节点的负载 | 第138-139页 |
| ·控制节点的负载 | 第139页 |
| ·软件评估 | 第139-142页 |
| 第八章 总结 | 第142-144页 |
| ·贡献与创新 | 第142页 |
| ·进一步的研究和工作 | 第142-144页 |
| 附录 | 第144-147页 |
| cpuusage2.d脚本 | 第144-145页 |
| memusage.d脚本 | 第145页 |
| tcpusage.d脚本 | 第145-147页 |
| 参考文献 | 第147-152页 |
| 攻读硕士学位期间发表的学术论文 | 第152-153页 |
| 致谢 | 第153-155页 |