iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0
Software Development

RISC-V: 深入淺出從入門到放棄系列 第 27

Day27: 你所應該知道的 perf 介紹及使用

  • 分享至 

  • xImage
  •  
tags: 鐵人賽

0. 前言

今天開始聊聊perf,不免俗當然要介紹一下perf是甚麼?perf可以用在哪?perf要怎麼使用?都會在接下來的幾天慢慢介紹,另外也會介紹risc-v近期有新增的extension Sscofpmf,主要是處理過去counter overflow時無法處理的一些情形,當然前因後果會慢慢說明,就讓我們看下去吧~

1. perf 是甚麼

首先介紹perf是甚麼,其實可以直接google,或許就可以找到想要的答案,而筆者這邊是將網路上的資訊彙整理解之後,弄成自己理解的方式去表達,或許可以讓不同的人理解相同的事物,介紹不見得專業也請包涵囉。
OK除去屁話之後直接正題吧~

Perf 全名是 Performance Event,應用程式可以利用 PMU (Performance Monitoring Unit), tracepoint 和核心內部的特殊計數器 (counter) 來進行統計,另外還能同時分析運行中的核心程式碼,從而更全面了解應用程式中的效能瓶頸,以上引用 Jserv 老師。

簡單來說 perf 就是一個測量的工具,讓你可以快速知道目前程式碼的瓶頸在哪邊,
而該要如何安裝呢,可以參考下方 reference 的文章,如果是 host 端也可以直接對terminal下,perf相關指令e.g. perf list,系統會說需要甚麼直接安裝即可,確認是否安裝成功可以下perf list看有沒有event跳出來就知啦~

2. perf 用法

perf 最常用的有兩種

  • perf stat
    • 簡單用法,for example
    • perf stat ls
      此時便會跳出約10種預設的event的相關紀錄,如果想要針對指定event,可以下 -e
  • perf record
    • perf record需搭配perf report做使用,record是紀錄熱點函數相關處理,使用完perf record 會產生出perf.data,而使用perf report則會尋找當下的perf.data檔案,然後把它印出來
    • for example:
      • perf record -e cache-misses ./test
      • perf report

順利執行的話會出現以下資訊:

此時應該便能看到一些相關資訊,-e表示指定特定event做紀錄,如果只想針對kernel space或是user space可以在event後面下 event:[u|k]
* for example:
* perf record -e cache-misses:k ./test


更多不同選項可以參考上圖,有只跑在kernel space的:k,也有只跑在kuser space的:u,其他筆者沒這麼常用就不班門弄斧了。

上面先介紹如何使用,現在來說明一下stat 以及record的差別,使用stat可以讓你快速知道此程式所發生的狀況,如:想了解cache-miss或是page fault所發生的狀況皆可以用stat做一個快速地測量,而與record不同的是record是採sample的方式進行一個量測,每X次進行一次捕捉的動作,該數可以下 -c 自行決定,可以更細微的針對每個函數所發生的狀況作分析。

3. reference

Linux 效能分析工具: Perf
linux 下的內核測試工具——perf使用簡介
系統級性能分析工具 — Perf
在 Linux 上使用 Perf 做效能分析(入門篇)
使用 perf_events 分析程式效能

後記

今天簡單做了perf的介紹,說實話挺陽春的,但因為這不是筆者想聚焦的點,此外也有許多文章對這些介紹,已經有非常深入的探究,因此這邊就不大作文章了,這邊簡單說明了幾個常見用法。
明天我們開始針對risc-v架構上的perf做說明,會介紹到在risc-v架構上使用perf會有甚麼限制情況呢,以及該如何解決~明天見!


上一篇
DAY26: RISC-V: riscv is getting MSI
下一篇
DAY:28 perf(二)在risc-v上的限制
系列文
RISC-V: 深入淺出從入門到放棄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言