Linux内核编译以及perfctr模块安装
Linux内核编译以及perfctr模块安装
零、需求介绍
需要使用PAPI得到硬件级的数据,即与微指令相关的数据,例如L1/L2 cache miss、TLB miss、Cycle等,而PAPI需要perfctr(Performance-monitoring counters support)模块的支持,而Linux内核当中默认没有perfctr模块,并且perfctr只在某些内核上被支持,它实际上是内核的一个补丁,需要重新编译内核,打上补丁才能在内核上运行perfctr模块。更多信息参考papi和perfctr的INSTALL文件。
一、环境介绍
Intel(R) Xeon(R) CPU ,X86_64平台;
物理机<建议不要在虚拟机上试,否则可能出现问题,后面介绍>
CentOS release 5.4 (Final)
内核版本是2.6.18-164.el5-x86_64
- 查看内核、平台等信息
- #uname -a
- Linux gc04vm13 2.6.18-164.el5<原来内核> #1 SMP Thu Sep 3 03:28:30 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
- 查看操作系统版本
- #cat /etc/issue
- CentOS release 5.4 (Final)
- 查看CPU信息
- cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
- 1 Intel(R) Xeon(R) CPU E5520 @ 2.27GHz <只给虚拟机分配了一个CPU>
二、准备工作
(i)下载papi,可以在http://icl.cs.utk.edu/papi/custom/index.html?lid=51&slid=69上下载各个版本的papi,这里下载papi-3.6.0。
papi中包含了perfctr,用户不需要单独下载perfctr,(当然也可以单独下载,网址是http://user.it.uu.se/~mikpe/linux/perfctr),这里选择2.6版本的perfctr。
解压papi,阅读papi-3.6.0/src/perfctr-2.6.x目录下的INSTALL文件,里面讲到“该版本的perfctr适用于如下版本的Linux内核:在papi-3.6.0/src/perfctr-2.6.x/patches目录下,若存在patch-kernel-*补丁,说明适用于*版本的Linux内核,我们选择2.6.19版本的linux内核。
注意: PERFCTR 的版本并不是和linux内核版本相对应的,比如ompi自带的perfctr-2.6.x可适用于很多版本的linux内核,例如2.4.26版本的内核。
(ii)下载linux-2.6.19.tar.bz2,在网站 http://www.kernel.org/pub/linux/kernel/ 上可以下载任何版本的linux内核。
一般情况下,当前内核版本是x.y.***版本的话,编译的新内核版本最好也是x.y.***版本,例如不要从2.4.x升级到2.6.x,因为两者差异比较大,一般[主].[次]版本号相同的内核可以顺利升级。
(iii) 认真看完perfctr的INSTALL文件,里面详细说明了安装步骤和测试。
|
评论暂时关闭