加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – perf在用户和内核级别测量事件的选项是什么意思?

发布时间:2020-05-27 20:37:39 所属栏目:Linux 来源:互联网
导读:Linux perf工具提供对CPU事件计数器的访问.它允许您指定要计数的事件以及何时计算这些事件.https://perf.wiki.kernel.org/index.php/Tutorial By default, events are measured at both user and kernel levels: perf stat -

Linux perf工具提供对CPU事件计数器的访问.它允许您指定要计数的事件以及何时计算这些事件.

https://perf.wiki.kernel.org/index.php/Tutorial

By default,events are measured at both user and kernel levels:

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

To measure only at the user level,it is necessary to pass a modifier:

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

To measure both user and kernel (explicitly):

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

从这一点开始,我预计这些周期:你的意思是“只运行非内核代码时才计算事件”,记录的计数不会映射到内核符号,但似乎并非如此.

这是一个例子:

perf record -e cycles:u du -sh ~
[...]
perf report --stdio -i perf.data
[...]
9.24%  du       [kernel.kallsyms]  [k] system_call
[...]
0.70%  du       [kernel.kallsyms]  [k] page_fault
[...]

如果我这样做但使用循环:uk然后我会报告更多的内核符号,所以事件修饰符确实有效.使用周期:k生成几乎只有内核符号的报告,但它确实包含一些libc符号.

这里发生了什么?这是预期的行为吗?我是否误解了链接文档中使用的语言?

链接文档还包括此表,如果有帮助,则使用略有不同的描述:

06001

编辑:更多信息:

CPU是Intel Haswell.具体型号为i7-5820K.

Distro是最新的Arch Linux(滚动版本计划),内核为4.1.6.

perf本身的版本是4.2.0.

EDIT2:

示例运行的输出更多.如您所见,周期:您主要报告非内核符号.我知道当您查看带注释的程序集输出时,perf有时会将错误属性计数到相邻指令.也许这是相关的?

周期:U

# perf record -e cycles:u du -sh ~
179G    /home/khouli
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.116 MB perf.data (2755 samples) ]
# sudo perf report --stdio -i perf.data
# To display the perf.data header info,please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 2K of event 'cycles:u'
# Event count (approx.): 661835375
#
# Overhead  Command  Shared Object      Symbol
# ........  .......  .................  ..............................
#
    11.02%  du       libc-2.22.so       [.] _int_malloc
     9.73%  du       libc-2.22.so       [.] _int_free
     9.24%  du       du                 [.] fts_read
     9.23%  du       [kernel.kallsyms]  [k] system_call
     4.17%  du       libc-2.22.so       [.] strlen
     4.17%  du       libc-2.22.so       [.] __memmove_sse2
     3.47%  du       libc-2.22.so       [.] __readdir64
     3.33%  du       libc-2.22.so       [.] malloc_consolidate
     2.87%  du       libc-2.22.so       [.] malloc
     1.83%  du       libc-2.22.so       [.] msort_with_tmp.part.0
     1.63%  du       libc-2.22.so       [.] __memcpy_avx_unaligned
     1.63%  du       libc-2.22.so       [.] __getdents64
     1.52%  du       libc-2.22.so       [.] free
     1.47%  du       libc-2.22.so       [.] __memmove_avx_unaligned
     1.44%  du       du                 [.] 0x000000000000e609
     1.41%  du       libc-2.22.so       [.] _wordcopy_bwd_dest_aligned
     1.19%  du       du                 [.] 0x000000000000e644
     0.93%  du       libc-2.22.so       [.] __fxstatat64
     0.85%  du       libc-2.22.so       [.] do_fcntl
     0.73%  du       [kernel.kallsyms]  [k] page_fault
[lots more symbols,almost all in du...]

周期:英国

# perf record -e cycles:uk du -sh ~
179G    /home/khouli
[ perf record: Woken up 1 times to write data ]
[ext4] with build id 0f47443e26a238299e8a5963737da23dd3530376 not found,continuing without symbols
[ perf record: Captured and wrote 0.120 MB perf.data (2856 samples) ]
# perf report --stdio -i perf.data
# To display the perf.data header info,please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 2K of event 'cycles:uk'
# Event count (approx.): 3118065867
#
# Overhead  Command  Shared Object      Symbol
# ........  .......  .................  ..............................................
#
    13.80%  du       [kernel.kallsyms]  [k] __d_lookup_rcu
     6.16%  du       [kernel.kallsyms]  [k] security_inode_getattr
     2.52%  du       [kernel.kallsyms]  [k] str2hashbuf_signed
     2.43%  du       [kernel.kallsyms]  [k] system_call
     2.35%  du       [kernel.kallsyms]  [k] half_md4_transform
     2.31%  du       [kernel.kallsyms]  [k] ext4_htree_store_dirent
     1.97%  du       [kernel.kallsyms]  [k] copy_user_enhanced_fast_string
     1.96%  du       libc-2.22.so       [.] _int_malloc
     1.93%  du       du                 [.] fts_read
     1.90%  du       [kernel.kallsyms]  [k] system_call_after_swapgs
     1.83%  du       libc-2.22.so       [.] _int_free
     1.44%  du       [kernel.kallsyms]  [k] link_path_walk
     1.33%  du       libc-2.22.so       [.] __memmove_sse2
     1.19%  du       [kernel.kallsyms]  [k] _raw_spin_lock
     1.19%  du       [kernel.kallsyms]  [k] __fget_light
     1.12%  du       [kernel.kallsyms]  [k] kmem_cache_alloc
     1.12%  du       [kernel.kallsyms]  [k] __ext4_check_dir_entry
     1.05%  du       [kernel.kallsyms]  [k] lockref_get_not_dead
     1.02%  du       [kernel.kallsyms]  [k] generic_fillattr
     0.95%  du       [kernel.kallsyms]  [k] do_dentry_open
     0.95%  du       [kernel.kallsyms]  [k] path_init
     0.95%  du       [kernel.kallsyms]  [k] lockref_put_return
     0.91%  du       libc-2.22.so       [.] do_fcntl
     0.91%  du       [kernel.kallsyms]  [k] ext4_getattr
     0.91%  du       [kernel.kallsyms]  [k] rb_insert_color
     0.88%  du       [kernel.kallsyms]  [k] __kmalloc
     0.88%  du       libc-2.22.so       [.] __readdir64
     0.88%  du       libc-2.22.so       [.] malloc
     0.84%  du       [kernel.kallsyms]  [k] ext4fs_dirhash
     0.84%  du       [kernel.kallsyms]  [k] __slab_free
     0.84%  du       [kernel.kallsyms]  [k] in_group_p
     0.81%  du       [kernel.kallsyms]  [k] get_empty_filp
     0.77%  du       libc-2.22.so       [.] malloc_consolidate
[more...]

周期:K

# perf record -e cycles:k du -sh ~
179G    /home/khouli
[ perf record: Woken up 1 times to write data ]
[ext4] with build id 0f47443e26a238299e8a5963737da23dd3530376 not found,continuing
without symbols
[ perf record: Captured and wrote 0.118 MB perf.data (2816 samples) ]
# perf report --stdio -i perf.data
# To display the perf.data header info,please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 2K of event 'cycles:k'
# Event count (approx.): 2438426748
#
# Overhead  Command  Shared Object      Symbol
# ........  .......  .................  ..............................................
#
    17.11%  du       [kernel.kallsyms]  [k] __d_lookup_rcu
     6.97%  du       [kernel.kallsyms]  [k] security_inode_getattr
     4.22%  du       [kernel.kallsyms]  [k] half_md4_transform
     3.10%  du       [kernel.kallsyms]  [k] str2hashbuf_signed
     3.01%  du       [kernel.kallsyms]  [k] system_call_after_swapgs
     2.59%  du       [kernel.kallsyms]  [k] ext4_htree_store_dirent
     2.24%  du       [kernel.kallsyms]  [k] copy_user_enhanced_fast_string
     2.14%  du       [kernel.kallsyms]  [k] lockref_get_not_dead
     1.86%  du       [kernel.kallsyms]  [k] ext4_getattr
     1.85%  du       [kernel.kallsyms]  [k] kfree
     1.68%  du       [kernel.kallsyms]  [k] __ext4_check_dir_entry
     1.53%  du       [kernel.kallsyms]  [k] __fget_light
     1.34%  du       [kernel.kallsyms]  [k] link_path_walk
     1.34%  du       [kernel.kallsyms]  [k] path_init
     1.22%  du       [kernel.kallsyms]  [k] __kmalloc
     1.22%  du       [kernel.kallsyms]  [k] kmem_cache_alloc
     1.14%  du       [kernel.kallsyms]  [k] do_dentry_open
     1.11%  du       [kernel.kallsyms]  [k] ext4_readdir
     1.07%  du       [kernel.kallsyms]  [k] __find_get_block_slow
     1.07%  du       libc-2.22.so       [.] do_fcntl
     1.04%  du       [kernel.kallsyms]  [k] _raw_spin_lock
     0.99%  du       [kernel.kallsyms]  [k] _raw_read_lock
     0.95%  du       libc-2.22.so       [.] __fxstatat64
     0.94%  du       [kernel.kallsyms]  [k] rb_insert_color
     0.94%  du       [kernel.kallsyms]  [k] generic_fillattr
     0.93%  du       [kernel.kallsyms]  [k] ext4fs_dirhash
     0.93%  du       [kernel.kallsyms]  [k] find_get_entry
     0.89%  du       [kernel.kallsyms]  [k] rb_next
     0.89%  du       [kernel.kallsyms]  [k] is_dx_dir
     0.89%  du       [kernel.kallsyms]  [k] in_group_p
     0.89%  du       [kernel.kallsyms]  [k] cp_new_stat
   [more...]

perf_event_paranoid

$cat /proc/sys/kernel/perf_event_paranoid
1

内核配置为perf

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读