CN102541724A - 一种实时操作系统的性能评估方法 - Google Patents
一种实时操作系统的性能评估方法 Download PDFInfo
- Publication number
- CN102541724A CN102541724A CN2010105803253A CN201010580325A CN102541724A CN 102541724 A CN102541724 A CN 102541724A CN 2010105803253 A CN2010105803253 A CN 2010105803253A CN 201010580325 A CN201010580325 A CN 201010580325A CN 102541724 A CN102541724 A CN 102541724A
- Authority
- CN
- China
- Prior art keywords
- performance
- data
- operating system
- real
- monitoring
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种实时操作系统的性能评估方法,包括以下步骤:在被监测机上建立处理器性能监测单元的软件配置框架;在此框架的基础之上,建立关联实时任务或操作系统的性能事件机制,对实时任务与实时操作系统的各项性能指标进行监测,得到性能数据;将性能数据通过监测通信协议栈发送给远端监测机;在远端监测机上建立性能数据分析软件,以软示波器或图表的方式显示出性能数据。本发明方法能够对处理器周期数、Cache丢失数、Cache命中数、总线周期数、上下文切换次数以及处理器负载等系统参数进行全面评估和可视化的分析,可将上述性能指标关联到每一个具体的实时任务或操作系统。
Description
技术领域
本发明涉及一种操作系统性能评估技术,具体的说是一种实时操作系统的性能评估方法。
背景技术
在嵌入式领域,实时操作系统的应用非常广泛。它是许多嵌入式设备的软件基础,其性能直接影响到嵌入式设备的整体性能与可靠性。因此对实时操作系统的性能监测与分析非常重要。同时,在实时操作系统的研发过程中,系统的性能监测与分析是研发人员的重要参考指标,是对系统进行评价以及进一步优化的依据。对实时操作系统的性能分析,需要在系统的运行期间实时记录下实时任务与操作系统内核的各种性能参数,比如处理器周期数,Cache丢失数,Cache命中数,总线周期数,上下文切换次数,处理器负载等等。同时,还需要对这些数据进行全面、可视化的监视与分析。
目前,对于常用的开源实时操作系统而言,如RTAI,并没有一款能够满足上述需求的性能分析与监测工具。而Linux系统下的性能监测软件,如Perfmon、xperf等工具无法直接应用于实时任务的监测。
发明内容
针对现有技术中对实时操作系统的性能评估存在缺乏全面、可视化的监视与分析工具等不足之处,本发明要解决的技术问题是提供一种网络化,并且能够全面、可视化的实时操作系统的性能评估方法。
为解决上述技术问题,本发明采用的技术方案是:
本发明实时操作系统的性能评估方法包括以下步骤:
在被监测机上建立处理器性能监测单元的软件配置框架;
在此框架的基础之上,建立关联实时任务或操作系统的性能事件机制,对实时任务与实时操作系统的各项性能指标进行监测,得到性能数据;
将性能数据通过监测通信协议栈发送给远端监测机;
在远端监测机上建立性能数据分析软件,以软示波器或图表的方式显示出性能数据。
所述建立处理器性能监测单元的软件配置框架的方法为:
基于被监测机上处理器提供的性能监测单元,建立初始化、配置与读取性能监测单元的软件框架。
建立关联实时任务或操作系统的性能事件机制的方法为:
为被监测的实时任务或操作系统设置性能事件,将性能监测单元作为性能事件的数据源,在关键的时间点上捕获数据并存储在该性能事件对应的数据结构中。
所述监测通信协议栈自动封装性能数据与采集数据时的时间戳,并利用操作系统提供的以太网协议栈,将封装后的数据发送给远端监测机。
所述监测通信协议栈能够自适应数据采样频率的变化,当采样频率过高时,将多组数据封装在一起发送。
所述监测通信协议栈可以在实时任务上下文中发送以太网数据。
所述性能数据分析软件对接收到的性能数据包进行解析,以软示波器或图表的方式实时显示出性能数据,并将数据存储在日志文件中,还可以对数据进行统计分析。
本发明具有以下有益效果及优点:
1. 本发明方法能够对处理器周期数、Cache丢失数、Cache命中数、总线周期数、上下文切换次数以及处理器负载等系统参数进行全面评估和可视化的分析,可将上述性能指标关联到每一个具体的实时任务或操作系统;
2.本发明方法能够将获得的性能数据,通过监测协议栈发送给位于远端监测机上的性能分析软件,由性能分析软件对监测数据进行图形化的显示和统计分析。
附图说明
图1为本发明方法流程图;
图2为性能数据分析软件的界面。
具体实施方式
本发明实时操作系统的性能评估方法如图1所示,通过以下步骤实现:
在被监测机上建立处理器性能监测单元的软件配置框架;
在此框架的基础之上,建立关联实时任务或操作系统的性能事件机制,对实时任务与实时操作系统的各项性能指标进行监测,得到性能数据,如实时任务的Cache丢失率,所占用的总线周期等;
将性能数据通过监测通信协议栈发送给远端监测机;
在远端监测机上建立性能数据分析软件,以软示波器或图表的方式显示出性能数据。
所述建立处理器性能监测单元的软件配置框架的方法为:
基于被监测机上处理器提供的性能监测单元(Performance Monitor Unit),建立初始化、配置与读取性能监测单元的软件框架。
性能监测单元是处理器提供的一种硬件部件,它已被包括Pentium、PowerPC在内的多种处理器体系结构所采用。性能监测单元一般包括性能事件监测器与性能事件计数器。典型的,Pentium 4处理器的性能监测单元具有48个事件监测器与18个事件计数器。它能够监测48种性能事件,并能够同时记录18个性能事件的采样数据。
性能监测单元能够区分不同特权级别下的性能事件计数,即区分出用户程序对应的性能事件的采样值与操作系统对应的性能事件的采样值。由于本发明主要针对开源实时操作系统RTAI进行性能监测,而RTAI中所有的硬实时任务均运行在内核空间,其特权级别为0,因此我们不关心特权级别为1-3时的性能事件采样。
性能监测单元具有若干个与性能事件采样相关的寄存器,称为Model Specific Register(MSR)。MSR可以分为2类,一类是性能事件选择寄存器,一类是性能监测计数器。这两类寄存器是成对使用的,通过性能事件选择寄存器对计数器进行配置,设置相应的属性,如所监测事件的种类,事件的特权级别等。在对性能事件选择寄存器进行初始化以后,便可以通过性能监测计数器获取相应的采样值。
性能监测单元中的性能事件分为多种,如固定功能的性能事件,面向体系结构的性能事件,以及面向模型的性能事件等。本发明为这些性能事件提供了一个统一的配置方法与数据获取机制。用户可以通过统一的软件接口配置性能事件选择寄存器。并且通过统一的软件接口读取性能事件计数器中的值。
在本发明中,将性能事件分为硬件相关的性能事件,实时操作系统内核相关的性能事件,Cache相关的性能事件等3种类型,并提供一个对这三种性能事件进行配置的软件接口。为了描述不同的性能事件,我们设置了一个描述性能事件的数据结构rt_perf_event,该数据结构记录了性能事件的属性,如该事件的类型,标识,采样周期,采样类型等。每一个性能事件均对应一个rt_perf_event结构。
用户可以通过接口rt_perf_event_init(int type_id, int event_id, int cpu_id)申请一个特定的性能事件,该函数返回一个指向该事件对应的rt_perf_event结构的指针。
结构体rt_perf_event还包含了与该性能事件相关的操作,如counter_update()操作,可以将性能事件计数器中的值读取到该结构自身的计数器中。
为了便于管理性能事件,本发明将所有已申请的性能事件均存放在一个全局队列中。并提供相应的查找函数,用户可以利用此函数方便的找到一个已经存在的性能事件。
综上所述,处理器性能监测单元的软件配置框架以数据结构rt_perf_event为核心,在申请该数据结构的同时,完成了对性能事件监测单元的配置。同时,通过此结构可以获知该性能事件的属性,并对性能监测单元进行读取、设置属性等必要的操作。
建立关联实时任务或操作系统的性能事件机制的方法为:
为操作系统或被监测的实时任务设置性能事件,将性能监测单元作为性能事件的数据源,在关键的时间点上捕获数据并存储在性能事件相应的数据结构中,从而记录下每一个实时任务的性能数据,或与操作系统相关的性能数据。
性能事件机制的主要功能是将上述的性能事件与具体的实时任务或操作系统绑定在一起,从而获知每一个实时任务对应的性能参数。
为了实现上述目的,本发明中设置了一个数据结构rt_task_event,该结构包括一个指向rt_perf_event结构的指针,将rt_perf_event结构中的计数器作为性能事件采样的数据源。另外还包括一个指向相关实时任务的任务控制块的指针。
本发明提供了一个初始化rt_task_event结构的函数rt_task_event_request(RT_TASK* rt_task, int type_id, int event_id, int cpu_id)。该函数首先判断,系统中目前是否存在类型为type_id,编号为event_id的性能事件。如果已经存在,便将其与实时任务rt_task关联起来,即将该rt_perf_event结构的地址赋给rt_task_event中相应的字段。如果相应的性能事件尚未建立,便新建一个性能事件,再将其与实时任务关联在一起。
本发明能够提供的与实时任务相关的性能参数有:
(1) 任务所消耗的处理器周期;
(2) 任务所执行的指令数;
(3) 任务对Cache的访问次数;
(4) 任务的Cache丢失数;
(5) 任务所消耗的总线周期数;
(6) Cache的读操作次数;
(7) Cache的写操作次数;
对于周期性的实时任务,本发明能够自动地记录下该任务每次执行时对应的性能参数。
为了获取硬件无关的事件,本发明设置了一个专用的数据结构,rt_os_perf_status,该结构可以记录当前操作系统中所发生的:
(1) 处理器的指令周期数;
(2) 上下文切换次数;
(3) 中断发生的次数;
(4) 任务在处理器间迁移的次数;
为了获取上述各种性能参数,,需要对操作系统进行扩展。比如在系统进行上下文切换时,更新相应任务的性能参数。
所述监测通信协议栈对性能数据进行自动封装,监测通信协议栈利用操作系统提供的以太网协议栈与相关的软件接口,将封装好的数据发送给监测机,而且能够自适应数据发送速度的变化,当发送速度过快时,将多组数据封装在一起发送,从而降低由网络通信引起的系统负载。运行与内核空间中的实时任务也能够使用该协议栈发送网络数据。
本发明中的性能监测协议栈建立在Linux内核提供的netpoll机制的基础上。
协议栈中提供了通道机制,各性能参数均有相应的通道。协议栈可以将测试数据、通道号、采样时的时间戳以及数据类型封装在同一个数据包中,将其发送给远端的分析软件。
协议栈能够自适应数据发送的速度。如果性能数据的采样频率过高,有可能导致性能数据的发送速度过大,从而使得数据发送引起的系统负载不可接受。此时,协议栈将多个测试数据封装在同一个数据包中,以此降低数据发送的频率,并降低由此带来的系统开销。
在以Linux为基础的实时操作系统中。实时任务通常运行在内核空间,具有自己独立的堆栈与内存区域。而且,在实时任务的上下文中,不允许调用能够引起睡眠的内核函数。而Linux内核提供的网络数据包收发机制,则有可能引起睡眠。因此在实时任务的上下文中,无法直接收发以太网的数据。为了解决此问题,使得实时任务能够在自己的上下文中将性能数据发送到以太网上,本发明设置了一个发送代理任务。该任务以Linux内核线程的方式实现。并且为每个已申请的通道设置一个环形缓冲区。实时任务在发送数据时,首先调用本发明提供的发送接口,将数据写入相应的缓冲区。由周期执行的发送代理任务,将其封装成UDP数据包,再发送给远端的分析软件。
本发明通过环形缓冲中数据量的多少来判断当前的数据发送速度是否过快。如果数据量过大,代理任务便一次从环形缓存中读取多条数据。否则便每次仅读取一条数据。
综上所述,本发明中的监测通信协议栈能够满足实时性能监测软件在发送数据时的需要。
所述性能数据分析软件对接收到的性能数据进行解析,根据用户需要将性能数据以软示波器或图表的方式实时显示出来,并能够将数据存储在日志文件中,根据用户的需要,对数据进行统计分析。
本发明中的性能数据分析软件能够解析从网络上接收到的性能数据包。获取数据包中对应的通道号、数据类型,并通过软件示波器,图表等方式将所有通道中的性能数据显示出来。并且能够将数据记录到日志文件中。同时该软件还提供了常用的统计分析功能,能够计算出某个性能参数的最大值、最小值、平均值、方差等。
性能数据分析软件使用Python语言实现,分为多个线程。包括:数据包解析线程、软示波器线程、日志线程等。
性能数据分析软件的界面如图2所示。
Claims (7)
1.一种实时操作系统的性能评估方法,其特征在于包括以下步骤:
在被监测机上建立处理器性能监测单元的软件配置框架;
在此框架的基础之上,建立关联实时任务或操作系统的性能事件机制,对实时任务与实时操作系统的各项性能指标进行监测,得到性能数据;
将性能数据通过监测通信协议栈发送给远端监测机;
在远端监测机上建立性能数据分析软件,以软示波器或图表的方式显示出性能数据。
2.按权利要求1所述的实时操作系统的性能评估方法,其特征在于:所述建立处理器性能监测单元的软件配置框架的方法为:
基于被监测机上处理器提供的性能监测单元,建立初始化、配置与读取性能监测单元的软件框架。
3.按权利要求1所述的实时操作系统的性能评估方法,其特征在于:建立关联实时任务或操作系统的性能事件机制的方法为:
为被监测的实时任务或操作系统设置性能事件,将性能监测单元作为性能事件的数据源,在关键的时间点上捕获数据并存储在该性能事件对应的数据结构中。
4.按权利要求1所述的实时操作系统的性能评估方法,其特征在于:
所述监测通信协议栈自动封装性能数据与采集数据时的时间戳,并利用操作系统提供的以太网协议栈,将封装后的数据发送给远端监测机。
5.按权利要求1所述的实时操作系统的性能评估方法,其特征在于:所述监测通信协议栈能够自适应数据采样频率的变化,当采样频率过高时,将多组数据封装在一起发送。
6.按权利要求1所述的实时操作系统的性能评估方法,其特征在于:所述监测通信协议栈可以在实时任务上下文中发送以太网数据。
7.按权利要求1所述的实时操作系统的性能评估方法,其特征在于:所述性能数据分析软件对接收到的性能数据包进行解析,以软示波器或图表的方式实时显示出性能数据,并将数据存储在日志文件中,还可以对数据进行统计分析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105803253A CN102541724A (zh) | 2010-12-09 | 2010-12-09 | 一种实时操作系统的性能评估方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105803253A CN102541724A (zh) | 2010-12-09 | 2010-12-09 | 一种实时操作系统的性能评估方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102541724A true CN102541724A (zh) | 2012-07-04 |
Family
ID=46348666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105803253A Pending CN102541724A (zh) | 2010-12-09 | 2010-12-09 | 一种实时操作系统的性能评估方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102541724A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514055A (zh) * | 2013-10-09 | 2014-01-15 | 浪潮(北京)电子信息产业有限公司 | 一种面向过程的高性能计算应用性能的测评方法及系统 |
CN103729298A (zh) * | 2014-01-16 | 2014-04-16 | 北京航空航天大学 | 基于双测距仪的所需导航性能飞行程序校验方法 |
CN103914368A (zh) * | 2012-12-31 | 2014-07-09 | 百度国际科技(深圳)有限公司 | 一种安全软件性能的测试方法、系统及装置 |
CN104063326A (zh) * | 2014-07-14 | 2014-09-24 | 上海零一拼装信息技术有限公司 | 一种用于软件测试数据分析的示波器及方法 |
CN104182342A (zh) * | 2014-08-22 | 2014-12-03 | 工业和信息化部电子第五研究所 | 操作系统综合性能评价方法和系统 |
CN104657278A (zh) * | 2015-03-13 | 2015-05-27 | 百度在线网络技术(北京)有限公司 | 客户端性能评估方法及系统 |
WO2015135182A1 (en) * | 2014-03-13 | 2015-09-17 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus for evaluating performance of real-time system |
CN106021083A (zh) * | 2016-05-18 | 2016-10-12 | 青岛海信电器股份有限公司 | 一种评估实时操作系统实时性的方法及装置 |
CN106130753A (zh) * | 2016-06-12 | 2016-11-16 | 腾讯科技(深圳)有限公司 | 应用性能数据收集系统、方法、代理客户端及相关服务器 |
CN106649024A (zh) * | 2016-09-22 | 2017-05-10 | 微梦创科网络科技(中国)有限公司 | 一种应用性能实时监控方法及装置 |
CN106815017A (zh) * | 2016-12-26 | 2017-06-09 | 珠海金山网络游戏科技有限公司 | 一种动态语言性能分析及展示方法和系统 |
CN115237728A (zh) * | 2022-09-26 | 2022-10-25 | 东方电子股份有限公司 | 一种实时操作系统运行状态的可视化监视方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070074223A1 (en) * | 2003-04-09 | 2007-03-29 | Eric Lescouet | Operating systems |
CN101222737A (zh) * | 2008-01-22 | 2008-07-16 | 中兴通讯股份有限公司 | 一种自动测试评估WiMAX系统QoS的装置及方法 |
CN101620562A (zh) * | 2009-08-07 | 2010-01-06 | 中兴通讯股份有限公司 | 一种嵌入式系统性能的评估方法及系统 |
-
2010
- 2010-12-09 CN CN2010105803253A patent/CN102541724A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070074223A1 (en) * | 2003-04-09 | 2007-03-29 | Eric Lescouet | Operating systems |
CN101222737A (zh) * | 2008-01-22 | 2008-07-16 | 中兴通讯股份有限公司 | 一种自动测试评估WiMAX系统QoS的装置及方法 |
CN101620562A (zh) * | 2009-08-07 | 2010-01-06 | 中兴通讯股份有限公司 | 一种嵌入式系统性能的评估方法及系统 |
Non-Patent Citations (2)
Title |
---|
CHENGGANG QIN等: "Control System and Elastic Scheduling Co-Design", 《INTERNATIONAL CONFERENCE ON INFORMATION AND AUTOMATION (ICIA),2010 IEEE》 * |
赵立业等: "实时操作系统的性能分析和评估", 《计算机工程》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103914368B (zh) * | 2012-12-31 | 2017-05-24 | 百度国际科技(深圳)有限公司 | 一种安全软件性能的测试方法、系统及装置 |
CN103914368A (zh) * | 2012-12-31 | 2014-07-09 | 百度国际科技(深圳)有限公司 | 一种安全软件性能的测试方法、系统及装置 |
CN103514055A (zh) * | 2013-10-09 | 2014-01-15 | 浪潮(北京)电子信息产业有限公司 | 一种面向过程的高性能计算应用性能的测评方法及系统 |
CN103729298A (zh) * | 2014-01-16 | 2014-04-16 | 北京航空航天大学 | 基于双测距仪的所需导航性能飞行程序校验方法 |
WO2015135182A1 (en) * | 2014-03-13 | 2015-09-17 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus for evaluating performance of real-time system |
CN104063326A (zh) * | 2014-07-14 | 2014-09-24 | 上海零一拼装信息技术有限公司 | 一种用于软件测试数据分析的示波器及方法 |
CN104182342A (zh) * | 2014-08-22 | 2014-12-03 | 工业和信息化部电子第五研究所 | 操作系统综合性能评价方法和系统 |
CN104182342B (zh) * | 2014-08-22 | 2017-04-05 | 工业和信息化部电子第五研究所 | 操作系统综合性能评价方法和系统 |
CN104657278A (zh) * | 2015-03-13 | 2015-05-27 | 百度在线网络技术(北京)有限公司 | 客户端性能评估方法及系统 |
CN106021083A (zh) * | 2016-05-18 | 2016-10-12 | 青岛海信电器股份有限公司 | 一种评估实时操作系统实时性的方法及装置 |
CN106021083B (zh) * | 2016-05-18 | 2019-03-08 | 青岛海信电器股份有限公司 | 一种评估实时操作系统实时性的方法及装置 |
CN106130753A (zh) * | 2016-06-12 | 2016-11-16 | 腾讯科技(深圳)有限公司 | 应用性能数据收集系统、方法、代理客户端及相关服务器 |
CN106649024A (zh) * | 2016-09-22 | 2017-05-10 | 微梦创科网络科技(中国)有限公司 | 一种应用性能实时监控方法及装置 |
CN106815017A (zh) * | 2016-12-26 | 2017-06-09 | 珠海金山网络游戏科技有限公司 | 一种动态语言性能分析及展示方法和系统 |
CN106815017B (zh) * | 2016-12-26 | 2020-01-07 | 珠海金山网络游戏科技有限公司 | 一种动态语言性能分析及展示方法和系统 |
CN115237728A (zh) * | 2022-09-26 | 2022-10-25 | 东方电子股份有限公司 | 一种实时操作系统运行状态的可视化监视方法 |
CN115237728B (zh) * | 2022-09-26 | 2022-12-06 | 东方电子股份有限公司 | 一种实时操作系统运行状态的可视化监视方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102541724A (zh) | 一种实时操作系统的性能评估方法 | |
US9389936B2 (en) | Monitoring the responsiveness of a user interface | |
JP5474177B2 (ja) | 分散アプリケーションの監視 | |
EP2741211B1 (en) | Method and device for monitoring power consumption of android terminal application | |
EP2438523B1 (en) | System and method for collecting application performance data | |
US8423972B2 (en) | Collecting profile-specified performance data on a multithreaded data processing system | |
US8874642B2 (en) | System and method for managing the performance of an enterprise application | |
CN108092813A (zh) | 数据中心综合管理系统服务器硬件管理框架及实现方法 | |
US8301472B2 (en) | System and method for categorizing activities in computer-accessible environments | |
KR20180030168A (ko) | 분산형 저장 시스템의 성능 모니터링 | |
CN102122263A (zh) | 一种java应用系统运行时监控方法和装置 | |
US20110160923A1 (en) | Method and apparatus for monitoring the performance of a power delivery control system | |
CN108563526A (zh) | 一种iOS卡顿监控策略 | |
CN113468168B (zh) | 一种起重机械多源异构数据高速采集与处理软控制方法 | |
US9176783B2 (en) | Idle transitions sampling with execution context | |
CN117370053A (zh) | 一种面向信息系统业务运行全景监测方法及系统 | |
CN107133047A (zh) | 一种项目运行指标度量方法及装置 | |
CN115080363B (zh) | 一种基于业务日志的系统容量评估方法及装置 | |
CN110532153A (zh) | 一种业务层级用户操作体验可视化系统 | |
Palmieri et al. | Integrated monitoring of infrastructures and applications in cloud environments | |
CN103078764A (zh) | 基于虚拟计算任务的运行监测系统及方法 | |
Ceccarelli et al. | A multi-layer anomaly detector for dynamic service-based systems | |
Steigner et al. | Performance tuning of distributed applications with CoSMoS | |
US20140075417A1 (en) | Method and Arrangement for Enabling Analysis of a Computer Program Execution | |
Peng et al. | Design and implementation of network instruction detection system based on snort and NTOP |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120704 |