CN113254322A - 一种Stream系统极限吞吐性能评估方法及系统 - Google Patents
一种Stream系统极限吞吐性能评估方法及系统 Download PDFInfo
- Publication number
- CN113254322A CN113254322A CN202110633328.7A CN202110633328A CN113254322A CN 113254322 A CN113254322 A CN 113254322A CN 202110633328 A CN202110633328 A CN 202110633328A CN 113254322 A CN113254322 A CN 113254322A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- throughput
- determining
- read operation
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种Stream系统极限吞吐性能评估方法及系统,确定内存读操作吞吐值及内存写操作吞吐值,确定访问操作对应的内存性能评估方式,基于内存性能评估方式确定与内存性能评估方式匹配的第一关系,第一关系为:内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系,基于第一关系、内存读操作吞吐值及内存写操作吞吐值确定内存性能极限吞吐值。本方案通过分别确定内存读操作吞吐值及内存写操作吞吐值,并基于内存读操作吞吐值及内存写操作吞吐值确定每一种内存性能评估方式的极限吞吐性能,实现了基于单独的内存读操作及单独的内存写操作对系统的极限吞吐性能进行分析确定,以便于基于极限吞吐性能进行系统优化。
Description
技术领域
本申请涉及电子信息技术领域,尤其涉及一种Stream系统极限吞吐性能评估方法及系统。
背景技术
在ARM等通用CPU平台上,内存读写吞吐性能(MB/s)是整机或者CPU的主要性能指标之一。
当前在高性能CPU领域应用较为广泛的内存评估工具和算法是美国弗吉尼亚大学计算机学院提出和涉及的Stream方案及软件工具,其只要思路算法是用C语言或其他高级编程语言对大段连续虚拟内存(一般在512MB以上)进行多次读写,获取每次完整读写的时间,取其中执行最快的一次,再根据数据量和执行时间算出吞吐值。
在通过Stream方案进行内存性能评估时,其通常包括Copy、Scale、Add、Triad四个子算法,每种算法的差异主要在内存读取/写入数据量的比值和过程中涉及到的计算量。但是无论采用上述哪种算法,其涉及到的数据量均是既包括读内存也包括写内存的总的数据量,在读内存与写内存所消耗的时间不能确定的情况下,是不能确定出系统的极限数据量的,即不能确定Stream系统的极限吞吐性能。
发明内容
有鉴于此,本申请提供一种Stream系统极限吞吐性能评估方法及系统,其具体方案如下:
一种Stream系统极限吞吐性能评估方法,包括:
基于对内存数据进行的访问操作,确定内存读操作吞吐值及内存写操作吞吐值;
确定所述访问操作对应的内存性能评估方式;
基于所述内存性能评估方式确定与所述内存性能评估方式匹配的第一关系,所述第一关系为:内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系;
基于所述第一关系、所述内存读操作吞吐值及内存写操作吞吐值确定所述内存性能极限吞吐值。
进一步的,所述基于所述内存性能评估方式确定与所述内存性能评估方式匹配的第一关系,包括:
确定所述内存性能评估方式所对应的内存读操作数据量与内存写操作数据量的比值;
基于所述内存读操作数据量与内存写操作数据量的比值确定与所述内存性能评估方式匹配的第一关系。
进一步的,
若确定所述访问操作对应的内存性能评估方式为不少于两种,则基于所述不少于两种内存性能评估方式中的每一种内存性能评估方式分别确定与其匹配的第一关系。
进一步的,所述基于对内存数据进行的访问操作,确定内存读操作吞吐值及内存写操作吞吐值,包括:
对所述内存数据执行读操作,确定内存读操作吞吐值;
对所述内存数据执行写操作,确定内存写操作吞吐值。
进一步的,所述基于对内存数据进行的访问操作,确定内存读操作吞吐值及内存写操作吞吐值,包括:
获得内存数据,所述内存数据为第一预设长度;
将所述第一预设长度的内存数据分段,并依次访问每一段数据,得到访问数据,所述访问为读操作或写操作;
在所述访问为读操作时,基于所述访问数据确定内存读操作吞吐值;在所述访问为写操作时,基于所述访问数据确定内存写操作吞吐值。
一种Stream系统极限吞吐性能评估系统,包括:
访问单元,用于基于对内存数据进行的访问操作,确定内存读操作吞吐值及内存写操作吞吐值;
方式确定单元,用于确定所述访问操作对应的内存性能评估方式;
关系确定单元,用于基于所述内存性能评估方式确定与所述内存性能评估方式匹配的第一关系,所述第一关系为:内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系;
吞吐值确定单元,用于基于所述第一关系、所述内存读操作吞吐值及内存写操作吞吐值确定所述内存性能极限吞吐值。
进一步的,所述关系确定单元用于:
确定所述内存性能评估方式所对应的内存读操作数据量与内存写操作数据量的比值;基于所述内存读操作数据量与内存写操作数据量的比值确定与所述内存性能评估方式匹配的第一关系。
进一步的,
若所述方式确定单元确定所述访问操作对应的内存性能评估方式为不少于两种,则所述关系确定单元基于所述不少于两种内存性能评估方式中的每一种内存性能评估方式分别确定与其匹配的第一关系。
进一步的,所述访问单元用于:
对所述内存数据执行读操作,确定内存读操作吞吐值;对所述内存数据执行写操作,确定内存写操作吞吐值。
一种存储介质,用于至少存储一组指令集;
所述指令集用于被调用并至少执行如上任一项的Stream系统吞吐性能极限评估方法。
从上述技术方案可以看出,本申请公开的Stream系统极限吞吐性能评估方法及系统,基于对内存数据进行的访问操作,确定内存读操作吞吐值及内存写操作吞吐值,确定访问操作对应的内存性能评估方式,基于内存性能评估方式确定与内存性能评估方式匹配的第一关系,第一关系为:内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系,基于第一关系、内存读操作吞吐值及内存写操作吞吐值确定内存性能极限吞吐值。本方案通过分别确定内存读操作吞吐值及内存写操作吞吐值,并基于内存读操作吞吐值及内存写操作吞吐值确定每一种内存性能评估方式的极限吞吐性能,实现了基于单独的内存读操作及单独的内存写操作对系统的极限吞吐性能进行分析确定,以便于基于极限吞吐性能进行系统优化。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例公开的一种Stream系统极限吞吐性能评估方法的流程图;
图2为本申请实施例公开的一种Stream系统极限吞吐性能评估方法的流程图;
图3为本申请实施例公开的一种Stream系统极限吞吐性能评估方法的流程图;
图4为本申请实施例公开的一种Stream系统极限吞吐性能评估系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请公开了一种Stream系统极限吞吐性能评估方法,其流程图如图1所示,包括:
步骤S11、基于对内存数据进行的访问操作,确定内存读操作吞吐值及内存写操作吞吐值;
步骤S12、确定访问操作对应的内存性能评估方式;
步骤S13、基于内存性能评估方式确定与内存性能评估方式匹配的第一关系,第一关系为:内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系;
步骤S14、基于第一关系、内存读操作吞吐值及内存写操作吞吐值确定内存性能极限吞吐值。
ARMv8-A CPU是英国的ASIC涉及公司ARM推出的精简指令集处理器架构,在高性能消费电子、服务器等领域有广泛的应用,和其他CPU平台一样,其他CPU平台如:x86或MIPS平台等,内存读写吞吐性能是整机或者CPU的主要性能指标之一。
当前在高性能CPU领域应用较为广泛的内存评估工具和算法是英国弗吉尼亚大学计算机学院提出和涉及的Stream方案及软件工具,当前Stream软件工具的版本为5.10,因此将该工具称为Stream5.10。Stream5.10方案的主要思路算法是用C语言或其他高级编程语言,如Fortran对大段连续虚拟内存进行多次读写,获取每次完整读写的时间,取其中执行最快的一次,再根据数据量和执行时间算出吞吐值。
在进行吞吐值计算时,其涉及到的数据量都是既包括读内存也包括写内存的数据量,而并非是单独的读内存的数据量或单独的写内存的数据量,因此,在读内存与写内存所消耗的时间不能确定的情况下,是不能确定出系统的极限数据量的。
为了解决这一问题,本方案中利用单独的读内存的数据量及单独的写内存的数据量进行极限吞吐值的确定。
分别对CPU中的内存执行读操作和写操作,以便分别获得内存读操作性能及内存写操作性能。具体的,对内存数据执行读操作,确定内存读操作吞吐值;对内存数据执行写操作,确定内存写操作吞吐值,读操作和写操作是分别执行的,并不在同一次访问中执行,即每一次访问仅为读操作或者仅为写操作。
Stream5.10的内存性能评估方案中,主要包括Copy、Scale、Add、Triad这4种子算法方案,即4种内存性能评估方式,当选用不同的算法方案时,即选用不同的内存性能评估方式时,第一关系会不同,即内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系会不同,因此,需要首先基于访问操作确定执行访问操作所用到的算法,即执行访问操作的内存性能评估方式,在内存性能评估方式确定后,与内存性能评估方式相匹配的第一关系也会确定。
由于第一关系表征的是内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系,因此,在确定第一关系后,由于内存读操作吞吐值及内存写操作吞吐值已确定好,因此,只要将确定好的内存读操作吞吐值及内存写操作吞吐值代入至第一关系中,即可确定该内存性能评估方式中的内存性能极限吞吐值。
本实施例公开的Stream系统极限吞吐性能评估方法,基于对内存数据进行的访问操作,确定内存读操作吞吐值及内存写操作吞吐值,确定访问操作对应的内存性能评估方式,基于内存性能评估方式确定与内存性能评估方式匹配的第一关系,第一关系为:内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系,基于第一关系、内存读操作吞吐值及内存写操作吞吐值确定内存性能极限吞吐值。本方案通过分别确定内存读操作吞吐值及内存写操作吞吐值,并基于内存读操作吞吐值及内存写操作吞吐值确定每一种内存性能评估方式的极限吞吐性能,实现了基于单独的内存读操作及单独的内存写操作对系统的极限吞吐性能进行分析确定,以便于基于极限吞吐性能进行系统优化。
本实施例公开了一种Stream系统极限吞吐性能评估方法,其流程图如图2所示,包括:
步骤S21、基于对内存数据进行的访问操作,确定内存读操作吞吐值及内存写操作吞吐值;
步骤S22、确定访问操作对应的内存性能评估方式;
步骤S23、确定内存性能评估方式所对应的内存读操作数据量与内存写操作数据量的比值;
步骤S24、基于内存读操作数据量与内存写操作数据量的比值确定与内存性能评估方式匹配的第一关系,第一关系为:内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系;
步骤S25、基于第一关系、内存读操作吞吐值及内存写操作吞吐值确定内存性能极限吞吐值。
Stream5.10的内存性能评估方案中,主要包括Copy、Scale、Add、Triad这4种子算法方案,即4种内存性能评估方式,这4种不同的算法方案中,不同的算法方案在读取或写入数据时,其所涉及到的数据量是不同的,如:Copy和Scale算法中,内存读和写的数据量相等,而在Add和Triad算法中,每次测试的读内存数据量是写内存数据量的两倍。
具体的,Copy的核心C语言语句是a=b,即读取数据b所在内存,所读取到的数据用来写入数据a所在内存,然后重复相同的操作很多遍,如“100万次,这样,因为单个a和b的内存大小一致,例如都是8Byte,整个算法即对相同大小的内存段分别进行一次读写;
Scale核心的C语言语句是a=3*b,撇开这个计算操作来看,整个Scale算法也是对相同大小的内存段分别进行了一次读写;
由此,从内存读写量角度来看,Copy和Scale都是让CPU在单位时间内,对相同大小的内存段分别做读和写,所以在内存读写这个角度,Copy和Scale算法的理论极限吞吐是相同的。
Add的核心C语言语句是a=b+c,即读取b和c,写入a,所以读的数据量是写的两倍;Triad同理,核心语句a=3*b+c,同样读的数据量是写的两倍,所以,不管是Add还是Triad算法,都是让CPU在单位时间内,做一定量内存读写,且读的数据量是写的两倍,所以在内存读写这个角度,Add和Triad算法的理论极限吞吐是相同的。
因此,上述四种算法中,读写完成后,计算吞吐性能均是通过读出数据量加写入数据量的和,除以时间来确定。
一个硬件系统,由CPU、内存或网卡等组成,一个硬件系统的内存子系统的读内存吞吐和写内存吞吐假定分别是x和y,其中,读内存吞吐为单位时间内CPU只对内存做读操作,即内存读操作吞吐值,写内存吞吐为单位时间内CPU只对内存做写操作,即内存写操作吞吐值,x和y的单位可以是MB/s或GB/s。
若Stream5.10的Copy/Scale算法的理论极限吞吐为a,那么单位时间内算法对内存做等量数据的读写并且总时间唯一,又因为这里读写对整个内存控制器系统时分复用,所以有公式:
即用Copy/Scale算法中一半的数据量除以内存读操作吞吐值,即进行内存读操作所用的时间,Copy/Scale算法中一半的数据量除以内存写操作吞吐值,即进行内存写操作所用的时间,而将进行内存读操作所用的时间与进行内存写操作所用的时间相加,即可得到通过该算法进行数据访问所用的总时间。
根据上述公式可以得到:
若Stream5.10的Add/Triad算法的理论极限吞吐为b,那么单位时间内算法对内存做的读数据量是写数据量的两倍,且总时间唯一,又因为这里读写对整个内存控制器系统时分复用,所以有公式:
即由于读操作数据量是写操作数据量的两倍,因此,用Add/Triad算法中2/3的数据量除以内存读操作吞吐值,即进行内存读操作所用的时间,Add/Triad算法中1/3的数据量除以内存写操作吞吐值,即进行内存写操作所用的时间,而将进行内存读操作所用的时间与进行内存写操作所用的时间相加,即可得到通过该算法进行数据访问所用的总时间。
根据上述公式可以得到:
本实施例公开的Stream系统极限吞吐性能评估方法,基于对内存数据进行的访问操作,确定内存读操作吞吐值及内存写操作吞吐值,确定访问操作对应的内存性能评估方式,基于内存性能评估方式确定与内存性能评估方式匹配的第一关系,第一关系为:内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系,基于第一关系、内存读操作吞吐值及内存写操作吞吐值确定内存性能极限吞吐值。本方案通过分别确定内存读操作吞吐值及内存写操作吞吐值,并基于内存读操作吞吐值及内存写操作吞吐值确定每一种内存性能评估方式的极限吞吐性能,实现了基于单独的内存读操作及单独的内存写操作对系统的极限吞吐性能进行分析确定,以便于基于极限吞吐性能进行系统优化。
本实施例公开了一种Stream系统极限吞吐性能评估方法,其流程图如图3所示,包括:
步骤S31、获得内存数据,内存数据为第一预设长度;
步骤S32、将第一预设长度的内存数据分段,并依次访问每一段数据,得到访问数据,访问为读操作或写操作;
步骤S33、在访问为读操作时,基于访问数据确定内存读操作吞吐值,在访问为写操作时,基于访问数据确定内存写操作吞吐值;
步骤S34、确定访问操作对应的内存性能评估方式;
步骤S35、基于内存性能评估方式确定与内存性能评估方式匹配的第一关系,第一关系为:内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系;
步骤S36、基于第一关系、内存读操作吞吐值及内存写操作吞吐值确定内存性能极限吞吐值。
预先获取一段内存数据,该内存数据的长度为已知的,如:1024字节,将预先存储的内存数据进行分段访问,以便得到访问数据,该访问可以为读操作,或者为写操作。
将内存数据分段,可以为:将第一预设长度的内存数据分成预设数量的内存段,每个内存段的长度为第二预设长度,第二预设长度与预设数量的乘积与第一预设长度相等。即将第一预设长度的内存数据平均分成预设数量的内存段,以使每段内存的长度相等,以保证对多段内存长度相等的内存段执行读操作得到的读操作数据具有比较基础。若将第一预设长度的内存数据分段,而每段的长度并不一定相同,对于长度不同的内存段,即使是CPU的同一个内核执行读操作,其得到的读操作时长也会是不同的,那么其得到的时长就不存在比较基础,若是CPU的不同内核执行读操作,其得到的读操作时长也必然是没有比较的意义的。
如:若访问为读操作,若预先获取的内存数据的长度为1024字节,将该1024字节的内存数据分段,每段的长度为64字节,则1024字节的内存数据可以分为16段,即分16次读取,每次读取64字节。获得的读操作数据可以为读取每段64字节的数据所用的时长,可以得到16个时长,可以将得到的16个时长确定为读操作数据;
若访问为写操作,若预先获取的内存数据的长度为256字节,将该256字节的内存数据分段,每段的长度为8字节,则256字节的内存数据可以分为32段,即分32次写入内存条中,每次写入8字节。获得的写操作数据可以为写入每段8字节的数据所用的时长,可以得到32个时长,可以将得到的32个时长确定为写操作数据。
分别执行内存读操作及内存写操作,以使CPU的内核在执行读操作或写操作时,能够更接近硬件极限的吞吐值,以便提供更精确的评估数据,所得到的性能数据甚至可以用于DPDK等网络应用的性能估算。
分别执行内存读操作及内存写操作,以使CPU的内核在执行读操作或写操作时,能够更接近硬件极限的吞吐值,以便提供更精确的评估数据,所得到的性能数据甚至可以用于DPDK等网络应用的性能估算。
即若执行读操作,则多核处理器中的多个核可以同时执行操作,但是多个核同时执行的都是读操作,而并不会有其中的一个或多个核执行写操作;若执行写操作,则多核处理器中的多个核同时执行操作,但是多个核同时执行的都是写操作,而并不会有其中的一个或多个核执行读操作,以保证多核同时并行读操作或多核同时并行写操作。
在对数据进行分段访问时,基于待访问内存段的首字节地址进行访问,即预先对该第一预设长度的内存数据进行分段,确定每一个内存段的首字节地址,CPU的内核对处于首字节地址的字节开始访问,当前访问为访问第二预设长度的字节,即该分段后的一个内存段。
具体的,读取数据时,对第一个内存段的首字节地址进行读取,即addr+0,读取长度为第二预设长度,即cacheline,即第二预设长度为CPU缓存栈大小64Byte;读取数据时,对第二个内存段的首字节地址进行读取,即addr+64,读取长度为第二预设长度,直至读取完成整段第一预设长度的内核数据。
写入数据时,在第一个内存段的首字节地址进行写入,即addr+0,读取长度为第二预设长度;写入数据时,在第二个内存段的首字节地址进行写入,即addr+8,写入长度为第二预设长度,直至写入完成整段第一预设长度的内核数据。
本实施例公开的Stream系统极限吞吐性能评估方法,基于对内存数据进行的访问操作,确定内存读操作吞吐值及内存写操作吞吐值,确定访问操作对应的内存性能评估方式,基于内存性能评估方式确定与内存性能评估方式匹配的第一关系,第一关系为:内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系,基于第一关系、内存读操作吞吐值及内存写操作吞吐值确定内存性能极限吞吐值。本方案通过分别确定内存读操作吞吐值及内存写操作吞吐值,并基于内存读操作吞吐值及内存写操作吞吐值确定每一种内存性能评估方式的极限吞吐性能,实现了基于单独的内存读操作及单独的内存写操作对系统的极限吞吐性能进行分析确定,以便于基于极限吞吐性能进行系统优化。
本实施例公开了一种Stream系统极限吞吐性能评估系统,其结构示意图如图4所示,包括:
访问单元41,方式确定单元42,关系确定单元43及吞吐值确定单元44。
其中,访问单元41用于基于对内存数据进行的访问操作,确定内存读操作吞吐值及内存写操作吞吐值;
方式确定单元42用于确定访问操作对应的内存性能评估方式;
关系确定单元43用于基于内存性能评估方式确定与内存性能评估方式匹配的第一关系,第一关系为:内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系;
吞吐值确定单元44用于基于第一关系、内存读操作吞吐值及内存写操作吞吐值确定内存性能极限吞吐值。
ARMv8-A CPU是英国的ASIC涉及公司ARM推出的精简指令集处理器架构,在高性能消费电子、服务器等领域有广泛的应用,和其他CPU平台一样,其他CPU平台如:x86或MIPS平台等,内存读写吞吐性能是整机或者CPU的主要性能指标之一。
当前在高性能CPU领域应用较为广泛的内存评估工具和算法是英国弗吉尼亚大学计算机学院提出和涉及的Stream方案及软件工具,当前Stream软件工具的版本为5.10,因此将该工具称为Stream5.10。Stream5.10方案的主要思路算法是用C语言或其他高级编程语言,如Fortran对大段连续虚拟内存进行多次读写,获取每次完整读写的时间,取其中执行最快的一次,再根据数据量和执行时间算出吞吐值。
在进行吞吐值计算时,其涉及到的数据量都是既包括读内存也包括写内存的数据量,而并非是单独的读内存的数据量或单独的写内存的数据量,因此,在读内存与写内存所消耗的时间不能确定的情况下,是不能确定出系统的极限数据量的。
为了解决这一问题,本方案中利用单独的读内存的数据量及单独的写内存的数据量进行极限吞吐值的确定。
分别对CPU中的内存执行读操作和写操作,以便分别获得内存读操作性能及内存写操作性能。具体的,对内存数据执行读操作,确定内存读操作吞吐值;对内存数据执行写操作,确定内存写操作吞吐值,读操作和写操作是分别执行的,并不在同一次访问中执行,即每一次访问仅为读操作或者仅为写操作。
Stream5.10的内存性能评估方案中,主要包括Copy、Scale、Add、Triad这4种子算法方案,即4种内存性能评估方式,当选用不同的算法方案时,即选用不同的内存性能评估方式时,第一关系会不同,即内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系会不同,因此,需要首先基于访问操作确定执行访问操作所用到的算法,即执行访问操作的内存性能评估方式,在内存性能评估方式确定后,与内存性能评估方式相匹配的第一关系也会确定。
由于第一关系表征的是内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系,因此,在确定第一关系后,由于内存读操作吞吐值及内存写操作吞吐值已确定好,因此,只要将确定好的内存读操作吞吐值及内存写操作吞吐值代入至第一关系中,即可确定该内存性能评估方式中的内存性能极限吞吐值。
进一步的,关系确定单元43用于:确定内存性能评估方式所对应的内存读操作数据量与内存写操作数据量的比值;基于内存读操作数据量与内存写操作数据量的比值确定与内存性能评估方式匹配的第一关系。
Stream5.10的内存性能评估方案中,主要包括Copy、Scale、Add、Triad这4种子算法方案,即4种内存性能评估方式,这4种不同的算法方案中,不同的算法方案在读取或写入数据时,其所涉及到的数据量是不同的,如:Copy和Scale算法中,内存读和写的数据量相等,而在Add和Triad算法中,每次测试的读内存数据量是写内存数据量的两倍。
具体的,Copy的核心C语言语句是a=b,即读取数据b所在内存,所读取到的数据用来写入数据a所在内存,然后重复相同的操作很多遍,如“100万次,这样,因为单个a和b的内存大小一致,例如都是8Byte,整个算法即对相同大小的内存段分别进行一次读写;
Scale核心的C语言语句是a=3*b,撇开这个计算操作来看,整个Scale算法也是对相同大小的内存段分别进行了一次读写;
由此,从内存读写量角度来看,Copy和Scale都是让CPU在单位时间内,对相同大小的内存段分别做读和写,所以在内存读写这个角度,Copy和Scale算法的理论极限吞吐是相同的。
Add的核心C语言语句是a=b+c,即读取b和c,写入a,所以读的数据量是写的两倍;Triad同理,核心语句a=3*b+c,同样读的数据量是写的两倍,所以,不管是Add还是Triad算法,都是让CPU在单位时间内,做一定量内存读写,且读的数据量是写的两倍,所以在内存读写这个角度,Add和Triad算法的理论极限吞吐是相同的。
因此,上述四种算法中,读写完成后,计算吞吐性能均是通过读出数据量加写入数据量的和,除以时间来确定。
一个硬件系统,由CPU、内存或网卡等组成,一个硬件系统的内存子系统的读内存吞吐和写内存吞吐假定分别是x和y,其中,读内存吞吐为单位时间内CPU只对内存做读操作,即内存读操作吞吐值,写内存吞吐为单位时间内CPU只对内存做写操作,即内存写操作吞吐值,x和y的单位可以是MB/s或GB/s。
若Stream5.10的Copy/Scale算法的理论极限吞吐为a,那么单位时间内算法对内存做等量数据的读写并且总时间唯一,又因为这里读写对整个内存控制器系统时分复用,所以有公式:
即用Copy/Scale算法中一半的数据量除以内存读操作吞吐值,即进行内存读操作所用的时间,Copy/Scale算法中一半的数据量除以内存写操作吞吐值,即进行内存写操作所用的时间,而将进行内存读操作所用的时间与进行内存写操作所用的时间相加,即可得到通过该算法进行数据访问所用的总时间。
根据上述公式可以得到:
若Stream5.10的Add/Triad算法的理论极限吞吐为b,那么单位时间内算法对内存做的读数据量是写数据量的两倍,且总时间唯一,又因为这里读写对整个内存控制器系统时分复用,所以有公式:
即由于读操作数据量是写操作数据量的两倍,因此,用Add/Triad算法中2/3的数据量除以内存读操作吞吐值,即进行内存读操作所用的时间,Add/Triad算法中1/3的数据量除以内存写操作吞吐值,即进行内存写操作所用的时间,而将进行内存读操作所用的时间与进行内存写操作所用的时间相加,即可得到通过该算法进行数据访问所用的总时间。
根据上述公式可以得到:
进一步的,访问单元41用于:获得内存数据,内存数据为第一预设长度;将第一预设长度的内存数据分段,并依次访问每一段数据,得到访问数据,访问为读操作或写操作;在访问为读操作时,基于访问数据确定内存读操作吞吐值;在访问为写操作时,基于访问数据确定内存写操作吞吐值。
预先获取一段内存数据,该内存数据的长度为已知的,如:1024字节,将预先存储的内存数据进行分段访问,以便得到访问数据,该访问可以为读操作,或者为写操作。
将内存数据分段,可以为:将第一预设长度的内存数据分成预设数量的内存段,每个内存段的长度为第二预设长度,第二预设长度与预设数量的乘积与第一预设长度相等。即将第一预设长度的内存数据平均分成预设数量的内存段,以使每段内存的长度相等,以保证对多段内存长度相等的内存段执行读操作得到的读操作数据具有比较基础。若将第一预设长度的内存数据分段,而每段的长度并不一定相同,对于长度不同的内存段,即使是CPU的同一个内核执行读操作,其得到的读操作时长也会是不同的,那么其得到的时长就不存在比较基础,若是CPU的不同内核执行读操作,其得到的读操作时长也必然是没有比较的意义的。
如:若访问为读操作,若预先获取的内存数据的长度为1024字节,将该1024字节的内存数据分段,每段的长度为64字节,则1024字节的内存数据可以分为16段,即分16次读取,每次读取64字节。获得的读操作数据可以为读取每段64字节的数据所用的时长,可以得到16个时长,可以将得到的16个时长确定为读操作数据;
若访问为写操作,若预先获取的内存数据的长度为256字节,将该256字节的内存数据分段,每段的长度为8字节,则256字节的内存数据可以分为32段,即分32次写入内存条中,每次写入8字节。获得的写操作数据可以为写入每段8字节的数据所用的时长,可以得到32个时长,可以将得到的32个时长确定为写操作数据。
分别执行内存读操作及内存写操作,以使CPU的内核在执行读操作或写操作时,能够更接近硬件极限的吞吐值,以便提供更精确的评估数据,所得到的性能数据甚至可以用于DPDK等网络应用的性能估算。
分别执行内存读操作及内存写操作,以使CPU的内核在执行读操作或写操作时,能够更接近硬件极限的吞吐值,以便提供更精确的评估数据,所得到的性能数据甚至可以用于DPDK等网络应用的性能估算。
即若执行读操作,则多核处理器中的多个核可以同时执行操作,但是多个核同时执行的都是读操作,而并不会有其中的一个或多个核执行写操作;若执行写操作,则多核处理器中的多个核同时执行操作,但是多个核同时执行的都是写操作,而并不会有其中的一个或多个核执行读操作,以保证多核同时并行读操作或多核同时并行写操作。
在对数据进行分段访问时,基于待访问内存段的首字节地址进行访问,即预先对该第一预设长度的内存数据进行分段,确定每一个内存段的首字节地址,CPU的内核对处于首字节地址的字节开始访问,当前访问为访问第二预设长度的字节,即该分段后的一个内存段。
具体的,读取数据时,对第一个内存段的首字节地址进行读取,即addr+0,读取长度为第二预设长度,即cacheline,即第二预设长度为CPU缓存栈大小64Byte;读取数据时,对第二个内存段的首字节地址进行读取,即addr+64,读取长度为第二预设长度,直至读取完成整段第一预设长度的内核数据。
写入数据时,在第一个内存段的首字节地址进行写入,即addr+0,读取长度为第二预设长度;写入数据时,在第二个内存段的首字节地址进行写入,即addr+8,写入长度为第二预设长度,直至写入完成整段第一预设长度的内核数据。
本实施例公开的Stream系统极限吞吐性能评估系统,基于对内存数据进行的访问操作,确定内存读操作吞吐值及内存写操作吞吐值,确定访问操作对应的内存性能评估方式,基于内存性能评估方式确定与内存性能评估方式匹配的第一关系,第一关系为:内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系,基于第一关系、内存读操作吞吐值及内存写操作吞吐值确定内存性能极限吞吐值。本方案通过分别确定内存读操作吞吐值及内存写操作吞吐值,并基于内存读操作吞吐值及内存写操作吞吐值确定每一种内存性能评估方式的极限吞吐性能,实现了基于单独的内存读操作及单独的内存写操作对系统的极限吞吐性能进行分析确定,以便于基于极限吞吐性能进行系统优化。
本实施例公开了一种存储介质,用于至少存储一组指令集,指令集用于被调用并至少执行如上任一项的Stream系统极限吞吐性能评估方法。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种Stream系统极限吞吐性能评估方法,其特征在于,包括:
基于对内存数据进行的访问操作,确定内存读操作吞吐值及内存写操作吞吐值;
确定所述访问操作对应的内存性能评估方式;
基于所述内存性能评估方式确定与所述内存性能评估方式匹配的第一关系,所述第一关系为:内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系;
基于所述第一关系、所述内存读操作吞吐值及内存写操作吞吐值确定所述内存性能极限吞吐值。
2.根据权利要求1所述的方法,其特征在于,所述基于所述内存性能评估方式确定与所述内存性能评估方式匹配的第一关系,包括:
确定所述内存性能评估方式所对应的内存读操作数据量与内存写操作数据量的比值;
基于所述内存读操作数据量与内存写操作数据量的比值确定与所述内存性能评估方式匹配的第一关系。
3.根据权利要求1所述的方法,其特征在于,
若确定所述访问操作对应的内存性能评估方式为不少于两种,则基于所述不少于两种内存性能评估方式中的每一种内存性能评估方式分别确定与其匹配的第一关系。
4.根据权利要求1所述的方法,其特征在于,所述基于对内存数据进行的访问操作,确定内存读操作吞吐值及内存写操作吞吐值,包括:
对所述内存数据执行读操作,确定内存读操作吞吐值;
对所述内存数据执行写操作,确定内存写操作吞吐值。
5.根据权利要求4所述的方法,其特征在于,所述基于对内存数据进行的访问操作,确定内存读操作吞吐值及内存写操作吞吐值,包括:
获得内存数据,所述内存数据为第一预设长度;
将所述第一预设长度的内存数据分段,并依次访问每一段数据,得到访问数据,所述访问为读操作或写操作;
在所述访问为读操作时,基于所述访问数据确定内存读操作吞吐值;在所述访问为写操作时,基于所述访问数据确定内存写操作吞吐值。
6.一种Stream系统极限吞吐性能评估系统,其特征在于,包括:
访问单元,用于基于对内存数据进行的访问操作,确定内存读操作吞吐值及内存写操作吞吐值;
方式确定单元,用于确定所述访问操作对应的内存性能评估方式;
关系确定单元,用于基于所述内存性能评估方式确定与所述内存性能评估方式匹配的第一关系,所述第一关系为:内存性能极限吞吐值与内存读操作吞吐值及内存写操作吞吐值的关系;
吞吐值确定单元,用于基于所述第一关系、所述内存读操作吞吐值及内存写操作吞吐值确定所述内存性能极限吞吐值。
7.根据权利要求6所述的系统,其特征在于,所述关系确定单元用于:
确定所述内存性能评估方式所对应的内存读操作数据量与内存写操作数据量的比值;基于所述内存读操作数据量与内存写操作数据量的比值确定与所述内存性能评估方式匹配的第一关系。
8.根据权利要求6所述的系统,其特征在于,
若所述方式确定单元确定所述访问操作对应的内存性能评估方式为不少于两种,则所述关系确定单元基于所述不少于两种内存性能评估方式中的每一种内存性能评估方式分别确定与其匹配的第一关系。
9.根据权利要求6所述的系统,其特征在于,所述访问单元用于:
对所述内存数据执行读操作,确定内存读操作吞吐值;对所述内存数据执行写操作,确定内存写操作吞吐值。
10.一种存储介质,用于至少存储一组指令集;
所述指令集用于被调用并至少执行如上任一项的Stream系统吞吐性能极限评估方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110633328.7A CN113254322B (zh) | 2021-06-07 | 2021-06-07 | 一种Stream系统极限吞吐性能评估方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110633328.7A CN113254322B (zh) | 2021-06-07 | 2021-06-07 | 一种Stream系统极限吞吐性能评估方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113254322A true CN113254322A (zh) | 2021-08-13 |
CN113254322B CN113254322B (zh) | 2023-03-21 |
Family
ID=77186800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110633328.7A Active CN113254322B (zh) | 2021-06-07 | 2021-06-07 | 一种Stream系统极限吞吐性能评估方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254322B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760682A (zh) * | 2021-08-20 | 2021-12-07 | 浪潮电子信息产业股份有限公司 | 一种内存信号质量评估方法、系统及装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514083A (zh) * | 2012-06-29 | 2014-01-15 | 上海宽带技术及应用工程研究中心 | 计算机设备的能效测试方法 |
CN104035850A (zh) * | 2014-07-02 | 2014-09-10 | 浪潮电子信息产业股份有限公司 | 一种内存带宽以及压力渐变并行的验证方法 |
CN105207954A (zh) * | 2015-08-25 | 2015-12-30 | 东软集团股份有限公司 | 发送数据包和吞吐量测试方法及装置 |
CN105446841A (zh) * | 2015-11-24 | 2016-03-30 | 无锡江南计算技术研究所 | 缓存一致性测试方法 |
US20160371144A1 (en) * | 2006-12-06 | 2016-12-22 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for adaptive error-correction coding |
CN106569893A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 流量控制方法及设备 |
CN109324937A (zh) * | 2018-09-18 | 2019-02-12 | 郑州云海信息技术有限公司 | 一种测试ssd稳态的方法、装置、设备以及存储介质 |
CN109582521A (zh) * | 2018-12-10 | 2019-04-05 | 浪潮(北京)电子信息产业有限公司 | 测试存储系统读写性能的方法、装置、设备及介质 |
CN110532187A (zh) * | 2019-08-30 | 2019-12-03 | 苏州浪潮智能科技有限公司 | 一种hdfs吞吐性能测试方法、系统、终端及存储介质 |
CN111159005A (zh) * | 2018-11-07 | 2020-05-15 | 珠海全志科技股份有限公司 | 一种内存管理功能的测试方法和系统 |
CN111522702A (zh) * | 2020-04-21 | 2020-08-11 | 苏州浪潮智能科技有限公司 | 一种非易失性内存带宽检测方法、装置、设备及可读介质 |
-
2021
- 2021-06-07 CN CN202110633328.7A patent/CN113254322B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160371144A1 (en) * | 2006-12-06 | 2016-12-22 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for adaptive error-correction coding |
CN103514083A (zh) * | 2012-06-29 | 2014-01-15 | 上海宽带技术及应用工程研究中心 | 计算机设备的能效测试方法 |
CN104035850A (zh) * | 2014-07-02 | 2014-09-10 | 浪潮电子信息产业股份有限公司 | 一种内存带宽以及压力渐变并行的验证方法 |
CN105207954A (zh) * | 2015-08-25 | 2015-12-30 | 东软集团股份有限公司 | 发送数据包和吞吐量测试方法及装置 |
CN106569893A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 流量控制方法及设备 |
CN105446841A (zh) * | 2015-11-24 | 2016-03-30 | 无锡江南计算技术研究所 | 缓存一致性测试方法 |
CN109324937A (zh) * | 2018-09-18 | 2019-02-12 | 郑州云海信息技术有限公司 | 一种测试ssd稳态的方法、装置、设备以及存储介质 |
CN111159005A (zh) * | 2018-11-07 | 2020-05-15 | 珠海全志科技股份有限公司 | 一种内存管理功能的测试方法和系统 |
CN109582521A (zh) * | 2018-12-10 | 2019-04-05 | 浪潮(北京)电子信息产业有限公司 | 测试存储系统读写性能的方法、装置、设备及介质 |
CN110532187A (zh) * | 2019-08-30 | 2019-12-03 | 苏州浪潮智能科技有限公司 | 一种hdfs吞吐性能测试方法、系统、终端及存储介质 |
CN111522702A (zh) * | 2020-04-21 | 2020-08-11 | 苏州浪潮智能科技有限公司 | 一种非易失性内存带宽检测方法、装置、设备及可读介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760682A (zh) * | 2021-08-20 | 2021-12-07 | 浪潮电子信息产业股份有限公司 | 一种内存信号质量评估方法、系统及装置 |
CN113760682B (zh) * | 2021-08-20 | 2024-02-23 | 浪潮电子信息产业股份有限公司 | 一种内存信号质量评估方法、系统及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113254322B (zh) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11349639B2 (en) | Circuit and method for overcoming memory bottleneck of ASIC-resistant cryptographic algorithms | |
US9477601B2 (en) | Apparatus and method for determining a sector division ratio of a shared cache memory | |
CN106775474B (zh) | 一种Nand Flash磨损均衡方法、装置及存储器 | |
US20100306300A1 (en) | Sparse Matrix Padding | |
KR20060051898A (ko) | 비휘발성 컴퓨터 메모리를 독출하기 위한 시스템 및 방법 | |
CN113254322B (zh) | 一种Stream系统极限吞吐性能评估方法及系统 | |
US6684267B2 (en) | Direct memory access controller, and direct memory access control method | |
CN109521970B (zh) | 一种数据处理方法及相关设备 | |
US9304792B2 (en) | Decoupled method for tracking information flow and computer system thereof | |
CN117312330A (zh) | 基于便签式存储的向量数据聚集方法、装置及计算机设备 | |
JPH09282225A (ja) | キャッシュ競合の識別、及び解決のための方法及びその装置 | |
CN113254321B (zh) | 一种评估处理器内存访问性能的方法及系统 | |
CN115982068A (zh) | 数据处理方法及相关装置 | |
CN114625719A (zh) | 一种基于移动滤波框架的动态集合管理方法和系统 | |
US7512522B2 (en) | Methods and apparatus for assessing health of memory utilization of a program | |
CN113111013A (zh) | 一种闪存数据块绑定方法、装置及介质 | |
CN113253947B (zh) | 一种重删方法、装置、设备及可读存储介质 | |
CN117393046B (zh) | 一种空间转录组测序方法、系统、介质及设备 | |
CN118331748B (zh) | 一种数据处理方法、装置、介质及计算设备 | |
KR20180018269A (ko) | 컴퓨팅 장치 및 컴퓨팅 장치에서 연산들을 처리하는 방법 | |
CN100353335C (zh) | 增加处理器中存储器的方法 | |
CN116597886B (zh) | 对npu中的lsu进行验证的方法及相关设备 | |
CN116303135B (zh) | 任务数据的装载方法、装置和计算机设备 | |
JP7168731B1 (ja) | メモリアクセス制御装置、メモリアクセス制御方法、及び、メモリアクセス制御プログラム | |
CN112579489B (zh) | 数据操作方法、装置、设备、存储介质及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |