hisi perf uncore event介紹

hisi perf uncore event

-v0.1 2020,2,17 Sherlock init

簡介:本文檔介紹使用hisi perf uncore事件調優的方法,目前主要是perf uncore
事件和硬件的對應關係介紹。本文基於v5.6-rc1的主線內核進行分析。

你可以使用 perf list來列出系統支持的perf事件,有一類perf事件可以用來統計CPU的
L3 cache, HHA和DDRC的事件,他們統一叫uncore事件。他們對應的內核驅動是在
linux/drivers/perf/hisilicon/*。這些uncore event的命名是這樣的:

  hisi_sccl1_ddrc0/act_cmd/                          [Kernel PMU event]
  hisi_sccl1_ddrc0/flux_rcmd/                        [Kernel PMU event]
  [...]
  hisi_sccl1_ddrc1/act_cmd/                          [Kernel PMU event]
  hisi_sccl1_ddrc1/flux_rcmd/                        [Kernel PMU event]
  [...]
  hisi_sccl1_ddrc2/act_cmd/                          [Kernel PMU event]
  hisi_sccl1_ddrc2/flux_rcmd/                        [Kernel PMU event]
  [...]
  hisi_sccl1_ddrc3/act_cmd/                          [Kernel PMU event]
  hisi_sccl1_ddrc3/flux_rcmd/                        [Kernel PMU event]
  [...]
  hisi_sccl1_hha2/bi_num/                            [Kernel PMU event]
  hisi_sccl1_hha2/edir-hit/                          [Kernel PMU event]
  [...]
  hisi_sccl1_hha3/bi_num/                            [Kernel PMU event]
  hisi_sccl1_hha3/edir-hit/                          [Kernel PMU event]
  [...]
  hisi_sccl1_l3c10/back_invalid/                     [Kernel PMU event]
  hisi_sccl1_l3c10/prefetch_drop/                    [Kernel PMU event]
  [...]
  hisi_sccl1_l3c11/back_invalid/                     [Kernel PMU event]
  hisi_sccl1_l3c11/prefetch_drop/                    [Kernel PMU event]
  [...]

我們在做性能分析的時候,首先要看懂這些統計,把這些項目和程序運行的CPU對應上。
現在依次介紹相關的概念。一個完整的服務器CPU系統(我們這裏不看IO),是由物理CPU,
物理CPU中的CPU die, CPU die上的一個個CPU core組成的。一般,物理CPU支持多個互聯
在一起,我們下面用chip表示一個物理CPU, 一個物理CPU裏可以有多個CPU die, 在uncore
event裏CPU die我們叫做sccl, 這裏的n是sccl的編號,其中chip0(主片)上的CPU die
分別叫sccl1和sccl3, chip1(從片)上的叫sccl5、sccl7,注意我們這裏舉例的系統一個
物理CPU裏有兩個CPU die。

一個sccl中的CPU core是四個聚集在一起成一個cluster,一般一個sccl裏有6個cluster,
那麼一個sccl就有24個core,一個物理CPU有48個core, 一個2P系統就有96個core。這些core
和DDR的連接如下圖, 他們通過HHA和DDRC連接,DDRC和DIM條連接。sccl之間通過HHA相連。
這些core和L3 cache的連接關係(這裏先不考慮L1, L2 cache)是一個sccl和一大塊L3相連,
在使用上,把這一大塊L3 cache分成幾個partition, 一般是有幾個cluster就分幾個partion,
一個cluster裏的core優先使用自己cluster對應的L3 partition,當然也可以使用其他的
L3 partion。

這樣,我們很好看懂上面的event,比如:

 hisi_sccl1_l3c11/back_invalid/                     [Kernel PMU event]

就表示,chip0上sccl1這個CPU die上L3 partition編號是11的back_invalid事件。一般,
一個sccl對應一個NUMA node節點,一個l3c後面的編號在一個sccl上是順序增加的。
比如,sccl1上的的各個l3c的編號是,l3c10, l3cll, l3c12, l3c13, l3c14, l3c15,那麼
l3c11對應的就是這個sccl1上的core4~core7。一般,sccl1對應的就是系統裏的node0,
sccl3對應node1,sccl5對應node2,sccl7對應node3。

使用numactl -H可以確定各個NUMA node裏的CPU編號,比如:

available: 4 nodes (0-3)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
node 0 size: 0 MB
node 0 free: 0 MB
node 1 cpus: 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
node 1 size: 31912 MB
node 1 free: 30275 MB
node 2 cpus: 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
node 2 size: 0 MB
node 2 free: 0 MB
node 3 cpus: 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
node 3 size: 32097 MB
node 3 free: 31514 MB
node distances:
node   0   1   2   3 
  0:  10  12  20  22 
  1:  12  10  22  24 
  2:  20  22  10  12 
  3:  22  24  12  10 

注意這個系統是128core的系統,無非是系統拓撲基本上不變,一個sccl裏多了2個cluster。

                               sccl1      sccl3                 sccl5         sccl7
     DIM0 DIM1  DIM2 DIM3        /         /
       |  |       |  |          /  ...    /      chip0                               chip1
 +-----+--+-------+--+---------/---------/------------+   +-------------------------------+
 | +---+--+-------+--+--------/-+ +-----/-----------+ |   |                               |
 | | +-----+    +-----+      /  | |    /            | |   |                               |
 | | |DDRC0|    |DDRC1|     /   | |   /             | |   |                               |
 | | +---+-+    +-+---+    /    | |  /              | |   |                               |
 | |     |        |             | |                 | |   |                               |
 | |     +---+ +--+             | |                 | |   |                               |
 | |         | |                | |  ...            | |   |    ...                        |
 | |      +--+-+-+              | |                 | |   |                               |
 | |      | HHA0 +--------------+-+--               | |   |                               |
 | |      +--+---+              | |                 | |   |                               |
 | |         |         +------+ | |                 | |   |                               |
 | |   +-----+-----+   |      | | | +-----+-----+   | |   | +-----+-----+   +-----+-----+ |
 | |   |core0|core1|   |l3c<n>| | | |core0|core1|   | |   | |core0|core1|   |core0|core1| |
 | |   +-----+-----+---+      | | | +-----+-----+   | |   | +-----+-----+   +-----+-----+ |
 | |   |core2|core3|   +------+ | | |core2|core3|   | |   | |core2|core3|   |core2|core3| |
 | |   +-----+-----+   |      | | | +-----+-----+   | |   | +-----+-----+   +-----+-----+ |
 | |                   |...   | | |                 | |   |                               |
 | |   ...             |      | | | ...             | |   | ...             ...           |
 | |                   |      | | |                 | |   |                               |
 | |   +-----+-----+   |      | | | +-----+-----+   | |   | +-----+-----+   +-----+-----+ |
 | |   |core0|core1|   +------+ | | |core0|core1|   | |   | |core0|core1|   |core0|core1| |
 | |   +-----+-----+---+      | | | +-----+-----+   | |   | +-----+-----+   +-----+-----+ |
 | |   |core2|core3|   |l3c<n>| | | |core2|core3|   | |   | |core2|core3|   |core2|core3| |
 | |   +-----+-----+   |      | | | +-----+-----+   | |   | +-----+-----+   +-----+-----+ |
 | |         |         +------+ | |                 | |   |                               |
 | |      +--+---+              | |                 | |   |                               |
 | |      | HHA1 +--------------+-+--               | |   |                               |
 | |      +--+-+-+              | |  ...            | |   |    ...                        |
 | |         | |                | |                 | |   |                               |
 | |     +---+ +--+             | |                 | |   |                               |
 | |     |        |             | |                 | |   |                               |
 | | +---+-+   +--+--+          | |                 | |   |                               |
 | | |DDRC2|   |DDRC3|          | |                 | |   |                               |
 | | +-----+   +-----+          | |                 | |   |                               |
 | +--+--+-------+--+-----------+ +-----------------+ |   |                               |
 +----+--+-------+--+---------------------------------+   +-------------------------------+
      |  |       |  |               ...                     ...
    DIM0 DIM1  DIM2 DIM3

下面我們先看下L3 cache的各個event的含義:

  hisi_sccl1_l3c10/back_invalid/                     [Kernel PMU event]
  hisi_sccl1_l3c10/prefetch_drop/                    [Kernel PMU event]
  hisi_sccl1_l3c10/rd_cpipe/                         [Kernel PMU event]
  hisi_sccl1_l3c10/rd_hit_cpipe/                     [Kernel PMU event]
  hisi_sccl1_l3c10/rd_hit_spipe/                     [Kernel PMU event]
  hisi_sccl1_l3c10/rd_spipe/                         [Kernel PMU event]
  hisi_sccl1_l3c10/retry_cpu/                        [Kernel PMU event]
  hisi_sccl1_l3c10/retry_ring/                       [Kernel PMU event]
  hisi_sccl1_l3c10/victim_num/                       [Kernel PMU event]
  hisi_sccl1_l3c10/wr_cpipe/                         [Kernel PMU event]
  hisi_sccl1_l3c10/wr_hit_cpipe/                     [Kernel PMU event]
  hisi_sccl1_l3c10/wr_hit_spipe/                     [Kernel PMU event]
  hisi_sccl1_l3c10/wr_spipe/                         [Kernel PMU event]

rd_cpipe, rd_spipe可以表示CPU發出的所有請求數。
rd_hit_cpipe, rd_hit_spipe可以表示CPU發出的請求hit該L3 partition的數目。

發佈了154 篇原創文章 · 獲贊 18 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章