DSL虚拟化分布式软件日志管理系统研究
DSL 虚拟化分布式软件日志管理系统研究
0 、引言
随着云计算规模的不断扩大,灾备系统的发展成为各行各业关注的重点,云计算故障可能产生灾
难性的后果,云计算中的系统故障和软件故障则会影响成千上万家企业.与此同时,分布式软件的
组成部分也日趋庞大与复杂,这给系统调试以及系统维护带来了很大的不确定性.
如何有效利用分布式软件在运行过程中产生的大量软件日志文件来分析状态和改善性能,以及满
足软件日志服务在效率、健壮性、可扩展性方面的需求,是一个具有研究意义和实用价值的课
题.虚拟化技术的不断发展给灾备与容错技术提供了更加广阔的前景.
针对灾备云平台中所出现的系统运行环境和服务软件的故障,利用虚拟化技术封装各虚拟节点中
系统的服务软件故障,可将故障带来的损失大大降低.由于分布式软件系统十分复杂,这使得分布
式软件的故障处理和维护得变异常困难.
庞大且复杂的系统在日常运行中会有各种各样的日志,若不能将这些文件及时妥当的保存,一旦
出现问题或性能低下时,很难提出有效的解决方案.针对分布式软件日志管理中存在的诸多问题,
为了实现分布式软件调试、监控、故障诊断与恢复功能,以及各结点的高可用性和高可靠性,本
文在基于虚拟化的分布式容错备份技术的背景下,提出了 VDSL 虚拟化分布式软件日志管理系
统,主要有以下功能点:第一,虚拟化支撑平台中分布式软件的软件日志记录;第二,虚拟化支撑平
台中软件日志同步.
1、软件日志记录平台
软件日志记录的工具包括插桩工具,翻译工具以及调试工具.插桩工具获得程序的控制权,翻译工
具记录程序指令的执行流,调试工具产生各种可供阅读性的软件日志文件.
以上 3个工具实现了软件日志功能完整的工作流程.
1.1 动态二进制翻译
动态二进制翻译是在程序运行时动态的执行二进制代码翻译.
一般以程序的代码块为基本单位,经翻译后生成的目标代码块立即存入缓存代码中执行,直到遇
到一个新的且未翻译过的代码块.动态二进制翻译的优势是跟随着动态程序的控制流推进,很好
地解决了代码覆盖和自行修改后执行代码的问题.
同时,由于能够得到程序的动态运行时数据流信息,更有利于进行有效的信息搜集和性能优化.
1.2 用户级翻译框架
针对虚拟化环境下运行的业务软件,本文提出了一种用户级别的翻译框架:LogOS.LogOS 是一个
针对全系统翻译的基于动态翻译框架扩展的翻译框架,它可以对内核和用户级二进制文件进行翻
译.LogOS 允许在包含Intel VT 技术的 Xen VMM 上,对未修改的程序进行插桩和翻译.LogOS 总
体架构如图1所示.
LogOS 由一个虚拟机(virtual machine,VM),一个代码高速缓存单元code cache 和一个 Logger 调用
的检测 API 构成.VM 由一个即时编译器,一个模拟器和一个调度程序器组成.在LogOS 取得对程
序的控制之后,VM 协调它的组成部分并执行程序:调度器启动JIT(just in time)编译器和检测程序
代码.被编译的代码存储在目标代码高速缓存单元中.
从代码缓存进出 VM 涉及到存储和恢复应用程序寄存器状态 emulator 翻译不能直接执行的指令.
它是给需要 VM 特殊处理的系统调用使用的.因为LogOS 是建立在操作系统之上的,因此它只能
获取用户状态下的代码.程序在 LogOS 中执行完毕后,Logger 完成了对程序的插桩,然后与程序分
离,将所得到的不同粒度的软件运行日志存放在本地文件中.
1.3 软件日志记录
日志系统实现的日志记录功能包括:内存检查,函数调用检查,缓存调用检查,多线程程序竞争检查
和堆栈使用检查.利用 Xen 虚拟化技术将 LogOS 置于GuestOS 下面,可以避免修改GuestOS 的源
码,且可以观测在Domain U 每一条指令的执行,提供了良好的隔离性和透明性,同时,Xen
Hypervisor 为LogOS 提供模拟的硬件支持.
1.3.1 内存分析
Memlog 堆栈异常是程序员常见的代码错误,处理堆栈异常最困难的地方在于定位 Bug 发生的代
码段.Memlog 会检查内存中一切读写行为,能够检测到程序运行中的所有内存错误情况.Memlog
作为动态二进制检测工具,在无需修改程序源代码的情况下动态检测指令访问堆栈的情况,并记
录具有实用价值的运行日志信息.
其检测原理如图2所示.有效值表映射:进程中地址空间的各个字节均存在和它匹配映射的八个
位;同样,各寄存器一样存在和它匹配的位.各字节或者寄存器值的有效性和已初始化的值可以有
这样的向量标记.有效地址表映射:用一个 bit 标识地址空间的各个字节的地址,记录程序是否可以
读写这个字节.检测原理:当程序读一个字节时会检查与之匹配的位的真假.若为假,则该地址的读
操作位是非法操作.
当程序写一个字节时,会检查与之匹配的位的真假.若为假,则该地址的写操作位是非法操作.
1.3.2 缓存调用分析
Cachelog 指令访问缓存的命中率高低对一个程序的运行速度存在不小的影响.Cachelog 通过检测
指令对内存的每次读写计算出缓存命中率,找出影响程序性能的瓶颈.为了模拟程序在不同 Cache
配置下的执行行为,Cachelog 必须要探测到程序每条指令的每次缓存读写命中率,进而根据各种
Cache 配置模拟 Cache 的行为.为了对不同的 Cache 配置实现行为模拟,必须理解 Cache 的特征参
数.
对于普通缓存块,其规格参数包括:缓存与缓存块的大小、缓存的组织方式与替换策略等.对缓存
块的读写与替换是Cache 行为模拟中十分关键的操作,下面阐述的算法原型可以实现以上功能.
1)读操作:将Read_Addr 与Block_Size 匹配并对齐.按照缓冲块的组织结构用对齐后的 Read_Addr
查找缓存块所在的组.遍历 Cache_Block 组检测有效值,并查找是否有共同地址的Cache_Block
块.若查找成功,则hit_count++,反之,miss_count++.
同时,更新缓存块的数据.
2)写操作:按照写分配原则.假设在写缓存时发生不命中的情况,就一定要将缓存的数据置换入缓
存进而重写.
此时,对缓存写的操作和读操作就一致了.因为当前流行的 CPU 都是遵循的写分配原则,所以
Cachelog 用统一算法模拟缓存的写操作.
3)替换操作:以下一步即将访问的地址为索引,查找其所保存的组.依据相应的置换算法在组里选
取命中率最低的缓存块.重新计算新缓存块的 block_start_addr.
2 、分布式软件日志同步
2.1 日志格式
软件日志记录进程在执行时产生各种数据,包括程序在运行时的各个级别数据流信息.为了支持
故障审计与性能分析,日志系统很重要的一个部分就是设计日志记录的格式.日志记录的格式必
须是可配置的,用户可以自行配置分布式软件在运行过程中所要记录的日志数据信息.为保证日
志管理系统的通用性,定义了如下日志记录格式:Id:日志记录中的日志 Id 是连续递增的,当需要对
系统中某个节点中的某个服务软件的状态在某段时间的运行状况进行分析时,只用查找这一段连
续的Id.
IpAddress:标识记录日志的主机IP.由日志系统通过本地函数获得.
LogTime:记录日志的时间.LogPid:产生日志的进程号.
ObjName:产生日志的分布式软件对象名称.
LogType:标识日志类型,表示不同类型软件日志的用途.
LogLevel:日志级别,根据不同粒度的数据流记录可以产生不同的日志.
LogText:日志内容.
为了确保日志文件有相同格式,日志系统将上述的日志数据封装为具有统一格式的日志文件.日
志系统的日志记录结构与日志文件结构之间的关系,如图3所示.
相对于传统的文本传输方式,日志系统采用效率更高的纯二进制数据传输方式.此外,在对日志文
件写入数据之前,本文通过CORBA Any 类型将其封装成 8位位组序列,这样可以让日志系统适用
保密信息的传输.在外界看来,日志信息在传输过程中是完全透明的,无法使用文本编辑器打开日
志文件,这样做可以确保日志传输的安全性.
当传输完毕时,开始解封装日志信息.从CORBA 中提取属于本文日志文件的属性值,然后还原为
发送前的原始格式.以上流程实现了软件日志的格式处理.
2.2 日志传输
假设不止一个进程同时申请访问只能被单独占有系统资源.这种状况肯定就会使各进程之间产生
竞争.目前,在大多数分布式软件系统中,每个服务软件的每个进程都在写自己的日志文件.
假设系统中有 k个进程,他们都在单独地写自己的日志文件,则进程间不会产生互斥.但是假设在
进程读写日志文件的时候,传输代理却需要读取这些日志文件中的内容,就需要解决读写互斥问
题.因此,多个进程如何对同一个进程进行读写互斥操作是一个亟待解决的问题.
通常的做法是对文件加锁,但是用加锁解决文件读写互斥存在以下两个问题:
1)对于并发度很高的系统会影响系统的性能;2)可扩展性差,限制了节点的主机性能.于是,本文提
出一种适用于以上问题的方法:双缓冲区策略,如图4所示:K 个进程相互独立,每个进程各有两个
相应的缓冲区.
摘要:
展开>>
收起<<
DSL虚拟化分布式软件日志管理系统研究0、引言随着云计算规模的不断扩大,灾备系统的发展成为各行各业关注的重点,云计算故障可能产生灾难性的后果,云计算中的系统故障和软件故障则会影响成千上万家企业.与此同时,分布式软件的组成部分也日趋庞大与复杂,这给系统调试以及系统维护带来了很大的不确定性.如何有效利用分布式软件在运行过中产生的大量软件日志文件来分析状态和改善性能,以及满足软件日志服务在效率、健壮性、可扩展性方面的需求,是一个具有研究意义和实用价值的课题.虚拟化技术的不断发展给灾备与容错技术提供了更加广阔的前景.针对灾备云平台中所出现的系统运行环境和服务软件的故障,利用虚拟化技术封装各虚拟节点中系...
相关推荐
-
CA6140车床滤油器体工艺及夹具设计(CAD图纸+说明书)
2022-10-10 429 -
齿轮轴的加工工艺与工装夹具的设计(滚齿及铣键槽夹具设计+PROE三维+说明书)
2022-10-13 374 -
阀盖零件的机械加工工艺规程及4-Φ14H8工艺装备设计(机械毕业设计+说明书+CAD)
2022-11-02 174 -
钻孔组合机床设计(机械毕业设计+说明书+全套CAD)
2022-11-10 315 -
Z3032摇臂钻床壳体工艺路线拟定及夹具设计(机械毕业设计+说明书+全套CAD)
2022-12-15 240 -
主轴箱加工工艺及专用夹具设计(机械毕业设计+说明书+全套CAD)
2023-02-03 323 -
转速器盘零件机械加工工艺规程及机床夹具设计(机械毕业设计+说明书+全套CAD)
2023-02-03 324 -
机床主轴箱齿轮加工工艺及夹具设计机械毕业设计
2023-02-06 392 -
+工艺-“填料箱盖”零件的工艺规程及钻孔夹具设计
2023-07-19 161 -
CA6140车床后托架加工工艺及夹具设计
2023-07-19 184
作者:闻远设计
分类:其它行业资料
价格:免费
属性:8 页
大小:672.48KB
格式:DOCX
时间:2024-03-17

