APP下载

组态软件内存实时数据库性能测试

2014-04-04朱广宇

物联网技术 2014年3期
关键词:组态软件内存

朱广宇

摘 要:介绍了内存实时数据库在工业控制DCS组态软件中的应用及其在数据采集过程中的重要性;针对组态软件内存实时数据库的特点,测试了在不同的数据组织形式、内存置换页面大小以及缓存大小下数据库的性能,通过测试,得出了不同的配置组合对内存实时数据库性能的影响,从而为下一步的研究工作打下了基础。

关键词:组态软件;内存;实时数据库;Berkeley DB

中图分类号:TP392 文献标识码:A 文章编号:2095-1302(2014)03-0070-03

0 引 言

伴随着分布式控制系统DCS(Distributed Control System)的出现,以及其在工控领域的广泛应用,组态软件开始逐渐被广大技术人员所熟悉。“组态”的概念最早来自英文Configuration,其含义是使用软件工具对计算机及软件的各种资源进行配置(包括进行对象的定义、制作和编辑,并设定其状态特征属性参数),达到使计算机或软件按照预先设置,自动执行特定任务,满足使用者要求的目的[1]。

组态软件是应用在数据采集和过程控制层面的一种专用软件,应用在分布式控制系统数据监控层一级。通过使用组态软件,可以为DCS工控系统提供良好的用户开发界面以及简洁的使用方法,可以非常容易地实现和完成对分布式工业控制系统各个模块的模拟和监控功能,使计算机图形界面与工控系统真实设备联系起来;通过集成各个硬件厂家的I/O接口以及设备接口,组态软件能够采集到工控设备的现场数据,通过实时数据库进行处理,并存储到历史数据库供查询使用;通过设置,可以对采集数据提供报警和报表功能;同时,组态软件应该能支持各种工控设备和常见的通信协议,并且通常应提供分布式数据管理和网络功能[2]。

组态软件产品于上世纪80年代初出现,并且得到了良好的发展,目前世界上的组态软件有几十种之多,其中主要包括美国Wonderware的Intouch、美国Intellution公司的 Fix、澳大利亚Cit公司的Citech、德国Simens的Wincc、北京亚控自动化软件有限公司开发的组态王(Kingview)、大庆三维公司的ForceControl以及北京昆仑通态自动化软件科技有限公司开发研制的MCGS等。伴随着国家对工控领域的支持不断加大,组态软件将在工控信息化中扮演越来越重要的角色,未来发展的空间也会不断扩大。

1 内存实时数据库

大批量生产、连续加工过程、高度自动化程度是流程工业的特点,这需要在过程监控时提供高速的数据处理、长期的数据存储。工业控制系统是一个实时系统,它实时地从外界采集数据进行运算、判断后输出控制量,因此对数据的管理呈现出实时特点[3]。因此,实时数据库是组态软件处理数据、组织数据和管理数据的核心,它能够高效地处理和存储工控系统生产过程中的实时数据,为优化过程控制和企业的经营决策提供完整的实时数据和完备的历史信息[4]。

根据工控系统的特点,在工业组态软件中需要应用内存实时数据库,分以下几种情况:内存实时数据库整个数据库常驻内存,对数据的存取不需要 I/O 操作;整个数据库不用常驻内存,但存取数据时,应先进入内存,即数据库的存取在内存中进行;数据库常驻磁盘,增大缓冲区,在一个事务执行之前,所有的数据都已经取到内存,经适当的缓冲区管理减少甚至消除 I/O[5],这些特点决定了内存实时数据库能够及时有效地处理和维护大量的共享数据和控制数据,满足工业组态软件对于事务时间性方面的要求。

对于内存实时数据库来说,由于已不再涉及 I/O,所以在时间和空间矛盾的处理上,空间是第一位,系统的算法设计目标应该是内存空间和 CPU的高效使用。为了达到这一目标,应该对内存实时数据库的数据组织结构、事务处理和数据管理、并发控制及恢复技术、内存置换页面以及缓存大小等方面进行研究与测试[5],使其能够提供更好的性能,满足工业控制组态软件的需求。

2 内存实时数据库性能测试

2.1 测试目的

针对内存实时数据库的特点和研究与测试方面的要求,设置内存实时数据库的数据组织形式、内存置换页面大小以及缓存大小,通过测试数据,得出不同的配置组合对内存实时数据库性能上的影响,为下一步的研究工作打下基础。

2.2 测试环境

测试对象采用Berkeley DB内存实时数据库系统。Berkeley DB历史悠久,主要应用在Unix/Linux操作系统上,其设计思想是简单、小巧、可靠、高性能。它可为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务。同时Berkeley DB为数据的存取和管理提供了一组简洁的函数调用API接口。Berkeley DB对接收到的实时数据采用关键词(Key)和数据(Value)的存储结构,这两者构成的Key/Value对组成了数据库中的一个基本结构单元,而整个数据库实际上就是由许多这样的结构单元所构成的。通过使用这种方式,简化了实时数据的存储逻辑关系,同时,简便的数据库查询和访问方式也能够满足工业组态软件的需求。所以,在此测试中,所有的数据插入的都是Key=int,Value=int,在循环中递增的。

本机配置如下:

OS为Windows 7旗舰版;RAM=8 GB;CPU=Intel Core i7-3770 CPU 3.4 GHz;Disk=500 GB;NTFS的默认簇大小为4 KB。

测试的实际数据量为:

300*10 000*2*sizeof(int)/1 024/1 024≌22.89 MB;编译器:Visual C++ 6.0;Berkeley DB内存实时数据库版本为db-5.3.21.NC

2.3 测试方法

循环插入int类型的数据,同时设置Berkeley DB的参数,测试在不同存储方循环插入int类型的数据,同时设置Berkeley DB的参数,测试在不同数据组织形式、内存置换页面大小以及Cache缓存大小的设置下,数据库读写的性能,以确定组态软件实时数据库部分的存储方式。

2.4 测试代码

内存实时数据库性能的测试代码如下:

#include “stdafx.h”

#include “db.h”

#include “db_cxx.h”

#include “windows.h”

#include “winbase.h”

int main(intargc, char* argv[])

{

size_tpsize = 1;//设置页面大小,单位为KB

size_tcsize = 10;//设置cache大小,单位为MB

inttcount = 300;//设置数据插入数量,单位为万次

Dbdb(NULL, 0);

db.set_pagesize(1024*psize);

db.set_cachesize(0, 1024*1024*csize, 0);

u_int32_toFlags = DB_CREATE;

try

{

db.open(NULL,"test.db",NULL,DB_BTREE,oFlags,0);

}

catch(DbException&e)

{

}

catch(std::exception &e)

{

}

//实时数据插入

Dbtkey,data;

inti,ret,count=10000*tcount;

long t1 = GetTickCount();//开始时间

for(i=0;i

{

Dbtkey(&i,sizeof(int));

Dbtdata(&i,sizeof(int));

db.put(0, &key, &data, DB_NOOVERWRITE);

}

long t2 = GetTickCount();//结束时间

printf("插入结束%d万记录,全部用时:%.2f秒\r\n",tcount,(t2-t1)/(float)1000);

long tick1=GetTickCount();

try

{

Dbc *dbcp;

db.cursor(NULL, &dbcp, 0);

Dbt key;

Dbt data;

while (dbcp->get(&key, &data, DB_NEXT) == 0)

{

key.get_data();

data.get_data();

}

dbcp->close();

printf("遍历结束 %d 万记录,全部用时:%.2f秒\r\n",tcount,(GetTickCount()-tick1)/(float)1000);

db.sync(0);

}

catch (DbException&dbe) {}

db.close(0);

return 0;

}

2.5 测试结果

代码运行界面如图1所示。

图1 代码运行界面

代码运行后所得到的结果如表1——表3所列。

表1 页尺寸列表

(记录数量:300万,缓存尺寸:0 MB 单位:s)读写 1 KB 2 KB 4 KB 8 KB 16 KB 32 KB

B+写 33.71 30.28 26.85 28.30 34.09 50.59

HASH写 50.92 46.32 48.64 54.10 67.44 91.39

B+读 2.03 2.00 2.03 2.11 2.20 2.34

HASH读 4.24 4.51 3.85 3.70 3.67 3.32

表2 Cache缓存大小列表(1)

(记录数量:300万;页尺寸:4 KB;数据库文件大小:80.2 MB;单位:s)

读写 0 MB 10 MB 20 MB 40 MB 80 MB 160 MB 320 MB

B+写 31.78 17.04 16.04 15.12 11.50 11.37 11.33

HASH写 46.85 30.39 22.2 16.49 12.65 12.92 13.39

B+读 2.46 2.65 2.61 2.65 2.59 2.54 2.56

HASH读 3.73 3.54 3.2 3.21 3.12 3.18 3.25

表3 Cache缓存大小列表(2)

Cache缓存大小(记录数量:600万;页尺寸:4 KB;数据库文件大小:160 MB;单位:s)

读写 0 MB 10 MB 20 MB 40 MB 80 MB 160 MB 320 MB

B+写 71.07 44.60 43.41 41.95 36.13 24.77 24.49

HASH写 102.21 85.82 67.00 52.56 43.51 28.24 27.75

B+读 5.21 5.48 5.51 5.49 5.41 5.30 5.24

HASH读 8.24 8.22 7.91 7.52 7.11 6.74 6.75

4 结 语

根据以上运行结果,可以看出组态软件内存实时数据库Berkeley DB在采用B+树存储方式的时候,其写入和读取性能明显高于HASH存储方式;当页面尺寸为4 KB时,Berkeley DB的存储效率最高,随着页面尺寸的不断增大,效率反而逐渐降低;当确定了页面尺寸为4 KB后,逐渐改变Cache缓存大小,比较300万与600万两种记录数量,发现无论是B+树的存储方式还是HASH的存储方式,当缓存很小的时候,效率都很差,而当缓存大小大于等于数据库文件大小时,效率最高,之后随着缓存逐渐增大,对效率的影响很小。

通过该测试可以得出,不同的数据组织形式、内存置换页面大小以及Cache缓存大小对内存实时数据库的效率性能影响很大,本文只针对B+树和HASH存储方式进行了测试,测试的内容并不完善,下一步应该对数据的组织形式进行深入的研究,挖掘更适合键值对形式的工业组态软件内存实时数据组织结构。

参 考 文 献

[1]王亚民, 陈青, 刘畅生. 组态软件设计与开发[M]. 西安: 西安电子科技大学出版社, 2003.

[2]马国华.监控组态软件的发展趋势与现状[J].世界仪表与自动化,2002,6(5):10-11.

[3]韩玫瑰,史明华,马涛,等.DCS组态软件实时数据库系统的设计[J].自动化仪表,2006,27(1):18-21.

[4]姚晴怡,张曦煌.组件软件系统中实时数据库设计[J].福建电脑,2007,(10):145-146.

[5]梁巧玉.内存实时数据库数据组织结构优化策略研究[D].太原:太原科技大学,2010.

Performance test of memory real-time database of configuration software

ZHHU Guang-yu

(National Computer System Engineering Research Institute of China, Beijing 100083, China)

Abstract: The importance of the application of memory real-time database in industrial control DCS configuration software and in the data collection process is introduced. Aiming at the features of memory real-time database of the configuration software, the database performance data in different forms of organization, memory replacement page size and cache size is tested. Test result shows the effects of combinations of different configurations on the memory real-time database performance, which can lay the foundation for further research.

Keyword: configuration software; memory; real-time database; Berkeley DB

B+读 5.21 5.48 5.51 5.49 5.41 5.30 5.24

HASH读 8.24 8.22 7.91 7.52 7.11 6.74 6.75

4 结 语

根据以上运行结果,可以看出组态软件内存实时数据库Berkeley DB在采用B+树存储方式的时候,其写入和读取性能明显高于HASH存储方式;当页面尺寸为4 KB时,Berkeley DB的存储效率最高,随着页面尺寸的不断增大,效率反而逐渐降低;当确定了页面尺寸为4 KB后,逐渐改变Cache缓存大小,比较300万与600万两种记录数量,发现无论是B+树的存储方式还是HASH的存储方式,当缓存很小的时候,效率都很差,而当缓存大小大于等于数据库文件大小时,效率最高,之后随着缓存逐渐增大,对效率的影响很小。

通过该测试可以得出,不同的数据组织形式、内存置换页面大小以及Cache缓存大小对内存实时数据库的效率性能影响很大,本文只针对B+树和HASH存储方式进行了测试,测试的内容并不完善,下一步应该对数据的组织形式进行深入的研究,挖掘更适合键值对形式的工业组态软件内存实时数据组织结构。

参 考 文 献

[1]王亚民, 陈青, 刘畅生. 组态软件设计与开发[M]. 西安: 西安电子科技大学出版社, 2003.

[2]马国华.监控组态软件的发展趋势与现状[J].世界仪表与自动化,2002,6(5):10-11.

[3]韩玫瑰,史明华,马涛,等.DCS组态软件实时数据库系统的设计[J].自动化仪表,2006,27(1):18-21.

[4]姚晴怡,张曦煌.组件软件系统中实时数据库设计[J].福建电脑,2007,(10):145-146.

[5]梁巧玉.内存实时数据库数据组织结构优化策略研究[D].太原:太原科技大学,2010.

Performance test of memory real-time database of configuration software

ZHHU Guang-yu

(National Computer System Engineering Research Institute of China, Beijing 100083, China)

Abstract: The importance of the application of memory real-time database in industrial control DCS configuration software and in the data collection process is introduced. Aiming at the features of memory real-time database of the configuration software, the database performance data in different forms of organization, memory replacement page size and cache size is tested. Test result shows the effects of combinations of different configurations on the memory real-time database performance, which can lay the foundation for further research.

Keyword: configuration software; memory; real-time database; Berkeley DB

B+读 5.21 5.48 5.51 5.49 5.41 5.30 5.24

HASH读 8.24 8.22 7.91 7.52 7.11 6.74 6.75

4 结 语

根据以上运行结果,可以看出组态软件内存实时数据库Berkeley DB在采用B+树存储方式的时候,其写入和读取性能明显高于HASH存储方式;当页面尺寸为4 KB时,Berkeley DB的存储效率最高,随着页面尺寸的不断增大,效率反而逐渐降低;当确定了页面尺寸为4 KB后,逐渐改变Cache缓存大小,比较300万与600万两种记录数量,发现无论是B+树的存储方式还是HASH的存储方式,当缓存很小的时候,效率都很差,而当缓存大小大于等于数据库文件大小时,效率最高,之后随着缓存逐渐增大,对效率的影响很小。

通过该测试可以得出,不同的数据组织形式、内存置换页面大小以及Cache缓存大小对内存实时数据库的效率性能影响很大,本文只针对B+树和HASH存储方式进行了测试,测试的内容并不完善,下一步应该对数据的组织形式进行深入的研究,挖掘更适合键值对形式的工业组态软件内存实时数据组织结构。

参 考 文 献

[1]王亚民, 陈青, 刘畅生. 组态软件设计与开发[M]. 西安: 西安电子科技大学出版社, 2003.

[2]马国华.监控组态软件的发展趋势与现状[J].世界仪表与自动化,2002,6(5):10-11.

[3]韩玫瑰,史明华,马涛,等.DCS组态软件实时数据库系统的设计[J].自动化仪表,2006,27(1):18-21.

[4]姚晴怡,张曦煌.组件软件系统中实时数据库设计[J].福建电脑,2007,(10):145-146.

[5]梁巧玉.内存实时数据库数据组织结构优化策略研究[D].太原:太原科技大学,2010.

Performance test of memory real-time database of configuration software

ZHHU Guang-yu

(National Computer System Engineering Research Institute of China, Beijing 100083, China)

Abstract: The importance of the application of memory real-time database in industrial control DCS configuration software and in the data collection process is introduced. Aiming at the features of memory real-time database of the configuration software, the database performance data in different forms of organization, memory replacement page size and cache size is tested. Test result shows the effects of combinations of different configurations on the memory real-time database performance, which can lay the foundation for further research.

Keyword: configuration software; memory; real-time database; Berkeley DB

猜你喜欢

组态软件内存
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
“春夏秋冬”的内存
基于面向对象的组态软件实时数据库的设计
基于WebAccess的PLC远程控制系统设计
基于内存的地理信息访问技术
基于多级缓存的内存管理方案