GC优化(共5篇)
GC优化 篇1
ART虚拟机GC子系统对Android系统和上层应用程序的稳定性和流畅性具有非常大的影响。本文提出的动态设置堆利用率以减少Full GC的方式优化GC系统性能, 最后测试多组应用程序对比优化前后在GC次数、暂停时间和GC总时间等方面的差异。
1 垃圾回收机制
1.1 堆内存的对象分配和释放
ART虚拟机实现的垃圾回收机制是一种自动内存管理机制, 对象分配和收集都在堆上进行。传统的C/C++是没有GC的, 初始化对象然后分配内存空间需要手动地malloc/new, 当需要销毁对象时候需要手动地free/delete。内存管理使用这种模式导致至少两个明显的问题:指针悬挂和内存泄漏。而采用了垃圾回收机制的JAVA中, 软件开发人员只需考虑申请内存, 垃圾回收机制可以根据一定的规则判断出内存空间中的“垃圾”, 自动释放“垃圾”占用的内存。不过付出的代价是GC耗费额外的系统资源, 并会暂停用户进程, 严重时候明显影响用户体验, 例如系统卡顿、动画掉帧等。与此同时潜在一个危机是, 一旦出现内存泄漏或溢出的问题, 如果开发人员不了解虚拟机内存管理机制, 那么解决这类问题就变得棘手。
1.2 ART虚拟机的GC算法
Java垃圾回收机制采用的主流GC算法包括:引用计数算法 (Reference counting) 、标记-清除算法 (Mark-Sweep GC) 、复制算法 (Copying GC) 、标记-合并算法 (Mark-Compact GC) , 后面三种算法属于追踪式算法, 如表1所示。
ART虚拟机默认的两种垃圾回收技术, 一种是Mark-Sweep, 另一种是Semi-Space GC。应用在前台时候设置GC采用MarkSweep算法, 应用运行在后台时候设置GC采用Semi-Space算法。本文主要关注运行在前台的Mark-Sweep算法的执行性能。
Mark-Sweep:它的大致思想是, 将所有的对象在内存中的位置记录在位图A中。然后, 从所有对象的根出发, 扫描根对象的所有引用, 扫描根对象的所有引用的引用, 一层层逐级扫描, 直到叶子节点的对象。在这个逐级扫描的过程中, 将涉及到的对象的位置都记录在位图B中。扫描结束后, 对比两张位图A和B:所有A中置位的位置, 却没有B中被置位, 被视为垃圾。并根据位图中的索引检索得到对象, 然后释放该对象占用的内存。
Semi-Space GC:它的特点是需要有两个space空间, 其中一个备用。另一个被系统拿来分配对象。在做垃圾扫描的时候, 将所有在空间A中被有效引用的对象移动到空间B中。那么在空间A中剩余的对象就是垃圾了, 直接释放垃圾对象所在的整个空间就可以了。这个回收速度很快。
1.3 ART虚拟机的堆结构
堆 (Heap) 可以是由字构成的连续数组, 也可以组织成不连续、由字构成的块的集合, 与数据结构中堆的概念不同, 内存管理中的堆用来存放各种用户或系统申请的数据对象, 在内存中占据非常大的空间, 因此也常将堆空间用内存来代替。
如图1所示, ART虚拟机中MarkSweep GC堆结构分6个区域, 分别为Image Space、Zygote Space、Non-Moving Space、Large Object Space、Main Space以及Backup Space。Image Space存放预加载的系统类对象, Zygote Space在Zygote进程和应用程序进程之间共享, 存放Zygote进程所需的预加载的类、资源和对象, 它是Zygote进程在fork第一个应用程序时候从Non-Moving Space划分出来的。Non-Moving Space是用来存放不需要移动的对象的, 有些对象例如类对象、类方法和类成员变量对象一经加载后, 就基本一直存在, 频繁的移动此类对象代价较大且没必要。Large Object Space是用来分配大对象的, 当分配的原子类型数组的大小大于3个内存页时, 就把此对象分配在Large Object Space中。其他的对象就分配在Main Space中。
2 ART虚拟机GC执行过程分析
2.1 GC执行过程
ART运行时与Dalvik虚拟机一样, 也使用了Mark-Sweep算法进行垃圾回收。但是在ART运行时里的Mark-Sweep算法更加优化。原来Dalvik虚拟机里的垃圾回收需要暂停两次, 标记根集阶段和重新标记根集阶段, 两次暂停时间如果很长或很频繁就会对用户进程有很大的负面影响。而在ART虚拟机取消了第一次暂停, 原来在第一次暂停所需要做的工作分给了线程自己, 在整体上提高了ART运行时的垃圾回收的性能。
如图2所示, GC执行过程分为以下几个阶段:
2.1.1 标记阶段
首先标记根集对象, 包括当前线程栈中的对象、当前进程所有已经加载的类及类中的静态引用等。然后从根集对象开始递归标记出所有可达对象。
2.1.2 暂停阶段
标记阶段在标记根集的时候没有暂停其他线程, 所以在标记的过程中对象的引用关系可能会发生变化, 如果不处理这种变化就会导致对象的错标或漏标, 后面清扫垃圾时就有可能把存活对象也回收了, 导致程序的非正常运行。所以需要有个暂停阶段, 来处理标记阶段中对象的引用关系发生变化的对象。
2.1.3 清除阶段
经过了前面的两个阶段, 标记清除算法认为的存活对象都在标记位图 (Mark Bitmap) 中标记出来了。接下来回收没有被标记的内存块。
2.1.4 终结阶段
在回收垃圾后有个收尾工作, 会对经过垃圾回收后的堆根据需求进行裁剪, 也会对堆的预留空闲内存进行重新设定。
2.2 堆内存分配过程
对于标记清除算法, ART有三种GC策略:分代垃圾回收 (Sticky GC) 、局部垃圾回收 (Partial GC) 以及全局垃圾回收 (Full GC) 。分代垃圾回收只回收上一次GC到本次GC之间申请的内存。局部垃圾回收不回收Image Space和Zygote Space空间的内存。全局垃圾回收回收除了Image Space之外的空间的垃圾。GC暂停时间:Sticky GC<Partial GC<Full GC, 回收垃圾的效率则反之。为了在垃圾回收性能和垃圾回收效率之间追求平衡, ART采用了一种渐进式的分配策略。而影响GC暂停时间和总时间最大的Full GC是本文优化目标。
GC时候, 首先会进行一次轻量级的GC, GC完成后尝试分配。如果分配失败, 则选取下一个GC策略, 再进行一次轻量级GC。每次GC完成后都尝试分配, 直到三种GC策略都被轮询了一遍还是不能完成分配, 则进入下一阶段。第二阶段允许堆进行增长的情况下进行对象的分配, 如果还是分配失败, 则会进行一次允许回收软引用的GC。如果还是分配失败就进入第三阶段如果对象是不可移动对象, 则ART会把它分配在Non-Moving Space。如果对象是可移动的对象, 那么就进行一次同构空间压缩, 压缩后也增加了分配成功的可能性。
3 性能调优
3.1 与GC相关堆属性值
如图3所示, 在build.prop中一般会设置如下几个与Android ART虚拟机垃圾回收相关的属性值:前三个值是控制Java堆的总大小的, 包括堆的起始大小、堆的增长上限等, 与手机的硬件配置相关。堆利率、堆最小空闲内存和堆最大空闲内存三个变量对垃圾回收的某些性能有影响。GC触发后, 垃圾回收器回收了应用不再使用的垃圾对象, 这样应用的空闲内存就可能很大或者由于回收垃圾不够多导致空闲内存还是很小。空闲内存很大, Android系统内存利用率就低, 当然不会把这么大一块内存都给应用程序的, 出于这种考虑系统会根据应用预先设定的堆利用率 (Heap Target Utilization) 、最大和最小空闲内存数 (heapmaxfree、heapminfree) 等参数来调整此空闲内存的大小;如果此空闲内存很小, 那么势必此空闲内存将很快分配光, 下次GC会来的很快, 所以遇到这种情况, ART会扩大此空闲内存的大小堆利用率 (Heap Target Utilization) 、最大空闲内存 (heapmaxfree) 和最小空闲内存 (heapminfree) 在代码里的变量名为:utilization, max_free_, min_free_。
如图4所示, 堆利用率 (utilization) 算可以出理论上所需的空闲内存, 堆利用率按照谷歌的推荐一般设为0.75。考虑另外两个限制值:最小空闲内存 (min_free_) 和最大空闲内存 (max_free_) 。也就是需要把预留空闲内存控制在两倍的最小空闲内存和两倍的最大空闲内存之间。这样获得的target_size才是堆的最终大小。
3.2 使用堆目标利用率减少Full GC频率
如2.2节描述, 当对象分配请求得到满足时候, 用户进程就会继续执行, 不过如果对象分配失败, 则说明当前的堆大小是不能满足进程需求的。事实上对于现有应用运行用户体验来看, ART虚拟机仍有很多可以优化空间, 比如一些大型游戏或消耗资源的应用中, Full GC频率仍然较高, 使得暂停时间和GC频率的增加。为了获得更有效率的内存管理, 需要在应用运行过程中, 人为干涉GC处理, 本文通过设计自适应的对增长机制来满足应用运行状态的动态改变。使用dalvik.system.VMRuntime类提供的接口set Target Heap Utilization方法增强应用程序堆内存的处理效率。比如在应用程序on Create的时候就调用下面的一个用于设置利用率大小的函数VMRuntime.get Runtime () .set Target Heap Utilization即可, 本文实现堆利用率动态调整实现流程如图5所示。
当完成申请的时候系统会继续执行, 根据堆利用率设置新的理想堆大小, 减少完全GC的方法就是在当系统剩余的内存不足以完成本次申请操作时, 将本次申请的对象转移到缓冲堆, 此时根据堆目标利用率设置堆的理想大小, 这样由于内存不足产生的完全GC就可以避免, 这样就避免的长时间的暂停, 而且堆此时已经生成为理想大小, 不会使得后面堆空间不足而循环产生GC动作增加GC频率。
4 实验设计与性能测试
本实验采用的硬件平台是Google公司的Nexus4, 软件调试平台是Android Studio。对0xbenchmark和用户应用优化前后GC次数、GC的暂停时间进行统计分析。
4.1 基于0xbenchmark性能测试
0x Benchmark中有专门测垃圾回收性能的模块。测试的算法是递归自顶向下和递归自底向上创建完全二叉树, 以及创建大的浮点数组, 对于内存块的创建还分为长生命周期对象和临时对象, 长生命周期对象的引用要在测试函数运行完毕时才会丢失, 而临时对象在创建完毕后即被丢失, 测试的标准是创建所需时间, 暂停时间以及GC总时间等。
4.2 基于实际应用运行log信息性能测试
动态设置堆利用率以减少FULL GC优化手段带来最直接的影响就是减少垃圾回收暂停时间, 虽然0xbenchmark有Android的VM垃圾回收性能测试, 但是不能符合正常情况下应用对象大小并不固定的事实。所以除了使用0xbenchmark评估性能表现外, 本文选取了几个常见的应用作为测试对象。分析这些应用运行过程的log信息, 主要是暂停时间, 来评估优化效果。
4.3 性能测试结果
比较表2和表3的情况, 原生垃圾回收信息和优化后的垃圾回收信息, Full GC的暂停时间是占用平均暂停时间很大比例, 优化Full GC对于GC平均暂停时间有很大贡献, 另一方面优化后GC总次数降低了, 总次数的减少是因为本文增加一个设置堆利用率的过程, 满足新对象对堆空间的需求, 以Full GC需求减少进而减少了总GC次数。从应用的整体来看, 平均暂停时间相较于优化前降低20%以上, 而平均GC总次数减少5次以上。本文实验条件下动态设置堆利用率的方式优化Full GC对GC系统性能的提高是有效果的。
5 结束语
垃圾回收机制实现自动内存管理的代价是额外消耗系统资源、阻塞用户进程的执行等。本文从GC算法和堆分配过程研究了ART虚拟机GC系统运作机制, 提出的动态设置堆利用率以减少Full GC的方式优化GC系统性能。设计实验测试了多组应用程序, 结果显示整体平均暂停时间相较于优化前降低20%以上, 平均GC总次数减少5次以上。
摘要:Android系统中虚拟机通过提供垃圾回收机制 (Garbage Collection, GC) 实现自动内存管理, 但是这一机制在简化应用开发人员内存管理负担、避免内存泄漏问题的同时也给系统带来了内存驻留、响应延迟、并发阻碍等负面影响。Android 5.0以后, Google用ART虚拟机替换掉Dalvik虚拟机, 为了更好地利用ART虚拟机自动内存管理的特性, 应用开发人员有必要深入理解ART虚拟机垃圾回收机制的实现。本文从GC算法和堆分配过程研究了ART虚拟机GC系统, 本文提出的动态设置堆利用率以减少Full GC的方式优化GC系统性能, 最后测试多组应用程序对比优化前后在GC次数、暂停时间和GC总时间等方面的差异。整体平均暂停时间相较于优化前降低20%以上, 而平均GC总次数减少5次以上, 证明本文实验条件下动态设置堆利用率的方式优化Full GC对GC系统性能的提高是有效的。
关键词:ART虚拟机,GC系统,堆利用率
参考文献
[1]Andrei Frumusanu.A Closer Look at Android Run Time (ART) in Android L[EB/OL].http://www.anandtech.com/show/8231/a-closer-look-at-androidruntime-art-in-android-l/
[2]付卓.Dalvik内存管理机制分析与优化[D].南京:东南大学集成电路学院 (硕士学位论文) , 2013.
[3]黄洋.Android内存管理中的垃圾收集性能优化[D].南京:东南大学电子学院 (硕士学位论文) , 2014.
[4]夏迪迪.Dalvik虚拟机垃圾回收算法的分析与性能优化[D].无锡:东南大学集成电路学院 (硕士学位论文) , 2015.
[5]王浩.面向用户体验的GC策略分析与优化[D].无锡:东南大学集成电路学院 (硕士学位论文) , 2015.图5:动态设置堆利用率优化GC
[6]老罗.ART运行时Mark-Sweep GC简要介绍和学习计划[EB/OL].http://blog.csdn.net/luoshengyang/article/details/44513977, 2014.
[7]Android开发工具文档[EB/OL].http://developer.android.com/tools/index.html, 2011.
[8]0xbench[EB/OL].https://code.google.com/p/0xbench/, 2011.
GC优化 篇2
1 GC-ECD法测定N2O的条件
空气中N2O浓度测定采用Perkin ELmer公司Clarus 500型气相色谱仪, ECD检测器。进样系统加装六通进样阀, 并配备1m L气体定量管。色谱柱采用2.54cm×6m不锈钢填充柱, 固定相采用经酸修饰的Porapak Q, 其粒度为80-100目。以纯度为99.999%的高纯氮气作为载气。
样品取于天津某高校供热站围墙外100米处, 用大气采用器将气体收集到10L铝塑复合膜气体采样袋, 附近没有显著的人为的干扰因素, 采样时间定于每周日下午3点~4点, 每次同时采集三个样品, 作为平行样。
2 测试条件优化
ECD检测器为浓度型检测器, 载气流量越小、补充气流量越小, 则灵敏度越高, 但载气流量太小会造成出峰延时, 补充气流量太小会影响检测器的稳定性, 经过比较确定载气流量为15m L/min补充气流量为20m L/min。降低柱箱温度能够实现N2O与氧气和二氧化碳的有效分离, 但柱温太低会造成分析时间、柱箱平衡时间的客观延长, 样品中的水蒸汽还会造成柱效下降, 经过反复实验确定, 柱箱的升温程序为45℃保持6min, 然后以35℃/min速率升至210℃并保持1min。为了防止水蒸汽凝结设定进样口温度为110℃。随着检测器温度的增加, ECD对N20的灵敏度也随之提高, 但为考虑到检测器的最高使用温度及安全性, 将ECD温度设定为330℃。
测定N2O前气相色谱仪要充分预热, 预热时间不低于4h, 同时要求ECD检测器基流值不高于3mv, 波动值不超过±0.02mv。
对于新的或被污染的色谱柱应将色谱柱的前端与汽化室相连, 另一端放空 (不要连接到检测器的一端, 以防沾污, 检测器端用焖头堵住) , 在载气 (高纯氮) 流量15m L/min和柱温220℃下, 老化约24h, 。为了防止仪器受污染, 必须保证载气氮气的纯度应在99.999%以上, 并在气路上加装除氧装置;在仪器不使用时, 要保持让氮气以一定流速流过色谱柱和检测器, 防止空气或其他气体污染色谱柱和检测器。
3 结果与讨论
本文对2010年11月~2011年7月7的空气中N2O浓度进行测定比较, 对这6个月的资料进行统计归纳。统计整理出每月4次重复样品的N2O浓度平均值, 并对此作出采暖期和非采暖期的N2O的含量对比图 (见图1) 。
由图1可以看出N2O在采暖期 (2010年11月~2011年2月) 与非采暖期 (2011年5月~2011年7月) 的浓度存在差异。采暖期的N2O含量是随着天气的寒冷, 浓度明显升高。非采暖期N2O的浓度, 随着化石燃料燃烧减少, 含量降低, 但是三个月期间含量无显著差异。采暖期的N2O含量都要均高于非采暖期, 究其原因, 可能是因为在采暖期, 人们由于要取暖, 供暖设施的使用, 大量的化石燃料、释放出大量的气体, 如CO2、CH4、N、S等化合物, 其中N2O也是其一, 虽然以少量存在, 但是对大气中的含量也起到一定的影响。
参考文献
[1]王跃思, 郑循华, 王明星, 恭晏邦, 白建辉.气相色谱法检测大气中的N2O浓度[J].分析测试技术与仪器.1994, (2) :19~24[1]王跃思, 郑循华, 王明星, 恭晏邦, 白建辉.气相色谱法检测大气中的N2O浓度[J].分析测试技术与仪器.1994, (2) :19~24
GC1080A淬火机床改造 篇3
淬火机床作为热处理设备的一种, 其运动的准确性对工件的性能至关重要, 但它不同于普通机床, 其专业性很强, 使用量小, 备件难买。我公司一台1990年产的GC1080A淬火机床, 经过20多年使用, 床身导轨间隙1.5mm, 液压系统、电器系统故障率极高, 严重影响了生产, 但该机床生产厂家现已不存在, 购买备件无法实现, 自己测绘加工, 很不经济, 为此决定对此机床进行技术改造。
2 原机床结构简介
该机床床身为立式, 正前方为对称的平面矩形导轨, 工作滑台靠液压缸驱动在导轨上上下移动, 下顶尖安装在工作滑台正下方, 用液压马达驱动, 带动工件旋转, 上顶尖靠电机带动T型丝杠按照加工工件的高度在工作滑台上上下移动, 而工件加热源、喷水器 (即淬火头) 固定不变, 安装在床身侧面并与工件滑台垂直, 高度位于工作滑台中部;润滑全部采用涂抹法, 电气系统采用老式的接触器、继电器;防护装置结构松散, 占地面积较大, 渗漏严重 (见图1)
3 改造方法
(1) 对原机床背部进行加工, 以此面为基准, 加工掉原机床的矩型导轨, 使床身正面成为安装面, 用两个直线导轨导向, 法兰螺母式滚珠丝杠传递力量及运动;
(2) 用交流减速电机、挠性联轴器驱动滚珠丝杠带动上顶尖托板, 实现上下运动, 满足机床可以夹持不同长度工件的需要;
(3) 用伺服电机、挠性联轴器驱动滚珠丝杠带动淬火头部件上下运动, 满足工件淬火长度准确性需要;
(4) 在淬火头下方采取燕尾导轨与丝杠丝母相结合的结构, 用手轮调节, 实现淬火变压器与工件之间距离的可调节性, 满足各种工件不同淬火深度要求;
(5) 因淬火头部件重量较大, 采用链轮、链条带动配重块配重装置的平衡方法, 以降低滚珠丝杠动态载荷, 实现淬火头按照不同速度上下移动, 满足工件淬火深度变化要求;
(6) 采取交流调速电机同步带轮方式驱动下顶尖转动, 使工件随上下顶尖一起旋转, 满足工件淬火时转动要求;
(7) 上顶尖由过去的人工操作改为气动控制, 方便工件夹紧松开;
(8) 采取稀油集中与分散润滑相结合的方式, 经常运动的地方使用人工稀油集中润滑, 其它使用人工注入法润滑;
(9) 采取整体箱式结构, 将淬火头与床身包裹起来, 解决原机床占地面积大、渗漏问题, 提高机床整体美观度, 并在箱体上安装观察门与操作门, 以方便机床操作者;
(10) 对冷却水路进行改造, 配置一体化淬火液循环冷却系统, 电磁阀控制喷水, 提高其可靠性与灵活性;
(11) 淘汰老式接触器、继电器等元器件组成的控制系统, 采用西门子802C;
(12) 在直线导轨下方安装感应开关, 使淬火头回零, 可以实现工件自动加工功能, 在直线导轨上方安装感应开关, 防止上顶尖冲顶, 在淬火头与上顶尖之间安装感应开关, 防止两者相互碰撞;
(13) 在机身右侧安装有显示屏, 可以直观地进行显示、修改、编辑工件淬火工艺参数 (见图2) 。
改造后机床总体结构图如图3。
4 改造效果
改后设备故障率下降90%以上;工件淬火质量提高82.8%以上;加工同一种零件效率提高62.5%。
参考文献
[1]成大先.机械设计手册[M].北京:化学工业出版社, 2010.
[2]杨帮文.直线传动技术与设备选用手册[M].北京:中国电力出版社, 2010.
GC/MS/MS农药分析指南 篇4
该《指南》详尽地列出了针对食品中农药残留分析方法的修改和再优化的说明以及标准操作程序。某州立环境实验室已采用本文集, 进行饮用水中农药的GC/MS/MS分析。
该《指南》还包括完整的GC/MS/MS分析说明、相应的样品前处理步骤、以及使用安捷伦农药和环境污染MRM数据库扩展分析方法的介绍。
佛罗里达州农业部化学残留实验室环境经理Raymond Allum表示:“《指南》是一本很好的资料, 它为实验室提供了农药分析方法的完整说明, 列出了哪些农药可使用GC/MS/MS或LC/MS/MS进行检测, 同时还就如何分析最复杂的农药给出了建议。事实证明, 该分析方法强大可靠, 分析不同的食品基质均能获得优异的分析结果。”
安捷伦高级应用科学家Melissa Churley表示:“涉及Qu ECh ERS方法的修改、校准、基质相关问题以及仪器分析条件时, 分析人员通常面临众多选择。此外, 要想建立一个广泛适用、可靠的GC-MS/MS方法, 就必须使得气相或液相色谱适用于整个分析物列表中的至少某一类分析物及其各种变异体, 这几乎难以实现。然而, 《指南》中Mastovska博士推荐的核心方法却被证实是一个为许多美国客户成功解决问题的一站式解决方案, 因为只需短短几天就能将它运用到各个应用。世界各地的很多客户都需要这个解决方案。”
安捷伦GC/MS营销主管Terry Sheehan则谈到:“食品、水和环境安全领域的法规日益严苛, 这意味着实验室必须担负起优化筛查工具和流程的责任, 确保分析结果的有效性和可靠性。本《指南》为实验室提供了完整的信息, 实验室可据此判断哪种技术最适合自己的需求、如何建立严格的检测方法实现最低农药检出限, 以及如何以更快的速度获得可信度更高的分析结果。”
新版《GC/MS/MS农药残留分析指南》提供了采用Agilent 7000三重四极杆GC/MS进行农药多残留分析的GC/MS/MS方法。《指南》还包括了方法的开发、优化、修改和常规使用方面的操作技巧和注意事项。
此外, 《指南》还探讨了与气相色谱和二级质谱的农药分析相关的重要问题, 尤其是处理基质的相关问题, 主要取决于样品提取物的化学组成。《指南》还着重介绍了在农药多残留分析中使用Qu ECh ERS (快速、简便、经济、高效、耐用和安全) 方法进行样品前处理的基本信息, 还包括推荐的操作步骤。
指南内容
●农药多残留分析概述
●Qu ECh ERS的发展过程、修改和净化选择
●内部质量/过程控制标准的使用
●农药的气相色谱分析 (基质效应、进样技术、校准方法、分析物保护剂和色谱柱反吹)
●二级质谱检测的注意事项
●GC/MS/MS方法的开发和优化
●用于其他分析物的方法修改
●以表格形式对比GC/MS/MS与LC/MS/MS可检测的农药, 以及使用Qu ECh ERS方法时有特殊要求的农药
●GC/MS/MS方法的标准操作程序示例
●相应的Qu ECh ERS方案示例, 包括试剂溶液的前处理说
●详细参考资料
《GC/MS/MS农药残留分析指南》是安捷伦全套质谱产品的一员, 安捷伦质谱包括功能强大、应用广泛的GC/MS、LC/MS以及ICP-MS解决方案。
关于化学残留实验室管理局
锐珂GC工作站的故障维修 篇5
1 工作站的软件问题
该类故障,一般是工作站软件出现问题,或数据库出现问题,常用的解决办法是重装系统。
1.1 GC工作站系统错误
GC工作站不能接收从DR传输过来的图像,反复测试无果,需要重装软件。锐珂工作站出现问题后,经常需要重新安装软件[3],现将GX2.0软件重装的步骤总结一下:
(1) 退出到桌面,进入C:Program FilesParis GCPA C S目录, 双击lcservice.exe , 选择 “ P r o c e s s Control”、“Stop Process”,把工作站的服务停止。
( 2 ) 进入 “ L i c e n s e To o l s ” , “ B a c k u p License”,把License[4]备份到G盘某个目录(要设定一个文件夹)。
( 3 ) 运行 “ 控制面板”、“ 用户账号”, 把Administrator账号加上密码。
(4)卸载GC 2.0软件,卸载完成后选择重启。
(5)删除所有分区中与GX2.0软件有关的目录。
(6) 运行“控制面板”、“区域设置”,把三个页面的格式参数都改为Chinese格式。
(7) 在光驱里放入GX2.0安装光碟,重装GX 2.0软件,完成后重启电脑。
( 8 ) 进入 “ L i c e n s e To o l s ” , “ R e s t o r e License”,把License恢复[5]。
(9) 进入C:Program FilesParis GCPACS目录,双击Clint Config.exe,确认这四项内容:光盘盘符、是否刻盘工作站、DVD/CD刻录、默认打印机名。
(10) 双击桌面的Carestream GX2.0图标,进入GX2.0程序,然后重新退出到桌面。
(11) 进入C:Program FilesParis GCPACS目录,双击Config Server.exe。
(12) 进入C:Program FilesParis GCPACS目录,双击Service_CFG.exe。在这里,设置Modality、相机参数,把“DBBACKUP”值从默认100MB修改为4000MB,把“MAINSTORAGE”值从默认值200MB修改为该硬盘分区的最大容量(例如,120000MB)。确认PROCD缓冲区的容量及数量,如果是DVD刻录,缓冲区容量正确值是:4000MB,数量是:4。
(13) 再次重启机器,重装过程完成。
1.2 备份后数据库丢失
一次重装系统,将backup备份文件恢复后,出现了数据库丢失的故障,无法找到历史病人信息。
解决过程:
(1) 备份C盘的License、Cfg的设置,备份E盘的Pre CD、F盘的Imanges、NLimage内的所有文件。
(2) 找到光盘上最近的数据库备份(从计数最大的光盘号开始倒着检查),解压缩后可出现两个文件。
(3) 首先在lcservice工具中停止系统服务;将压缩后的文件复制到C:PARSGCBACKUP下,覆盖原文件;再用lcservice工具单独启动HD恢复。
(4) 这时进入GC的界面,再进行如下操作:先找到一个Resetdb文件,解压后内部有readme.txt文本文件,按照这个文件中所述进行操作。
(5) 使用ri-p的命令,按照提示操作恢复已经刻录好的光盘中的数据。
( 6 ) 新建E盘的P r e C D 、 F盘的I m a n g e s 、NLimage,并将最近产生的新的数据拷贝到c:parisgcpacsinbox目录中,机器恢复正常。
2 更换电脑主机后出现故障
此类故障,一般是更换工作站的电脑主机,可能会带来各类故障。
2.1 主机更换带来的故障
一次给DR7500更换PC主机,由于系统使用的DELL670电脑早已经停产。所以就更换成HP rp5700电脑,由于原来系统版本号是4.0.1的,所以还要做Mod G1升级。现在使用的HP rp5700电脑有两种,型号为3F4296的没有硬盘,没有独立网卡;型号为3F4305的电脑有160G的硬盘,还有一个独立网卡,不过网卡是Broadcom 5761NIC。用3F4305 PC机(含5761网卡)时,ghost完镜像,发现这块独立5761网卡未能识别到驱动。于是拿DRX-1的V5.3的软件装上测试,发现独立网卡能正常识别。后检查发现这台主机独立网卡用的是Broadcom 5751,装完系统后就能正常驱动。HP rp5700电脑装完4.0.3.b8的软件后,重新启动机器后,进行测试时发现探测器、发生器全部无法通讯,再进行检查发现Digi neo8卡的com口不对,针对此现象进行重新调整,应该是从com4到com11。调整过程中如果发现端口被占用,就打开注册表HKEY_LOCAL_MACHINESYSTEMCurrent Control SetControlCOM Name Arbiter,把C o m D B删除后重新尝试即可。 最后在关键操作员中导入配置,发现SBC配置导入失败。进入C:ServicesSuinsa,运行commtest.exe去restore那个.bin文件,机器恢复正常。
2.2 Classic CR HP5700 PC安装V5.2遇到的问题
一台C l a s s i c C R , 需要更换主机。 主机更换为:HP5700 500G,之前使用的主机为:HP5700160G。查询数据库,发现HP5700 500G的新PC机只支持V5.4.05.00以上的版本。但为了工作人员使用习惯,尽量保持原有版本不变,就用HP5700 160G的恢复软件V5.2.00.13软件尝试。换上主机,装完软件,重启CR,系统软件启动到结尾处报错。之后把HP5700 160G PC的独立显卡换到HP5700 500G P C上, 因为硬盘大小不同, 重新装软件。 启动到windows界面时,关掉启动起来的DOS窗口,在网络邻居里更改网络名称“Local Area Connection”改为“OSPITAL”,关机重启,以上问题解决。之后升级完Secure Link,进到维修模式,发现CR的IP没有显示。退到桌面,找到网络连接,手动更改为医院的IP地址,关机重启后以上情况解决。之后按照手册设定机器,测试扫描传图都没问题,在新病人界面出现加载失败情况,处理情况如下:进入“关键操作员—系统配置—布局配置—录入病人—具有多字节名称简化”选上,问题解决。
3 刻录故障
在GC工作站的硬件设备中,刻录机占用重要的地位,刻录软件有时会出现各类故障,有关刻录机的软件和硬件的故障介绍如下。
3.1 GC1.5工作站刻录速度变慢
故障现象:两台GC工作站(Ver:1.5.0.44)备份刻盘速度奇慢无比,刻录+校验一个DVD缓冲区需要至少1.5 h以上。
解决过程:起先以为是DVD刻录机老化,故购买了两台新的刻录机予以更换。更换过后开始刻录,结果故障现象依旧。考虑是不是数据线有问题,更换了两条新的数据线,结果换上去之后问题还是依旧一样。其中影响刻录速度的有一个重要的因素是IDE传输模式[7]。DMA通道未打开可以导致刻录速度变慢,而且也很容易出现刻录的问题。考虑是否是IDE传输模式的原因,尝试按照以下的步骤进行设置:作为管理员(或具管理员特权的用户)登录进入Windows。单击“开始”按钮,然后右击“我的电脑”并从弹出菜单选择“属性”。系统属性窗口出现。单击“硬件”标签,然后单击“设备管理器”。设备管理器窗口出现。双击“IDE ATA/ATAPI控制器”来查看控制器列表。双击“主IDE通道”。主IDE通道属性窗口出现。单击“高级设置”标签。选择装置0 及装置1 的“DMA”,单击确认。对“从IDE通道”进行同样设置。不必重新启动Windows,再来刻盘测试,结果这台设备恢复了正常的刻录。刻录加校验一共用时25 min,大大缩短了刻录的时间,从而解决了故障。
3.2 GC1.5 刻盘失败
故障现象:光驱不能刻录。维修过程:更换新的光驱,换好后试着刻录,这时出现问题,进度条走到一半时报错“错误读取数据”,刻录失败。换了几张光盘试验,故障一样,直接用NERO刻录同样刻录失败。把Pre CD里目录下的文件FULL改名为WRITTEN后刻录下一张,出现同样问题,区别只是进度条快走完了。怀疑光驱或者光盘有问题,换另一个光驱,换用其他品牌的光盘,问题相同。在我的电脑-各盘符-属性-工具里执行硬盘检查。检查并选中自动修复后,故障依旧。由于第一次前面将PRECD里一个目录下的文件“FULL”改为了“WRITTEN”,重新启动机器后,系统认为这个PRECD目录下的文件已被刻录完毕自动将目录内的文件清空了,导致目录下所有数据丢失。现在想把另一个PRECD目录下的数据先拷贝出来再改动防止数据丢失,拷贝时发现有的数据不能拷贝。先把PRECD里能拷贝的数据都拷贝出来,再把这个PRECD目录删掉,然后重新创建一个同名目录,把之前拷贝出来的数据恢复到刚刚创建的PRECD目录下,再刻录,刻录成功。由此可以吸取一个教训,如果再遇到刻盘刻录不完的情况,可以试下先备份PRECD数据,这样就不会丢失图像数据。
4 工作站的传输
锐珂的数字化系统,有CR、DR、激光相机、G C工作站等各类设备, 设备之间的相互传输比较多。因此设备传输中出现故障的比例也比较高。
4.1 GC1.5 CR V5.6 传图失败维修一例
故障现象: 一台C R拖两套G C 1 . 5 工作站, 无PACS。两台GC均需刻盘、写报告、打印胶片,负荷量较大。为方便叙述,将两台GC命名为GC1和GC2。从CR向两台GC传图时,部分丢失。例如:从CR上面传送10个病人图像至GC。在CR上,10个病人的图象均显示“传送成功”,但在GC1“工作清单”栏只能找到3到5个病人信息,GC2上有时能全部找到,有时会丢失一两例。
分析问题:(1) 假定问题出在GC端由于CR上显示的是“传送成功”,由CR ping GC1,能ping通,再由GC1 ping CR,也能ping通,反复互ping,均没问题,初步排除网络“闪断”问题。于是按照常规思路,检查CR设定日期、时区、时制、时间与GC设定日期、时区、时制、时间,无异常。检查GC1Database文件大小为486 MB,GC2 Database文件大小为834 MB,均无异常(GC1.5数据库容量为2 GB左右)。排除因日期、时间、时区、时制设置有误或数据库过大导致的传图不成功。
(2) 假定问题出在CR端考虑到该机属Extend升级,软件由之前的4.6版升级为5.6版,而GC1.5平台对更高级的软件平台支持有限,尤其对传入的中文信息较为敏感,于是将之前GC接收失败的图像逐一调出检查,将其病人信息与其他接收成功的图像进行比对(看看有无带入中文信息),也未见异常(不排除因量大而漏检)。将CR设为全英文界面并重启后,用同一块板子扫5个病人5幅图像并传送,故障依旧。
经上述工作,仍未发现任何规律。无法,只得将CR重设回中文界面并重启后,再用同一块板子,类似的病人信息(ID编号为000-999),扫十个病人十幅图像并传送,以期从中找寻规律,结果发现,丢失的图像仍然是不知所终,杳无音信。对比GC1和GC2各自丢失的信息特点,也无任何规律。
(3) 查阅当日log仔细阅读log发现,自出现问题后,其对应的log里边均反复出现这么一段话:
“Kodak Acq Server`4`2002`执行select * from Patient where Patient ID = '10577锛? 失败,Query =select *from Patient where Patient ID = '10577锛? 数据库失败!”其中ID号“10577锛?”实为非法ID,疑为技师在输入病人ID时,不小心将中文输入法开启而带入非法字符,致使该病人信息传送到GC后,GC数据库无法将其归入数据库内相应字段,造成无法存档,而该命令反复执行,造成类似数据拥塞的现象,导致后续部分病人信息无法及时入库,因而在GC工作清单上找不到相应病人信息,而实际上全部信息均已传送至GC本机。
解决问题:打开C:PARISGCPACSInbox,将Inbox内全部文件删除,将Ac Errobox内除Error Des.ini外的全部数据删除,将出故障当日的log日志内容清空后保存覆盖。经此步骤后,扫描、传图25例以上,未见异常。设备恢复正常使用。
4.2 图像从CR到GC工作站不能进行自动传输,只能进行手动传输
故障解决过程:先试验在一个病人下同时拍几个部位,然后进行图像传输,发现传输时有的是自动传输,有的要手动传输才行。连续试验多次后,发现只要选择pattern部位时自动传输就正常,选择其他部位就只能进行手动传输,考虑是否和选择部位有关系。
最后在部位设置中发现pattern和其他部位的设置有区别:Pattern设置的是噪声抑制没有打勾,只有在Raw图像打勾。其他的设置是噪音抑制打勾而raw图像没有打勾,试验将设置改成和pattern的一样的设置。再测试发现所有的部位图像都可以自动传输了,没有再出现上述的情况。
经过大量测试,可以总结出下列几点:
(1) 在view configuration内不要选中raw,否则图像质量明显下降。
(2) 选不选noise suppression对图像质量无关紧要。(3) 上述两个选项的选中与否跟图像传输没有关系:1现在的更改是取消所有必填字段,并将设备设置为图像直达模式,目前为止都能自动传输。2如果IP板没有接受X线曝光直接登记完放入扫描,所得到的空白图像全部为“缺省处理”(除非部位选择为pattern),而经过曝光的IP板全部都能自动传输。
(4) 由此可以得出结论:V5实现了对“IP板是否接受了X线曝光”进行智能识别,对曝光过的IP板采用设定的程序处理;而对未曝光的IP板不予处理,所有测试都是支持这样的结果。(而pattern图像作为特定的测试图像,因此无论是否接受过曝光,V5都会把它按照设定的程序处理,即自动传输)。
5 结论