如何使用perf

首先使用命令 

1

sudo yum install perf

安装perf,后使用命令

1

perf list

查看perf事件列表。

要使用`perf`确定程序的性能瓶颈,可以尝试以下方法:

1. 使用perf record进行采样:运行`perf record`命令来采集程序的性能数据。你可以选择记录特定的性能事件,比如CPU周期、缓存命中、指令数等。示例命令如下:

perf record -e cpu-cycles -g ./your_program

这将记录程序执行期间的CPU周期,并且使用`-g`选项记录函数调用关系。

2. 分析性能数据:运行`perf report`命令来分析采集到的性能数据。这将显示程序在哪些函数中花费了大量的CPU周期。你可以查看函数调用图,找出哪些函数是瓶颈。

perf report

3. 使用perf annotate查看函数源码:在perf report中,你可以使用`perf annotate`命令查看具体函数的源代码,并了解每行代码消耗了多少CPU周期。

perf annotate -l

4. 优化性能瓶颈:一旦找到了性能瓶颈,就可以尝试优化代码。可能的优化包括减少函数调用次数、优化算法、减少内存访问等。

通过以上步骤,你可以使用`perf`工具确定程序的性能瓶颈,并进行相应的优化。

如果你的程序已经在运行中,你可以使用 `perf record` 命令来记录程序执行期间的 CPU 周期,并记录函数调用关系。以下是具体步骤:

1. **查找正在运行的程序的进程 ID(PID)**:首先,你需要查找正在运行的程序的进程 ID。你可以使用 `ps` 命令来查找特定程序的 PID,例如:

ps aux | grep your_program

这将显示包含你的程序名称的行,其 PID 通常显示在第二列。

2. **使用 perf record 记录程序执行期间的 CPU 周期和函数调用关系**:一旦你知道了程序的 PID,你可以使用 `perf record` 命令记录程序执行期间的 CPU 周期和函数调用关系。例如:

perf record -g -p <PID>

在这个命令中,`-g` 选项用于记录函数调用关系,`-p <PID>` 用于指定要记录的进程的 PID。

3. 等待程序执行完成:让程序继续运行,直到你认为已经记录了足够的数据或者程序执行完成。

以下是预定义事件的列表,可用于 -e 选项:
软件事件:
alignment-faults:对齐错误
bpf-output:BPF程序输出
context-switches 或 cs:上下文切换
cpu-clock:CPU时钟周期
cpu-migrations 或 migrations:CPU迁移
dummy:虚拟事件,用于测试和调试
emulation-faults:模拟错误
major-faults:主要错误
minor-faults:次要错误
page-faults 或 faults:页面错误
task-clock:任务时钟
内核 PMU 事件:
msr/smi/:MSR(Model-Specific Register)SMI(System Management Interrupt)事件
msr/tsc/:MSR TSC(Time Stamp Counter)事件
power/energy-cores/:CPU核心能量
power/energy-pkg/:CPU包能量
power/energy-ram/:RAM能量
原始硬件事件描述符:
rNNN:原始硬件事件描述符
cpu/t1=v1[,t2=v2,t3 ...]/modifier:CPU事件描述符,可以设置多个计数器和修饰符
硬件断点:
mem:<addr>[/len][:access]:内存断点,可以指定地址、长度和访问权限
跟踪点事件:
block:block_bio_backmerge:块层后合并事件
block:block_bio_bounce:块层IO反弹事件
block:block_bio_complete:块层IO完成事件
block:block_bio_frontmerge:块层前合并事件
block:block_bio_queue:块层IO队列事件
block:block_bio_remap:块层IO重新映射事件
block:block_dirty_buffer:块脏缓冲事件
block:block_getrq:块获取请求事件
block:block_plug:块插件事件
block:block_rq_abort:块请求中止事件
block:block_rq_complete:块请求完成事件
block:block_rq_insert:块请求插入事件
block:block_rq_issue:块请求提交事件
block:block_rq_remap:块请求重新映射事件
block:block_rq_requeue:块请求重新排队事件
block:block_sleeprq:块睡眠请求事件
block:block_split:块分裂事件
block:block_touch_buffer:块触摸缓冲事件
block:block_unplug:块解塞事件
bridge:br_fdb_add:桥FDB添加事件
bridge:br_fdb_external_learn_add:桥FDB外部学习添加事件
bridge:br_fdb_update:桥FDB更新事件
bridge:fdb_delete:FDB删除事件
compaction:mm_compaction_isolate_freepages:内存压缩隔离空闲页面事件
compaction:mm_compaction_isolate_migratepages:内存压缩隔离迁移页面事件
compaction:mm_compaction_migratepages:内存压缩迁移页面事件
context_tracking:user_enter:用户进入上下文跟踪事件
context_tracking:user_exit:用户退出上下文跟踪事件
dma_fence:dma_fence_annotate_wait_on:DMA围栏等待注释事件
dma_fence:dma_fence_destroy:DMA围栏销毁事件
dma_fence:dma_fence_emit:DMA围栏发出事件
dma_fence:dma_fence_enable_signal:DMA围栏启用信号事件
dma_fence:dma_fence_init:DMA围栏初始化事件
dma_fence:dma_fence_signaled:DMA围栏发出信号事件
dma_fence:dma_fence_wait_end:DMA围栏等待结束事件
dma_fence:dma_fence_wait_start:DMA围栏等待开始事件
drm:drm_vblank_event:DRM垂直空白事件
drm:drm_vblank_event_delivered:DRM垂直空白事件已交付事件
drm:drm_vblank_event_queued:DRM垂直空白事件排队事件
exceptions:page_fault_kernel:内核页面错误事件
exceptions:page_fault_user:用户页面错误事件
ext4:ext4_alloc_da_blocks:EXT4分配DA块事件
ext4:ext4_allocate_blocks:EXT4分配块事件
ext4:ext4_allocate_inode:EXT4分配索引节点事件
ext4:ext4_begin_ordered_truncate:EXT4开始有序截断事件
ext4:ext4_collapse_range:EXT4折叠范围事件
ext4:ext4_da_release_space:EXT4释放DA空间事件
ext4:ext4_da_reserve_space:EXT4保留DA空间事件

- `ext4:ext4_da_update_reserve_space`:更新ext4延迟分配保留空间事件
- `ext4:ext4_da_write_begin`:开始ext4延迟分配写事件
- `ext4:ext4_da_write_end`:结束ext4延迟分配写事件
- `ext4:ext4_da_write_pages`:ext4延迟分配写页面事件
- `ext4:ext4_da_write_pages_extent`:ext4延迟分配写页面范围事件
- `ext4:ext4_direct_IO_enter`:进入ext4直接IO事件
- `ext4:ext4_direct_IO_exit`:退出ext4直接IO事件
- `ext4:ext4_discard_blocks`:丢弃ext4块事件
- `ext4:ext4_discard_preallocations`:丢弃ext4预分配事件
- `ext4:ext4_drop_inode`:丢弃ext4索引节点事件
- `ext4:ext4_es_cache_extent`:缓存ext4范围事件
- `ext4:ext4_es_find_delayed_extent_range_enter`:进入ext4延迟范围查找事件
- `ext4:ext4_es_find_delayed_extent_range_exit`:退出ext4延迟范围查找事件
- `ext4:ext4_es_insert_extent`:插入ext4范围事件
- `ext4:ext4_es_lookup_extent_enter`:进入ext4查找范围事件
- `ext4:ext4_es_lookup_extent_exit`:退出ext4查找范围事件
- `ext4:ext4_es_remove_extent`:移除ext4范围事件
- `ext4:ext4_es_shrink_enter`:进入ext4缩减范围事件
- `ext4:ext4_es_shrink_exit`:退出ext4缩减范围事件
- `ext4:ext4_evict_inode`:清除ext4索引节点事件
- `ext4:ext4_ext_convert_to_initialized_enter`:进入ext4转换为初始化事件
- `ext4:ext4_ext_convert_to_initialized_fastpath`:ext4转换为初始化快速路径事件
- `ext4:ext4_ext_handle_unwritten_extents`:处理ext4未写入范围事件
- `ext4:ext4_ext_in_cache`:缓存中的ext4范围事件
- `ext4:ext4_ext_load_extent`:加载ext4范围事件
- `ext4:ext4_ext_map_blocks_enter`:进入ext4映射块事件
- `ext4:ext4_ext_map_blocks_exit`:退出ext4映射块事件
- `ext4:ext4_ext_put_in_cache`:将ext4放入缓存事件
- `ext4:ext4_ext_remove_space`:移除ext4空间事件
- `ext4:ext4_ext_remove_space_done`:完成移除ext4空间事件
- `ext4:ext4_ext_rm_idx`:删除ext4索引事件
- `ext4:ext4_ext_rm_leaf`:删除ext4叶节点事件
- `ext4:ext4_ext_show_extent`:显示ext4范围事件
- `ext4:ext4_fallocate_enter`:进入ext4分配空间事件
- `ext4:ext4_fallocate_exit`:退出ext4分配空间事件
- `ext4:ext4_find_delalloc_range`:查找ext4延迟分配范围事件
- `ext4:ext4_forget`:忘记ext4事件
- `ext4:ext4_free_blocks`:释放ext4块事件
- `ext4:ext4_free_inode`:释放ext4索引节点事件
- `ext4:ext4_get_implied_cluster_alloc_exit`:退出获取隐含集群分配事件
- `ext4:ext4_get_reserved_cluster_alloc`:获取保留集群分配事件
- `ext4:ext4_ind_map_blocks_enter`:进入ext4映射索引块事件
- `ext4:ext4_ind_map_blocks_exit`:退出ext4映射索引块事件
- `ext4:ext4_invalidatepage`:使ext4页面无效事件
- `ext4:ext4_journal_start`:启动ext4日志事件
- `ext4:ext4_journal_start_reserved`:保留ext4日志启动事件
- `ext4:ext4_journalled_invalidatepage`:日志使ext4页面无效事件
- `ext4:ext4_journalled_write_end`:日志写入ext4结束事件
- `ext4:ext4_load_inode`:加载ext4索引节点事件
- `ext4:ext4_load_inode_bitmap`:加载ext4索引节点位图事件
- `ext4:ext4_mark_inode_dirty`:标记ext4索引节点脏事件
- `ext4:ext4_mb_bitmap_load`:加载ext4位图事件
- `ext4:ext4_mb_buddy_bitmap_load`:加载ext4伙伴位图事件
- `ext4:ext4_mb_discard_preallocations`:丢弃ext4预分配事件
- `ext4:ext4_mb_new_group_pa`:创建新的ext4组PA事件
- `ext4:ext4_mb_new_inode_pa`:创建新的ext4索引节点PA事件
- `ext4:ext4_mb_release_group_pa`:释放ext4组PA事件
- `ext4:ext4_mb_release_inode_pa`:释放ext4索引节点PA事件
- `ext4:ext4_mballoc_alloc`:分配ext4 MBAlloc事件
- `ext4:ext4_mballoc_discard`:丢弃ext4 MBAlloc事件
- `ext4:ext4_mballoc_free`:释放ext4 MBAlloc事件
- `ext4:ext4_mballoc_prealloc`:预分配ext4 MBAlloc事件
- `ext4:ext4_punch_hole`:破坏ext4孔事件
- `ext4:ext4_read_block_bitmap_load`:读取ext4块位图加载事件
- `ext4:ext4_readpage`:读取ext4页面事件
- `ext4:ext4_releasepage`:释放ext4页面事件
- `ext4:ext4_remove_blocks`:删除ext4块事件
- `ext4:ext4_request_blocks`:请求ext4块事件
- `ext4:ext4_request_inode`:请求ext4索引节点事件
- `ext4:ext4_sync_file_enter`:进入ext4同步文件事件
- `ext4:ext4_sync_file_exit`:退出ext4同步文件事件
- `ext4:ext4_sync_fs`:同步ext4文件系统事件
- `ext4:ext4_trim_all_free`:裁剪所有空闲的ext4事件
- `ext4:ext4_trim_extent`:裁剪ext4范围事件
- `ext4:ext4_truncate_enter`:进入ext4截断事件

- `ext4:ext4_truncate_exit`:退出ext4截断事件
- `ext4:ext4_unlink_enter`:进入ext4删除链接事件
- `ext4:ext4_unlink_exit`:退出ext4删除链接事件
- `ext4:ext4_write_begin`:开始ext4写事件
- `ext4:ext4_write_end`:结束ext4写事件
- `ext4:ext4_writepage`:写入ext4页面事件
- `ext4:ext4_writepages`:写入ext4页面事件
- `ext4:ext4_writepages_result`:写入ext4页面结果事件
- `ext4:ext4_zero_range`:清空ext4范围事件
- `filelock:break_lease_block`:断开文件锁定块事件
- `filelock:break_lease_noblock`:断开文件锁定无阻塞事件
- `filelock:break_lease_unblock`:解除文件锁定块事件
- `filelock:generic_add_lease`:添加通用文件锁定事件
- `filelock:generic_delete_lease`:删除通用文件锁定事件
- `filelock:time_out_leases`:超时文件锁定事件
- `filemap:mm_filemap_add_to_page_cache`:将文件映射添加到页面缓存事件
- `filemap:mm_filemap_delete_from_page_cache`:从页面缓存中删除文件映射事件
- `fs_dax:dax_insert_mapping`:插入DAX映射事件
- `fs_dax:dax_insert_pfn_mkwrite`:插入DAX PFN mkwrite事件
- `fs_dax:dax_insert_pfn_mkwrite_no_entry`:插入DAX PFN mkwrite无条目事件
- `fs_dax:dax_load_hole`:加载DAX空洞事件
- `fs_dax:dax_pmd_fault`:DAX PMD故障事件
- `fs_dax:dax_pmd_fault_done`:DAX PMD故障完成事件
- `fs_dax:dax_pmd_insert_mapping`:插入DAX PMD映射事件
- `fs_dax:dax_pmd_load_hole`:加载DAX PMD空洞事件
- `fs_dax:dax_pmd_load_hole_fallback`:DAX PMD加载空洞回退事件
- `fs_dax:dax_pte_fault`:DAX PTE故障事件
- `fs_dax:dax_pte_fault_done`:DAX PTE故障完成事件
- `fs_dax:dax_writeback_one`:DAX回写一个事件
- `fs_dax:dax_writeback_range`:DAX回写范围事件
- `fs_dax:dax_writeback_range_done`:DAX回写范围完成事件
- `ftrace:function`:功能跟踪事件
- `gpio:gpio_direction`:GPIO方向事件
- `gpio:gpio_value`:GPIO值事件
- `hyperv:hyperv_mmu_flush_tlb_others`:刷新其他Hyperv MMU TLB事件
- `i2c:i2c_read`:I2C读取事件
- `i2c:i2c_reply`:I2C回复事件
- `i2c:i2c_result`:I2C结果事件
- `i2c:i2c_write`:I2C写入事件
- `i2c:smbus_read`:SMBus读取事件
- `i2c:smbus_reply`:SMBus回复事件
- `i2c:smbus_result`:SMBus结果事件
- `i2c:smbus_write`:SMBus写入事件
- `intel_ish:ishtp_dump`:Intel ISH ISHTP转储事件
- `iommu:add_device_to_group`:向IOMMU组添加设备事件
- `iommu:attach_device_to_domain`:将设备附加到IOMMU域事件
- `iommu:detach_device_from_domain`:从IOMMU域分离设备事件
- `iommu:io_page_fault`:IOMMU页面故障事件
- `iommu:map`:映射IOMMU事件
- `iommu:remove_device_from_group`:从IOMMU组中移除设备事件
- `iommu:unmap`:取消映射IOMMU事件
- `irq:irq_handler_entry`:中断处理程序进入事件
- `irq:irq_handler

_exit`:中断处理程序退出事件
- `irq:softirq_entry`:软中断进入事件
- `irq:softirq_exit`:软中断退出事件
- `irq:softirq_raise`:软中断提升事件
- `irq_vectors:call_function_entry`:调用函数进入事件
- `irq_vectors:call_function_exit`:调用函数退出事件
- `irq_vectors:call_function_single_entry`:调用单个函数进入事件
- `irq_vectors:call_function_single_exit`:调用单个函数退出事件
- `irq_vectors:deferred_error_apic_entry`:延迟错误APIC进入事件
- `irq_vectors:deferred_error_apic_exit`:延迟错误APIC退出事件
- `irq_vectors:error_apic_entry`:错误APIC进入事件
- `irq_vectors:error_apic_exit`:错误APIC退出事件
- `irq_vectors:irq_work_entry`:中断工作进入事件
- `irq_vectors:irq_work_exit`:中断工作退出事件
- `irq_vectors:local_timer_entry`:本地定时器进入事件
- `irq_vectors:local_timer_exit`:本地定时器退出事件
- `irq_vectors:reschedule_entry`:重新调度进入事件
- `irq_vectors:reschedule_exit`:重新调度退出事件
- `irq_vectors:spurious_apic_entry`:伪APIC进入事件
- `irq_vectors:spurious_apic_exit`:伪APIC退出事件
- `irq_vectors:thermal_apic_entry`:热APIC进入事件
- `irq_vectors:thermal_apic_exit`:热APIC退出事件
- `irq_vectors:threshold_apic_entry`:阈值APIC进入事件
- `irq_vectors:threshold_apic_exit`:阈值APIC退出事件
- `irq_vectors:x86_platform_ipi_entry`:x86平台IPI进入事件

- `irq_vectors:x86_platform_ipi_exit`:x86平台IPI退出事件
- `jbd2:jbd2_checkpoint`:jbd2检查点事件
- `jbd2:jbd2_checkpoint_stats`:jbd2检查点统计事件
- `jbd2:jbd2_commit_flushing`:jbd2提交刷新事件
- `jbd2:jbd2_commit_locking`:jbd2提交锁定事件
- `jbd2:jbd2_commit_logging`:jbd2提交日志事件
- `jbd2:jbd2_drop_transaction`:jbd2丢弃事务事件
- `jbd2:jbd2_end_commit`:jbd2结束提交事件
- `jbd2:jbd2_handle_extend`:jbd2处理扩展事件
- `jbd2:jbd2_handle_start`:jbd2处理开始事件
- `jbd2:jbd2_handle_stats`:jbd2处理统计事件
- `jbd2:jbd2_lock_buffer_stall`:jbd2锁定缓冲滞后事件
- `jbd2:jbd2_run_stats`:jbd2运行统计事件
- `jbd2:jbd2_start_commit`:jbd2开始提交事件
- `jbd2:jbd2_submit_inode_data`:jbd2提交i节点数据事件
- `jbd2:jbd2_update_log_tail`:jbd2更新日志尾事件
- `jbd2:jbd2_write_superblock`:jbd2写超级块事件
- `kmem:kfree`:释放内存事件
- `kmem:kmalloc`:分配内存事件
- `kmem:kmalloc_node`:分配节点内存事件
- `kmem:kmem_cache_alloc`:分配内存缓存事件
- `kmem:kmem_cache_alloc_node`:分配节点内存缓存事件
- `kmem:kmem_cache_free`:释放内存缓存事件
- `kmem:mm_page_alloc`:分配页内存事件
- `kmem:mm_page_alloc_extfrag`:分配扩展碎片页内存事件
- `kmem:mm_page_alloc_zone_locked`:分配锁定区域页内存事件
- `kmem:mm_page_free`:释放页内存事件
- `kmem:mm_page_free_batched`:批量释放页内存事件
- `kmem:mm_page_pcpu_drain`:PCPU排水页内存事件
- `kprobes:aegis_cn_netlink_send`:Aegis CN Netlink发送事件
- `kprobes:aegis_proc_fork_connector`:Aegis Proc Fork连接器事件
- `kprobes:aegis_sys_execve`:Aegis Sys Execve事件
- `libata:ata_eh_link_autopsy`:ATA EH链路尸检事件
- `libata:ata_eh_link_autopsy_qc`:ATA EH链路尸检QC事件
- `libata:ata_qc_complete_done`:ATA QC完成事件
- `libata:ata_qc_complete_failed`:ATA QC完成失败事件
- `libata:ata_qc_complete_internal`:ATA QC完成内部事件
- `libata:ata_qc_issue`:ATA QC发出事件
- `mce:mce_record`:MCE记录事件
- `mdio:mdio_access`:MDIO访问事件
- `migrate:mm_migrate_pages`:迁移页面事件
- `migrate:mm_numa_migrate_ratelimit`:NUMA迁移速率限制事件
- `module:module_free`:释放模块事件
- `module:module_get`:获取模块事件
- `module:module_load`:加载模块事件
- `module:module_put`:放置模块事件
- `module:module_request`:请求模块事件
- `mpx:bounds_exception_mpx`:MPX边界异常事件
- `mpx:mpx_bounds_register_exception`:MPX边界寄存器异常事件
- `mpx:mpx_new_bounds_table`:MPX新边界表事件
- `mpx:mpx_unmap_search`:MPX取消映射搜索事件
- `mpx:mpx_unmap_zap`:MPX取消映射Zap事件
- `napi:napi_poll`:NAPI轮询事件
- `net:napi_gro_frags_entry`:NAPI GRO碎片输入事件
- `net:napi_gro_receive_entry`:NAPI GRO接收输入事件
- `net:net_dev_queue`:网络设备排队事件
- `net:net_dev_xmit`:网络设备发送事件
- `net:netif_receive_skb`:网络接口接收SKB事件
- `net:netif_receive_skb_entry`:网络接口接收SKB输入事件
- `net:netif_rx`:网络接口接收事件
- `net:netif_rx_entry`:网络接口接收输入事件
- `net:netif_rx_ni_entry`:网络接口接收NI输入事件
- `oom:oom_score_adj_update`:OOM分数调整更新事件
- `pagemap:mm_lru_activate`:页面映射LRU激活事件
- `pagemap:mm_lru_insertion`:页面映射LRU插入事件
- `percpu:percpu_alloc_percpu`:分配每CPU内存事件
- `percpu:percpu_alloc_percpu_fail`:分配每CPU内存失败事件
- `percpu:percpu_create_chunk`:创建每CPU块事件
- `percpu:percpu_destroy_chunk`:销毁每CPU块事件
- `percpu:percpu_free_percpu`:释放每CPU内存事件
- `power:clock_disable`:禁用时钟事件
- `power:clock_enable`:启用时钟事件
- `power:clock_set_rate`:设置时钟速率事件
- `power:cpu_frequency`:CPU频率事件
- `power:cpu_idle`:CPU空闲事件
- `power:dev_pm_qos_add_request`:添加设备电源管理QoS请求事件
- `power:dev_pm_qos_remove_request`:移除设备电源管理QoS请求事件
- `power:dev_pm_qos_update_request`:更新设备电源管理QoS请求事件
- `power:machine_suspend`

:机器暂停事件
- `power:pm_qos_add_request`:添加电源管理QoS请求事件
- `power:pm_qos_remove_request`:移除电源管理QoS请求事件
- `power:pm_qos_update_flags`:更新电源管理QoS标志事件
- `power:pm_qos_update_request`:更新电源管理QoS请求事件
- `power:pm_qos_update_request_timeout`:更新电源管理QoS请求超时事件
- `power:pm_qos_update_target`:更新电源管理QoS目标事件
- `power:power_domain_target`:电源域目标事件
- `power:powernv_throttle`:PowerNV节流事件
- `power:pstate_sample`:P状态采样事件
- `power:wakeup_source_activate`:唤醒源激活事件
- `power:wakeup_source_deactivate`:唤醒源停用事件
- `printk:console`:控制台打印事件
- `qdisc:qdisc_dequeue`:Qdisc出队事件
- `random:add_device_randomness`:添加设备随机性事件
- `random:add_disk_randomness`:添加磁盘随机性事件
- `random:add_input_randomness`:添加输入随机性事件
- `random:credit_entropy_bits`:信用熵位事件
- `random:debit_entropy`:借记熵事件
- `random:extract_entropy`:提取熵事件
- `random:extract_entropy_user`:提取用户熵事件
- `random:get_random_bytes`:获取随机字节事件
- `random:get_random_bytes_arch`:获取体系结构随机字节事件
- `random:mix_pool_bytes`:混合池字节事件
- `random:mix_pool_bytes_nolock`:无锁混合池字节事件
- `random:push_to_pool`:推送到池事件
- `random:random_read`:随机读取事件
- `random:urandom_read`:不可预测随机读取事件
- `random:xfer_secondary_pool`:传输次要池事件
- `ras:aer_event`:AER事件
- `ras:extlog_mem_event`:Extlog内存事件
- `ras:mc_event`:MC事件
- `raw_syscalls:sys_enter`:原始系统调用进入事件
- `raw_syscalls:sys_exit`:原始系统调用退出事件
- `rcu:rcu_utilization`:RCU利用率事件
- `regmap:regcache_drop_region`:Regcache丢弃区域事件
- `regmap:regcache_sync`:Regcache同步事件
- `regmap:regmap_async_complete_done`:Regmap异步完成完成事件
- `regmap:regmap_async_complete_start`:Regmap异步完成开始事件
- `regmap:regmap_async_io_complete`:Regmap异步IO完成事件
- `regmap:regmap_async_write_start`:Regmap异步写开始事件
- `regmap:regmap_cache_bypass`:Regmap缓存旁路事件
- `regmap:regmap_cache_only`:Regmap仅缓存事件
- `regmap:regmap_hw_read_done`:Regmap硬件读取完成事件
- `regmap:regmap_hw_read_start`:Regmap硬件读取开始事件
- `regmap:regmap_hw_write_done`:Regmap硬件写入完成事件
- `regmap:regmap_hw_write_start`:Regmap硬件写入开始事件
- `regmap:regmap_reg_read`:Regmap寄存器读取事件
- `regmap:regmap_reg_read_cache`:Regmap寄存器读取缓存事件
- `regmap:regmap_reg_write`:Regmap寄存器写入事件
- `rpm:rpm_idle`:RPM空闲事件
- `rpm:rpm_resume`:RPM恢复事件
- `rpm:rpm_return_int`:RPM返回INT事件
- `rpm:rpm_suspend`:RPM暂停事件
- `sched:sched_kthread_stop`:调度K线程停止事件
- `sched:sched_kthread_stop_ret`:调度K线程停止返回事件
- `sched:sched_migrate_task`:调度迁移任务事件
- `sched:sched_move_numa`:调度移动NUMA事件
- `sched:sched_pi_setprio`:调度PI设置优先级事件
- `sched:sched_process_exec`:调度进程执行事件
- `sched:sched_process_exit`:调度进程退出事件
- `sched:sched_process_fork`:调度进程分叉事件
- `sched:sched_process_free`:调度进程释放事件
- `sched:sched_process_hang`:调度进程挂起事件
- `sched:sched_process_wait`:调度进程等待事件
- `sched:sched_stat_blocked`:调度统计阻塞事件
- `sched:sched_stat_iowait`:调度统计I/O等待事件
- `sched:sched_stat_runtime`:调度统计运行时间事件
- `sched:sched_stat_sleep`:调度统计睡眠事件
- `sched:sched_stat_wait`:调度统计等待事件
- `sched:sched_stick_numa`:调度固定NUMA事件
- `sched:sched_swap_numa`:调度交换NUMA事件
- `sched:sched_switch`:调度切换事件
- `sched:sched_wait_task`:调度等待任务事件
- `sched:sched_wake_idle_without_ipi`:调度唤醒空闲无IPI事件
- `sched:sched_wakeup`:调度唤醒事件
- `sched:sched_wakeup_new`:调度唤醒新事件
- `scsi:scsi_dispatch_cmd_done`:SCSI分派命令完成事件
- `scsi:scsi_dispatch_cmd_error`:SCSI分派命令错误事件
- `scsi:scsi_dispatch_cmd_start`:SCSI分派命令开始事件
- `scsi:scsi_dispatch_cmd_timeout`:SCSI分派命令超时事件
- `scsi:scsi_eh_wakeup`:SCSI EH唤醒事件
- `signal:signal

_deliver`:信号传递事件
- `signal:signal_generate`:信号生成事件
- `skb:consume_skb`:消耗SKB事件
- `skb:kfree_skb`:释放SKB事件
- `skb:skb_copy_datagram_iovec`:复制数据报IO向量事件
- `sock:sock_exceed_buf_limit`:套接字超过缓冲区限制事件
- `sock:sock_rcvqueue_full`:套接字接收队列满事件

Metric Groups:

- DSB:
  - DSB_Coverage:DSB交付的Uops的比例(也称为解码Icache或Uop缓存中的Uops比例)
- FLOPS:
  - GFLOPs:每秒十亿次浮点运算
- Frontend:
  - IFetch_Line_Utilization:估算的被程序指令使用的已抓取线字节的比例
- Frontend_Bandwidth:
  - DSB_Coverage:DSB交付的Uops的比例(也称为解码Icache或Uop缓存中的Uops比例)
- Memory_BW:
  - MLP:内存级并行性(至少有一个L1丢失需求加载时的平均L1丢失需求加载数)
- Memory_Bound:
  - Load_Miss_Real_Latency:L1数据缓存丢失需求加载的实际平均延迟
  - MLP:内存级并行性(至少有一个L1丢失需求加载时的平均L1丢失需求加载数)
- Memory_Lat:
  - Load_Miss_Real_Latency:L1数据缓存丢失需求加载的实际平均延迟
- Pipeline:
  - CPI:每条指令的周期数(线程化)
  - ILP:指令级并行性(当至少有一个指令执行时的平均uop执行数)
  - UPI:每条指令的uops数
- Ports_Utilization:
  - ILP:指令级并行性(当至少有一个指令执行时的平均uop执行数)
- Power:
  - C2_Pkg_Residency:每个套接字的C2驻留时间百分比
  - C3_Core_Residency:每个核心的C3驻留时间百分比
  - C3_Pkg_Residency:每个套接字的C3驻留时间百分比
  - C6_Core_Residency:每个核心的C6驻留时间百分比
  - C6_Pkg_Residency:每个套接字的C6驻留时间百分比
  - C7_Core_Residency:每个核心的C7驻留时间百分比
  - C7_Pkg_Residency:每个套接字的C7驻留时间百分比
  - Turbo_Utilization:相对于名义频率的平均频率利用率
- SMT:
  - CORE_CLKS:在物理核心上有任何线程活动时的核心实际时钟
  - CoreIPC:每个物理核心的每周期指令数
  - SMT_2T_Utilization:两个硬件线程都活跃的周期比例
- Summary:
  - CLKS:当逻辑处理器活动时,每线程的实际时钟数
  - CPI:每条指令的周期数(线程化)
  - CPU_Utilization:平均CPU利用率
  - GFLOPs:每秒十亿次浮点运算
  - Instructions:已退休指令的总数
  - Kernel_Utilization:在内核模式下花费的周期比例
  - SMT_2T_Utilization:两个硬件线程都活跃的周期比例
- TLB:
  - Page_Walks_Utilization:为指令/加载/存储访问触发的STLB丢失提供服务的核心页行走器的利用率
- TopDownL1:
  - IPC:每个逻辑线程的每周期指令数
  - SLOTS:总发射管道插槽数
- Unknown_Branches:
  - BAClear_Cost:分支地址清除成本的平均值(周期的百分比)

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值