动态数据竞争检测方法实验分析(二)

上一篇文章主要分析了各个检测方法在检测能力上的优劣。这篇文章主要分析一下各个检测方法对程序造成的影响以及可扩展性。

我们挑选了比较常用的SPLASH-2测试集程序用来测试这些动态数据竞争检测方法在程序运行过程中需要消耗的执行时间以及内存。

应用程序

输入参数

描述

同步

Cholesky

-p1/2/4/8/16/32 -b32 -c16384 ./inputs/tk17.O

cholesky decomposition

Lock+Condvar

FFT

-p1/2/4/8/16/32 -m20 -n65536 -l4

fast fourier transformation

Lock+Condvar

LU

-p1/2/4/8/16/32 –n512 -b16

factors a dense matrix into the product of a lower triangular and an upper triangular matrix

Lock+Condvar

Radix

-p1/2/4/8/16/32 –n5262144 -r8 -m524288

radix sort

Lock+Condvar

图例
平均内存开销

上图展示的是动态数据竞争检测方法在不同的程序上执行需要的平均内存开销。在Cholesky中可以明显的发现TS需要的内存开销是其他9种方法的两倍多,其次是ML。这两种由于保留了很多锁集和向量时钟信息,因此占用的内存会很多。FFT中当线程数目大于等于8并且不超过16时,ML需要的内存增长趋势大于其他几个方法,而当线程数目大于16时,HG需要的内存增长趋势大于其他方法,而ML趋于平稳。LU中各个方法总体来看都需要比较类似的内存开销并且增长趋势也保持一致。Radix中当线程数目大于8时,各个方法需要的内存开销都比较接近并且增长趋势趋于平稳。而当线程数目在2~8之间时,有一个明显的峰值并且内存开销增长趋势最快。

图例
平均执行时间

上图展示的是动态数据竞争检测方法在不同的程序上执行需要的平均执行时间。Cholesky中可以明显的发现当线程数目大于4时,TS需要的执行时间比其他方法都要多,其次是ML,然后是HG。而SL+和Loft相对来说执行得较快。FFT中可以明显的发现HG的执行时间比其他方法都要多并且执行时间增长趋势比其他方法都要快,当线程数目大于4时,其他方法需要的时间都趋于平稳。LU中当线程数目大于8时,各个方法需要的执行时间基本相同并且执行时间增长趋势也保持一致。Radix中,当线程数目大于8时,ML需要的执行时间都要大于其他方法并且执行时间增长趋势也更快。

同时我们也可以发现当线程数目在4时,这四个程序执行时间都会到达一个峰值。这点我们暂时还无法解释,期待后序研究中发现其中的问题。

锁集和向量时钟操作分析
锁集和向量时钟操作分析

上表展示的动态数据竞争检测方法在不同程序(16个线程)上执行时锁集操作和向量时钟操作相关的统计。VC OPS ON SYNC OBJS表示就是在同步对象上向量时钟相关的操作,其中JOINS表示向量时钟合并操作,ASSIGNS表示的就是向量时钟拷贝操作,CMPS表示就是向量时钟比较操作。而LOCKSET OPS表示就是锁集相关操作,INTSECS表示锁集交集操作,ASSIGNS表示锁集拷贝操作,ALLOCS表示锁集分配内存空间操作,ADDS表示就是锁集添加锁操作。

从这张表中能够我们发现在FFT程序中,HG在向量时钟的ASSIGNS和CMPS的操作数目远远多于其他方法,这也就不难理解为什么在Cholesky中HG需要的内存开销和执行时间都比较多。整体上来看,HG、TS在向量时钟和锁集上的操作相比于其他方法都要更多。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2717
来自专栏陈仁松博客

ASP.NET Core 'Microsoft.Win32.Registry' 错误修复

今天在发布Asp.net Core应用到Azure的时候出现错误InvalidOperationException: Cannot find compilati...

4868
来自专栏hbbliyong

WPF Trigger for IsSelected in a DataTemplate for ListBox items

<DataTemplate DataType="{x:Type vm:HeaderSlugViewModel}"> <vw:HeaderSlug...

4064
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2070
来自专栏跟着阿笨一起玩NET

c#实现打印功能

2792
来自专栏飞扬的花生

jsencrypt参数前端加密c#解密

      写程序时一般是通过form表单或者ajax方式将参数提交到服务器进行验证,如何防止提交的请求不被抓包后串改,虽然无法说绝对安全却给非法提交提高了难度...

3869
来自专栏落花落雨不落叶

canvas画简单电路图

62211
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2587
来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2556
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3145

扫码关注云+社区