国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

linux之perf(2)list事件

這篇具有很好參考價(jià)值的文章主要介紹了linux之perf(2)list事件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Linux之perf(2)list事件

Author:Onceday Date:2023年9月3日

漫漫長(zhǎng)路,才剛剛開(kāi)始…

全系列文章請(qǐng)查看專欄: Perf性能分析_Once_day的博客-CSDN博客。

參考文檔:

  • Tutorial - Perf Wiki (kernel.org)
  • perf-list(1) - Linux manual page (man7.org)
1. 概述

perf list用于列出可用的性能事件,這些事件可以用于 perf record 和其他 perf 子命令的性能分析。性能事件包括硬件事件(如 CPU 周期、緩存未命中等)、軟件事件(如上下文切換、頁(yè)面錯(cuò)誤等)和跟蹤點(diǎn)事件(如內(nèi)核函數(shù)調(diào)用、用戶空間應(yīng)用程序的跟蹤等)。

 Usage: perf list [<options>] [hw|sw|cache|tracepoint|pmu|sdt|metric|metricgroup|event_glob]

    -d, --desc            Print extra event descriptions. --no-desc to not print.
    -j, --json            JSON encode events and metrics
    -v, --long-desc       Print longer event descriptions.
        --debug           Enable debugging output
        --deprecated      Print deprecated events.
        --details         Print information on the perf event names and expressions used internally by events.
        --unit <PMU name>
                          Limit PMU or metric printing to the specified PMU.

上面是在linux kernel6.2版本的perf list幫助輸出,perf工具和linux內(nèi)核以及硬件高度綁定,因此不同的內(nèi)核版本,虛擬機(jī),硬件環(huán)境下,perf list的輸出會(huì)有較大差別。許多性能事件是否可用,需要取決于當(dāng)前硬件和軟件環(huán)境。

perf工具支持一系列可測(cè)量的事件。該工具和底層內(nèi)核接口可以測(cè)量來(lái)自不同來(lái)源的事件。例如,有些事件是純內(nèi)核計(jì)數(shù)器,在這種情況下稱為軟件事件。例如:上下文切換、小故障。

事件的另一個(gè)來(lái)源是處理器本身及其性能監(jiān)控單元(PMU)。它提供了一個(gè)事件列表來(lái)測(cè)量微體系結(jié)構(gòu)事件,如周期數(shù)、指令退役、L1緩存缺失等。這些事件被稱為PMU硬件事件或簡(jiǎn)稱硬件事件。它們因處理器類型和型號(hào)而異。

perf_events接口還提供了一組常用的硬件事件名稱。在每個(gè)處理器上,如果這些事件存在,則將它們映射到CPU提供的實(shí)際事件上,否則無(wú)法使用事件。有些令人困惑的是,這些事件也稱為硬件事件(hardware event)和硬件緩存事件(hardware cache event)。

最后,還有由內(nèi)核ftrace基礎(chǔ)設(shè)施實(shí)現(xiàn)的tracepoint事件。這些僅在2.6.3 3x和更新的內(nèi)核中可用。

PMU硬件事件是特定于CPU的,并由CPU供應(yīng)商記錄。如果鏈接到libpfm4, perf工具庫(kù)會(huì)提供一些事件的簡(jiǎn)短描述。有關(guān)Intel和AMD處理器的PMU硬件事件列表,請(qǐng)參見(jiàn):

  • Intel? 64 and IA-32 Architectures Developer’s Manual: Vol. 3B
  • BIOS and Kernel Developer’s Guide (BKDG) For AMD Family 10h Processors

perf list列出來(lái)的這些事件就是本機(jī)設(shè)備上受支持性能事件,后面中括號(hào)里面就是具體的事件類型,這些事件可能會(huì)非常多,不同的賬戶權(quán)限執(zhí)行的結(jié)果也會(huì)有些不同。

對(duì)于非root用戶,通常只有上下文切換的PMU事件可用。這通常只是cpu PMU中的事件、預(yù)定義的事件(如周期和指令)以及一些軟件事件。其他pmu和全局測(cè)量通常僅為root可用。一些事件限定符,如“any”,也是root限定符。這可以通過(guò)設(shè)置kernel.perf_event_paranoid-1來(lái)修改(使用sysctl),允許非root用戶使用這些事件。為了訪問(wèn)跟蹤點(diǎn)事件,perf需要對(duì)/sys/kernel/debug/tracing具有讀訪問(wèn)權(quán)限,即使perf_event_paranoid處于寬松設(shè)置中也是如此。

1.1 打印指定PMU單元的事件

--unit <PMU name> 選項(xiàng)在使用 perf list 時(shí)用于將事件或指標(biāo)的輸出限制為特定的性能監(jiān)視單元(Performance Monitoring Unit,PMU)。PMU 是處理器的一個(gè)組件,它可以計(jì)數(shù)硬件事件,如執(zhí)行的指令、遭受的緩存未命中或錯(cuò)誤預(yù)測(cè)的分支。它們?yōu)閼?yīng)用程序分析提供了基礎(chǔ),可以追蹤動(dòng)態(tài)控制流并識(shí)別熱點(diǎn)。

以下是如何使用它的示例:

perf list --unit cpu

此命令將列出 CPU PMU 可用的所有事件或指標(biāo)。PMU 名稱需要事先知道,具體取決于硬件和內(nèi)核的支持。一些常見(jiàn)的 PMU 名稱包括 cpu、cache、bussoftware。

請(qǐng)記住,根據(jù)您的硬件和內(nèi)核配置,可能并非所有 PMU 都可用。

1.2 事件描述格式

--details會(huì)額外打印符號(hào)事件(cycles, cache-misses等)的內(nèi)部表達(dá)形式,如下:

  cache-misses OR cpu/cache-misses/                  [Kernel PMU event]
        cpu/event=0x64,umask=0x9/
  cpu-cycles OR cpu/cpu-cycles/                      [Kernel PMU event]
        cpu/event=0x76/

事件是用它們的符號(hào)名和可選的單位掩碼和修飾符來(lái)指定的。事件名稱(Event names)、單元掩碼(unit masks)和修飾符(modifiers)不區(qū)分大小寫(xiě)。一般的情況下,可以使用cache-misses這種符號(hào)形式來(lái)代替cpu/event=0x64,umask=0x9/這種格式。

默認(rèn)情況下,事件是在用戶和內(nèi)核級(jí)別度量的:

perf stat -e cycles dd if=/dev/zero of=/dev/null count=100000

若要僅在用戶級(jí)別進(jìn)行度量,則需要傳遞一個(gè)修飾符(u):

perf stat -e cycles:u dd if=/dev/zero of=/dev/null count=100000

要測(cè)量用戶和內(nèi)核(顯式地):

perf stat -e cycles:uk dd if=/dev/zero of=/dev/null count=100000

事件可以通過(guò)附加冒號(hào)和一個(gè)或多個(gè)修飾符來(lái)選擇具有修飾符。修飾符允許用戶限制何時(shí)對(duì)事件進(jìn)行計(jì)數(shù)。修飾符如下:

名稱標(biāo)識(shí) 描述
u user-space counting,用戶空間
k kernel counting,內(nèi)核空間
h hypervisor counting,虛擬機(jī)
I non idle counting,非空閑時(shí)
G guest counting (in KVM guests),KVM虛擬機(jī)
H host counting (not in KVM guests),KVM主機(jī)
p precise level,硬件事件精度級(jí)別
P use maximum detected precise level,使用最大檢測(cè)精度水平
S read sample value (PERF_SAMPLE_READ)讀取樣本值
D pin the event to the PMU,將事件綁定到PMU上
W 組是弱的,如果不可調(diào)度,將退回到非組
e 群組或事件是排他性的,不共享PMU

p修飾符可用于指定指令地址的精確程度。p修飾符可以被指定多次:

  • 0 - SAMPLE_IP可以任意滑動(dòng)
  • 1 - SAMPLE_IP必須有恒定的滑動(dòng)
  • 2 - SAMPLE_IP要求有O滑塊
  • 3 - SAMPLE_IP必須有0滑塊,或者使用隨機(jī)化來(lái)避免樣本副作用效果。

對(duì)于英特爾系統(tǒng),精確事件采樣是用PEBS實(shí)現(xiàn)的,它支持精確級(jí)別2,在某些特殊情況下支持精確級(jí)別3。

在AMD系統(tǒng)上,它是使用IBS實(shí)現(xiàn)的(最高精確級(jí)別到2)。精確修飾符與事件類型0x76 (cpu-cycles,CPU時(shí)鐘未停止)和0xC1(micro-ops retired)一起工作。

2. 詳細(xì)信息
2.1 perf list性能事件分類

默認(rèn)情況下,perf list列出所有的已知事件。也可以通過(guò)下面的類別來(lái)列出其中某一類事件:

事件類名稱 描述
hw or hardware 列出硬件事件,如cache-misses
sw or software 列出軟件事件,例如上下文切換(context switches)
cache or hwcache 列出硬件緩存事件,如L1-dcache-loads
tracepoint 列出所有的tracepoint事件,也可使用subsys_glob:event_glob去過(guò)濾子系統(tǒng)追蹤點(diǎn)事件,如sched、block等。
pmu 打印內(nèi)核提供的PMU事件
sdt 列出所有靜態(tài)定義的跟蹤點(diǎn)事件(Statically Defined Tracepoint)
metric 指標(biāo)列表(度量事件)
metricgroup 列出帶有指標(biāo)的指標(biāo)組
–raw-dump 顯示所有事件的原始格式信息,該選項(xiàng)后面可以接[hw|sw|cache|tracepoint|pmu|event_glob]
2.2 測(cè)量特定硬件上的PMU事件

本章詳細(xì)內(nèi)容可以參考文檔: perf-list(1) - Linux manual page (man7.org)

即使現(xiàn)在在perf中沒(méi)有符號(hào)形式的事件,也可以用特定于每個(gè)處理器的方式對(duì)其進(jìn)行編碼。

比如對(duì)于X86CPUs,要測(cè)量CPU硬件供應(yīng)商文檔中提供的實(shí)際PMU,可以傳遞十六進(jìn)制參數(shù)代碼:

perf stat -e r1a8 -a sleep 1
perf record -e r1a8 ...

有些處理器,比如AMD的處理器,支持大于一個(gè)字節(jié)的事件代碼和單元掩碼。在這種情況下,與事件配置參數(shù)對(duì)應(yīng)的位可以參考下面命令的結(jié)果:

 cat /sys/bus/event_source/devices/cpu/format/event

比如可能的命令如下:

perf record -e r20000038f -a sleep 1
perf record -e cpu/r20000038f/ ...
perf record -e cpu/r0x20000038f/ ...

有關(guān)于特定硬件上的PMU事件,需要參考處理器的說(shuō)明文檔來(lái)確定使用方法。

在下面的路徑可以查看可用的PMUs和它們的原始參數(shù):

ls /sys/devices/*/format

一些pmu不與核心相關(guān)聯(lián),而是與整個(gè)CPU socket相關(guān)聯(lián)。這些pmu上的事件通常不能采樣,只能使用perf stat -a進(jìn)行全局計(jì)數(shù)。它們可以綁定到一個(gè)邏輯CPU,但是會(huì)測(cè)量同一個(gè)插槽中的所有CPU。

本例在Intel Xeon系統(tǒng)的socket 0上的第一個(gè)內(nèi)存控制器上每秒測(cè)量?jī)?nèi)存帶寬:

perf stat -C 0 -a uncore_imc_0/cas_count_read/,uncore_imc_0/cas_count_write/ -I 1000 ...

每個(gè)內(nèi)存控制器都有自己的PMU。測(cè)量整個(gè)系統(tǒng)帶寬需要指定所有imc pmu(請(qǐng)參閱perf list output),并將這些值相加。為了簡(jiǎn)化多個(gè)事件的創(chuàng)建,在PMU名稱中支持前綴和全局匹配,并且在執(zhí)行匹配時(shí)也忽略前綴uncore_。因此,上面的命令可以通過(guò)使用以下語(yǔ)法擴(kuò)展到所有內(nèi)存控制器:

perf stat -C 0 -a imc/cas_count_read/,imc/cas_count_write/ -I 1000 ...
perf stat -C 0 -a *imc*/cas_count_read/,*imc*/cas_count_write/ -I 1000 ...
2.3 參數(shù)化的性能事件

有一些pmu事件列出來(lái)的時(shí)候,其顯示字符中帶有?號(hào)。如下:

hv_gpci/dtbp_ptitc,phys_processor_idx=?/

這意味著當(dāng)作為事件提供時(shí),?所指示的內(nèi)容必須也可提供。

 perf stat -C 0 -e 'hv_gpci/dtbp_ptitc,phys_processor_idx=0x2/' ...

此外還有可能指定額外的事件修飾符(percore):

perf stat -e cpu/event=0,umask=0x3,percore=1/

上面命令即匯總一個(gè)核心中所有硬件線程的事件計(jì)數(shù)。

2.4 事件組測(cè)量

當(dāng)活動(dòng)事件的數(shù)量超過(guò)硬件性能計(jì)數(shù)器的數(shù)量時(shí),Perf支持基于時(shí)間的事件復(fù)用。當(dāng)工作負(fù)載更改其執(zhí)行配置文件時(shí),多路復(fù)用可能導(dǎo)致測(cè)量錯(cuò)誤。

當(dāng)使用來(lái)自事件計(jì)數(shù)的公式計(jì)算度量時(shí),確保始終將一些事件作為一個(gè)組一起測(cè)量以最小化多路錯(cuò)誤是很有用的。事件組可以使用{}指定。

perf stat -e '{instructions,cycles}' ...

可用性能計(jì)數(shù)器的數(shù)量取決于CPU。一個(gè)組不能包含比可用計(jì)數(shù)器更多的事件。例如,Intel Core cpu通常有四個(gè)通用的核心性能計(jì)數(shù)器,加上三個(gè)固定的instructionscyclesref-cycles計(jì)數(shù)器。一些特殊事件對(duì)它們可以調(diào)度的計(jì)數(shù)器有限制,并且可能不支持單個(gè)組中的多個(gè)實(shí)例。當(dāng)組中指定的事件太多時(shí),其中一些事件將無(wú)法測(cè)量。

全局固定事件可以限制其他組可用的計(jì)數(shù)器數(shù)量。在x86系統(tǒng)上,NMI看門(mén)狗默認(rèn)固定一個(gè)計(jì)數(shù)器。NMI看門(mén)狗可以在root用戶下禁用:

echo 0 > /proc/sys/kernel/nmi_watchdog

來(lái)自多個(gè)不同pmu的事件不能混合在一個(gè)組中,軟件事件除外。

perf還支持使用:S說(shuō)明符進(jìn)行組領(lǐng)導(dǎo)抽樣(group leader sampling)。

perf record -e '{cycles,instructions}:S' ...
perf report --group

通常情況下,所有事件都在一個(gè)事件組樣本中,但是使用:S時(shí),只有第一個(gè)事件(leader)進(jìn)行采樣,它只讀取組中其他事件的值。然而,在AUX區(qū)域事件(例如Intel PT或CoreSight)的情況下,AUX區(qū)域事件必須是先導(dǎo)事件,因此第二個(gè)事件采樣,而不是第一個(gè)事件。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-698086.html

到了這里,關(guān)于linux之perf(2)list事件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 從小白到大神之路之學(xué)習(xí)運(yùn)維第64天--------Zabbix監(jiān)控mysql、ftp服務(wù)以及自定義配置

    從小白到大神之路之學(xué)習(xí)運(yùn)維第64天--------Zabbix監(jiān)控mysql、ftp服務(wù)以及自定義配置

    第三階段基礎(chǔ) 時(shí) ?間:2023年7月19日 參加人:全班人員 內(nèi) ?容: Zabbix監(jiān)控mysql、ftp服務(wù)以及自定義 ? 目錄 一、Zabbix監(jiān)控mysql數(shù)據(jù)庫(kù) 二、Zabbix監(jiān)控ftp服務(wù) 三、Zabbix自定義監(jiān)控項(xiàng) ????? 整體zabbix搭建完成,server端huyang1監(jiān)控自己以及監(jiān)控huyang3,切基于lamp平臺(tái),服務(wù)均開(kāi)啟 服

    2024年02月16日
    瀏覽(34)
  • 服務(wù)器內(nèi)存滿了解決之路

    服務(wù)器內(nèi)存滿了解決之路

    背景:大清早,突然一通電話吵醒,說(shuō)項(xiàng)目跑不了,還沒(méi)洗漱趕緊跑過(guò)來(lái),畢竟屬于實(shí)時(shí)在用的系統(tǒng)。排查發(fā)現(xiàn)系統(tǒng)盤(pán)滿了,數(shù)據(jù)寫(xiě)不進(jìn)去了,導(dǎo)致報(bào)錯(cuò)。接手的項(xiàng)目,從來(lái)沒(méi)考慮服務(wù)器問(wèn)題,那么就解決吧,一通百度。 df -h ? 查看內(nèi)存滿了 ?那就 du --max-depth=1 -h 查看哪個(gè)地

    2024年02月16日
    瀏覽(24)
  • 新手小白如何搭建帕魯/Palworld服務(wù)器?

    新手小白如何搭建帕魯/Palworld服務(wù)器?

    在深入討論如何為幻獸帕魯搭建服務(wù)器之前,我們需要了解這款游戲的基本特性。幻獸帕魯是一款以豐富游戲元素著稱的游戲,這些元素包括多樣的角色、獨(dú)特的技能系統(tǒng)、引人入勝的劇情線以及玩家間的交互等。這些豐富的游戲元素不僅為玩家提供了深度的游戲體驗(yàn),同時(shí)

    2024年02月21日
    瀏覽(22)
  • 自己搭建遠(yuǎn)程桌面服務(wù)器-RustDesk(小白版)

    自己搭建遠(yuǎn)程桌面服務(wù)器-RustDesk(小白版)

    此軟件主要功能為遠(yuǎn)程各種設(shè)備(其中包括Windows、macOS、Linux、iOS、Android、Web等) 支持文件傳輸(可直接拷貝遠(yuǎn)程電腦的文件,類似向日葵的遠(yuǎn)程文件) 支持內(nèi)網(wǎng)穿透(支持端口映射,TCP/UDP,支持Windows默認(rèn)遠(yuǎn)程桌面應(yīng)用) 最主要優(yōu)點(diǎn)為可遠(yuǎn)程Android,本人最愛(ài),簡(jiǎn)單配置,

    2024年02月01日
    瀏覽(37)
  • 爬蟲(chóng)小白入門(mén)在服務(wù)器上-部署爬蟲(chóng)或者開(kāi)服務(wù)接口并供給他人訪問(wèn)

    爬蟲(chóng)小白入門(mén)在服務(wù)器上-部署爬蟲(chóng)或者開(kāi)服務(wù)接口并供給他人訪問(wèn)

    一、準(zhǔn)備工作-服務(wù)器 1、先準(zhǔn)備一個(gè)服務(wù)器(以阿里云為例子) 1、先準(zhǔn)備一個(gè)云服務(wù)器,比如阿里云服務(wù)器新人免費(fèi)使用3個(gè)月 , 或者騰訊云服務(wù)器,又或者華為云服務(wù)器都可以, 但是提醒注意下,新用戶的首單資格優(yōu)惠力度最大,所以最好在一年有活動(dòng)的時(shí)候買(mǎi),比如61

    2024年02月17日
    瀏覽(17)
  • RustDesk自建遠(yuǎn)程服務(wù)器(全網(wǎng)最詳細(xì)小白教學(xué))

    RustDesk自建遠(yuǎn)程服務(wù)器(全網(wǎng)最詳細(xì)小白教學(xué))

    分別在windows和unbuntu安裝RustDesk客戶端,下面是官網(wǎng)地址。 RustDesk | 開(kāi)源遠(yuǎn)程桌面軟件 https://rustdesk.com/zh/ Rusk Desk的路徑查看方式,在終端使用type rustdesk命令查看 ?輸入命令: gnome-session-properties ?打開(kāi)啟動(dòng)應(yīng)用程序首選項(xiàng)窗口,點(diǎn)擊添加按鈕,在命令中輸入RuskDesk的路徑(/usr

    2024年02月03日
    瀏覽(31)
  • 小白的實(shí)驗(yàn)室服務(wù)器深度學(xué)習(xí)環(huán)境配置指南

    小白的實(shí)驗(yàn)室服務(wù)器深度學(xué)習(xí)環(huán)境配置指南

    本文在ubuntu server 22.04上實(shí)驗(yàn)成功,其他版本僅供參考 注意,本文僅適用于ubuntu server,不需要圖形界面,沒(méi)有對(duì)圖形界面進(jìn)行特殊考慮和驗(yàn)證!依賴圖形操作界面的讀者慎用 若沒(méi)有安裝,則輸入下面的命令,直接把包括gcc在內(nèi)很多開(kāi)發(fā)工具包一同安裝 編輯 /etc/modprobe.d/black

    2024年02月03日
    瀏覽(45)
  • mac本地終端如何連接騰訊云服務(wù)器(小白專用)

    mac本地終端如何連接騰訊云服務(wù)器(小白專用)

    在這里替大家踩坑了,希望對(duì)大家有幫助,雖然簡(jiǎn)單,但新人一開(kāi)始都是這樣子的,都會(huì)無(wú)從下手。我從新手的角度,說(shuō)一下我在配置過(guò)程中遇到的一些需要注意的點(diǎn) 確保你的服務(wù)器是運(yùn)行的,不然怎么樣都會(huì)連不上的 以下是詳細(xì)步驟: 如果你剛買(mǎi)這臺(tái)服務(wù)器,最好就是重

    2024年02月04日
    瀏覽(25)
  • 新手小白如何租用GPU云服務(wù)器跑深度學(xué)習(xí)

    新手小白如何租用GPU云服務(wù)器跑深度學(xué)習(xí)

    最近剛學(xué)深度學(xué)習(xí),自己電腦的cpu版本的pytorch最多跑個(gè)LexNet,AlexNet直接就跑不動(dòng)了,但是作業(yè)不能不寫(xiě),實(shí)驗(yàn)不能不做。無(wú)奈之下,上網(wǎng)發(fā)現(xiàn)還可以租服務(wù)器這種操作,我租的服務(wù)器每小時(shí)0.78人民幣,簡(jiǎn)直是發(fā)現(xiàn)新大陸,又省下一大筆錢(qián),太開(kāi)心了吧(啪,什么亂七八糟的

    2023年04月15日
    瀏覽(22)
  • 大數(shù)據(jù)菜鳥(niǎo)之路(5臺(tái)服務(wù)器免密配置)

    將前面準(zhǔn)備好的linux7.5 的服務(wù)器復(fù)制4臺(tái) 五臺(tái)服務(wù)器,準(zhǔn)備hadoop的HA 集群,因此101 ,103 作namenode vim /etc/hosts 1)將原來(lái)清空,將自己映射放進(jìn)來(lái): demo : 192.168.10.101 hadoop101 192.168.10.102 hadoop102 192.168.10.103 hadoop103 192.168.10.104 hadoop104 192.168.10.105 hadoop105 改完source 文件 或者 reboot 重啟

    2024年01月16日
    瀏覽(14)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包