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

  1. 查看内核、平台等信息  
  2. #uname -a   
  3. 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   
  4. 查看操作系统版本  
  5. #cat /etc/issue   
  6. CentOS release 5.4 (Final)   
  7. 查看CPU信息    
  8. cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c   
  9.       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文件,里面详细说明了安装步骤和测试。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 下一页

相关内容