×

oprofile 程序 s

如何编写100% cache miss的C程序?PCSKYS_Windows7Loader是什么工具

admin admin 发表于2022-06-15 10:57:41 浏览97 评论0

抢沙发发表评论

如何编写100% cache miss的C程序


今天为了做ppt讲解如何使用oprofile(以测试cache miss为例),要写一个cache miss的小例子,以Level 2 data cache为例,具体步骤见下文。
1、查看你的系统cache大小:
$ cat /sys/devices/system/cpu/cpu0/cache/index2/size
我的系统是centos 5.8。以上命令是查看Level 2cache的大小,在我的服务器上是256k,记住这个数,写程序时要用。
2、查看cache line的大小:
$ cat /sys/devices/system/cpu/cpu0/cache/index2/coherency_line_size
我的服务器上是64,单位是bytes,记住这个数,也要用到。

3、编写测试程序cache.c:

[cpp] view plaincopyprint?
int matrix; //4*8192*16=2^18=512k bytes

void bad_access()
{
int k, j, sum = 0;
for(k = 0; k 《 16; k++)
for(j = 0; j 《 8192; j++)
sum += matrix[j][k];
}

int main()
{
int i;
for(i = 0; i《 5000000; i++)
bad_access();
return 0;
}
以上代码虽然简单,但要理解需要懂cache的简单结构及原理:cache是以64字节或者128字节为一行的,分为多组(或者叫多路),每次发生cache miss取数据时,cache会按照cache line为单位(这里也就是一次取64字节)从内存取数据。

第一步得知level 2 data cache总大小是256k,第二步得到每个cache line是64字节,所以,level2 data cache共256k/64=2^12=4096行。
想象一个表,每行64字节,一共4096行,共256k大小,这就是我们cache的简单结构。为了保证每次取数据都会发生miss,我们必须以》=64字节的步长取数据。
首先创建一个512K大的数组,要比cache大一倍。如果数组也是256k,当第一次循环结束,数组用完后再次从头开始取数据时,cache就不再被替换,所以不会再发生cache miss,为了保证每次取数据都要发生cache miss,数组必须至少是cache大小的两倍及以上。
循环读取数组中的数据,每次读一个int大小,然后加64,再读取下一个cache line的数据,循环直到数组数据全部取出。
oprofile统计cache miss有个最低限制(我的0.9.8版本是2000000次),所以发生的miss数太小的话是娶不到的,所以加大循环次数至5000000。
4、至此可以进行100% cache miss的测试了,但是经过测试发现 cache miss压根没发生,百思不得其解,请教boss后才想起来,x86有个stream buffer硬件预取器,如果你取数据非常规律,那么硬件预取器经过训练后,会在你真正取数据之前,将你要的数据直接放到cache中。所以,要在至强处理器的服务器上做cache miss测试,必须重启系统后,关闭硬件预取器。否则就要修改程序,写出真正随机取数据的代码,但是这无法保证cache miss 率是100%,只能保证cache 命中率比较低而已。
5、SPEC CPU2006中的mcf发生cache miss rate很高,可以用其做测试。
oprofile的使用暂且不表。有问题欢迎留言讨论。

PCSKYS_Windows7Loader是什么工具


windows7激活工具。
提示:已使用过替换激活法的朋友将无法使用本程序激活,请将系统恢复到激活前或者重装系统,本程序有可能造成极少数朋友的不兼容状态导致无法进入系统,请准备好PE等工具删除C盘根目录下的GRLDR隐藏文件就能恢复正常,软激活并不会对硬件造成损害

验证是否激活的一些方法
1、最简单的右键我的电脑属性
2、Win+R===》输入 slmgr.vbs -dlv
3、Win+R===》输入 slmgr.vbs -dli
4、Win+R===》输入 slmgr.vbs -xpr
5、Win+R===》输入 Winver
这些指令足够让你判断是否完全的激活了
也可以把系统时间修改到2099看看是否持续激活状态

给个SQL SERVER 2005(个人版)的下载地址


各种版本应有尽有 http://msdn.microsoft.com/zh-cn/sqlserver/bb671254 追问: 英文我不懂,帮我弄下载链接好吗谢谢 个人版的 回答: Sql Server是没有个人版的,但是 微软 提供了免费的版本 SQL Server 2005 Express Edition 下载地址 http://www.microsoft.com/downloads/details.aspx?FamilyID=220549b5-0b07-4448-8848-dcc397514b41&DisplayLang=zh-cn 现在官网已经不提供Sql Server 2005的下载连接了,而且2005这个版本也发了好几个补丁,没必要下载一个个补丁,建议下载一个Sql Server 2008 R2 http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=54ad6107-c552-4d47-b1a1-3f66460f71a9 说明下面选择下载方式Developer 注册码 : PTTFM-X467G-P7RH2-3Q6CG-4DMYB
-程序