最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

perf基本使用功能

2022-08-28 16:35 作者:限量版范兒  | 我要投稿

perf top

用于實時顯示當(dāng)前系統(tǒng)的性能統(tǒng)計信息。該命令主要用來觀察整個系統(tǒng)當(dāng)前的狀態(tài),比如可以通過查看該命令的輸出來查看當(dāng)前系統(tǒng)最耗時的內(nèi)核函數(shù)或某個用戶進程

再往下看是一個表格式樣的數(shù)據(jù),每一行包含四列,分別是:

第一列 Overhead ,是該符號的性能事件在所有采樣中的比例,用百分比來表示。 第二列 Shared ,是該函數(shù)或指令所在的動態(tài)共享對象(Dynamic Shared Object),如內(nèi)核、進程名、動態(tài)鏈接庫名、內(nèi)核模塊名等。 第三列 Object ,是動態(tài)共享對象的類型。比如 [.] 表示用戶空間的可執(zhí)行程序、或者動態(tài)鏈接庫,而 [k] 則表示內(nèi)核空間。 最后一列 Symbol 是符號名,也就是函數(shù)名。當(dāng)函數(shù)名未知時,用十六進制的地址來表示。

perf stat

通過概括精簡的方式提供被調(diào)試程序運行的整體情況和匯總數(shù)據(jù)

Task-clock-msecs:CPU 利用率,該值高,說明程序的多數(shù)時間花費在 CPU 計算上而非 IO。 Context-switches:進程切換次數(shù),記錄了程序運行過程中發(fā)生了多少次進程切換,頻繁的進程切換是應(yīng)該避免的。 Cache-misses:程序運行過程中總體的 cache 利用情況,如果該值過高,說明程序的 cache 利用不好 CPU-migrations:表示進程 t1 運行過程中發(fā)生了多少次 CPU 遷移,即被調(diào)度器從一個 CPU 轉(zhuǎn)移到另外一個 CPU 上運行。 Cycles:處理器時鐘,一條機器指令可能需要多個 cycles, Instructions: 機器指令數(shù)目。 IPC:是 Instructions/Cycles 的比值,該值越大越好,說明程序充分利用了處理器的特性。 Cache-references: cache 命中的次數(shù) Cache-misses: cache 失效的次數(shù)。

注:通過指定 -e 選項,您可以改變 perf stat 的缺省事件

perf probe

perf-porbe 定義新的動態(tài)的tracepoint
大致用法:

perf probe [options] --add='PROBE' [...] perf probe [options] PROBE perf probe [options] --del = perf probe --list perf porbe --vars

這條命令

1)在不借助debuginfo的前提下,使用符號和寄存器信息定義動態(tài)的tracepoint;

2)借助debuginfo的信息,使用c表達式來動態(tài)地確定出

先看下kprobe是否打開

root@ecs-148531:/home/i# sudo cat /boot/config-$(uname -r) | grep -i kprobe CONFIG_KPROBES=y CONFIG_KPROBES_ON_FTRACE=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KPROBES_ON_FTRACE=y CONFIG_KPROBE_EVENTS=y # CONFIG_KPROBE_EVENTS_ON_NOTRACE is not set CONFIG_BPF_KPROBE_OVERRIDE=y # CONFIG_KPROBES_SANITY_TEST is not set # CONFIG_SAMPLE_KPROBES is not set root@ecs-148531:/home/i#

然后 比如打開kprobe追蹤 tcp_sendmsg

root@ecs-148531:/home/i# sudo perf probe --add tcp_sendmsg -f Added new event: ?probe:tcp_sendmsg_1 ?(on tcp_sendmsg) You can now use it in all perf tools, such as: ? ? ? ?perf record -e probe:tcp_sendmsg_1 -aR sleep 1 root@ecs-148531:/home/i#

記錄追蹤的數(shù)據(jù)到perf.data文件

root@ecs-148531:/home/i# perf record -e probe:tcp_sendmsg_1 -aR sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.245 MB perf.data (12 samples) ] root@ecs-148531:/home/i# ls perf.data perf.data

查看數(shù)據(jù)

root@ecs-148531:/home/i# perf script ? ? ? ? ? ?sshd 273406 [001] 19292974.395979: probe:tcp_sendmsg_1: (ffffffff869ca330) ? ? ? ? ? ?sshd 273406 [001] 19292974.397396: probe:tcp_sendmsg_1: (ffffffff869ca330) ? ? ? ? ? ?sshd 273406 [001] 19292974.397546: probe:tcp_sendmsg_1: (ffffffff869ca330) ? ? ? ? ? ?sshd 273406 [001] 19292974.399462: probe:tcp_sendmsg_1: (ffffffff869ca330) ? ? ? ? ? ?sshd 273406 [001] 19292974.417027: probe:tcp_sendmsg_1: (ffffffff869ca330) ? ? ? ? ? ?sshd 273406 [001] 19292974.417365: probe:tcp_sendmsg_1: (ffffffff869ca330) ? ? ? ? ? ?sshd 273406 [001] 19292974.417518: probe:tcp_sendmsg_1: (ffffffff869ca330) ? ? ? ? ? ?sshd 273406 [001] 19292974.418329: probe:tcp_sendmsg_1: (ffffffff869ca330) ? ? ? ? ? ?sshd 273406 [001] 19292974.418507: probe:tcp_sendmsg_1: (ffffffff869ca330) ? ? ? ? ? ?sshd 273406 [001] 19292974.421884: probe:tcp_sendmsg_1: (ffffffff869ca330) ? ? ? ? ? ?sshd 273406 [001] 19292974.422054: probe:tcp_sendmsg_1: (ffffffff869ca330) ? ? ? ? ? ?sshd 273406 [001] 19292974.476894: probe:tcp_sendmsg_1: (ffffffff869ca330)

再跟蹤一個函數(shù)do_sys_open

i@ecs-148531:~$ sudo perf probe --add do_sys_open -f Added new event: ?probe:do_sys_open_2 ?(on do_sys_open) You can now use it in all perf tools, such as: ? ? ? ?perf record -e probe:do_sys_open_2 -aR sleep 1 i@ecs-148531:~$ sudo perf record -e probe:do_sys_open_2 -aR sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.240 MB perf.data (24 samples) ] i@ecs-148531:~$ sudo perf script ? ? ? ? ? ?perf 489024 [001] 19294363.211799: probe:do_sys_open_2: (ffffffff862db420) ? ? ? ? ? sleep 489027 [000] 19294363.212219: probe:do_sys_open_2: (ffffffff862db420) ? ? ? ? ? sleep 489027 [000] 19294363.212233: probe:do_sys_open_2: (ffffffff862db420) ? ? ? ? ? sleep 489027 [000] 19294363.212468: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.446651: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.446742: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.446788: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.446855: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.446919: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.446973: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.447024: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.447075: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.447134: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.447185: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.447237: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.447287: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.447338: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.447388: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.447439: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.447490: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.447541: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.447593: probe:do_sys_open_2: (ffffffff862db420) ? ? ? hostguard 471124 [000] 19294363.447644: probe:do_sys_open_2: (ffffffff862db420) ? ? ? ?ilogtail 1294671 [000] 19294364.153081: probe:do_sys_open_2: (ffffffff862db420) i@ecs-148531:~$

接下來看下用uprobe來trace userland的函數(shù),比如

#perf probe -x /lib/x86_64-linux-gnu/libc.so.6 malloc

這個trace libc.so這個動態(tài)庫的malloc調(diào)用。我們可以看到,上述命令已經(jīng)生效。

root@ecs-148531:/home/i# cat /sys/kernel/debug/tracing/uprobe_events p:probe_libc/malloc /usr/lib/x86_64-linux-gnu/libc-2.31.so:0x000000000009d260

開始記錄

root@ecs-148531:/home/i# perf record -e probe_libc:malloc -aR sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.264 MB perf.data (237 samples) ] root@ecs-148531:/home/i#

察看結(jié)果

? #perf script ? ? sleep 495936 [001] 19347149.645089: probe_libc:malloc: (7f86f8af9260) ? ? mosh-server 489795 [001] 19347149.976167: probe_libc:malloc: (7f6cfe66b260) ? ? mosh-server 489795 [001] 19347149.976178: probe_libc:malloc: (7f6cfe66b260)

perf trace

perf trace有類似于strace功能,可以實時監(jiān)控程序的系統(tǒng)調(diào)用:

# perf trace ./a.out 0.032 ( 0.002 ms): a.out/7673 brk( ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?) = 0x1e6b000 0.051 ( 0.005 ms): a.out/7673 access(filename: 0xb7c1cb00, mode: R ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?) = -1 ENOENT No such file or directory 0.063 ( 0.005 ms): a.out/7673 open(filename: 0xb7c1a7b7, flags: CLOEXEC ? ? ? ? ? ? ? ? ? ? ? ? ? ? ) = 3 0.070 ( 0.002 ms): a.out/7673 fstat(fd: 3, statbuf: 0x7ffffb72bc80 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?) = 0 0.073 ( 0.004 ms): a.out/7673 mmap(len: 38436, prot: READ, flags: PRIVATE, fd: 3 ? ? ? ? ? ? ? ? ? ?) = 0x7f18b7e15000 0.079 ( 0.001 ms): a.out/7673 close(fd: 3 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ) = 0 0.087 ( 0.005 ms): a.out/7673 open(filename: 0xb7e21ec0, flags: CLOEXEC ? ? ? ? ? ? ? ? ? ? ? ? ? ? ) = 3 0.093 ( 0.003 ms): a.out/7673 read(fd: 3, buf: 0x7ffffb72be28, count: 832 ? ? ? ? ? ? ? ? ? ? ? ? ? ) = 832 0.099 ( 0.002 ms): a.out/7673 fstat(fd: 3, statbuf: 0x7ffffb72bcc0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?) = 0 0.102 ( 0.003 ms): a.out/7673 mmap(len: 8192, prot: READ|WRITE, flags: PRIVATE|ANONYMOUS, fd: -1 ? ?) = 0x7f18b7e13000 0.110 ( 0.004 ms): a.out/7673 mmap(len: 2283024, prot: EXEC|READ, flags: PRIVATE|DENYWRITE, fd: 3 ? ) = 0x7f18b79cf000 0.116 ( 0.007 ms): a.out/7673 mprotect(start: 0x7f18b79fc000, len: 2093056 ? ? ? ? ? ? ? ? ? ? ? ? ?) = 0 0.125 ( 0.005 ms): a.out/7673 mmap(addr: 0x7f18b7bfb000, len: 8192, prot: READ|WRITE, flags: PRIVATE|DENYWRITE|FIXED, fd: 3, off: 180224) = 0x7f18b7bfb000 0.142 ( 0.002 ms): a.out/7673 close(fd: 3 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ) = 0 0.153 ( 0.006 ms): a.out/7673 open(filename: 0xb7e134c0, flags: CLOEXEC ? ? ? ? ? ? ? ? ? ? ? ? ? ? ) = 3 0.161 ( 0.003 ms): a.out/7673 read(fd: 3, buf: 0x7ffffb72bdf8, count: 832 ? ? ? ? ? ? ? ? ? ? ? ? ? ) = 832 0.165 ( 0.002 ms): a.out/7673 fstat(fd: 3, statbuf: 0x7ffffb72bc90 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?) = 0 0.169 ( 0.005 ms): a.out/7673 mmap(len: 2216432, prot: EXEC|READ, flags: PRIVATE|DENYWRITE, fd: 3 ? ) = 0x7f18b77b1000 ......

鏈接:https://www.dianjilingqu.com/505038.html

perf基本使用功能的評論 (共 條)

分享到微博請遵守國家法律
吉安市| 东安县| 普安县| 永新县| 和林格尔县| 怀安县| 镇沅| 永寿县| 澎湖县| 喀什市| 台中县| 墨玉县| 江达县| 梁平县| 冷水江市| 南澳县| 三亚市| 唐海县| 忻城县| 新民市| 灵丘县| 金阳县| 闵行区| 通化县| 汉源县| 新昌县| 曲沃县| 沅江市| 九龙城区| 资兴市| 和林格尔县| 安福县| 铁岭市| 黄梅县| 科技| 无为县| 龙胜| 鞍山市| 宜城市| 若尔盖县| 井陉县|