做平面设计素材的哪个网站好,三星网上商城app下载,公司网站建设的普遍性,WordPress预览出错linux perf工具使用指导
perf 是 Linux 内核自带的性能分析工具#xff0c;主要用于分析系统性能瓶颈和程序的性能问题。通过合理使用 perf 工具#xff0c;可以有效地分析和优化系统性能。
安装 perf
在大多数 Linux 发行版中#xff0c;perf 工具通常随内核源代码包一起…linux perf工具使用指导
perf 是 Linux 内核自带的性能分析工具主要用于分析系统性能瓶颈和程序的性能问题。通过合理使用 perf 工具可以有效地分析和优化系统性能。
安装 perf
在大多数 Linux 发行版中perf 工具通常随内核源代码包一起提供。可以通过以下命令安装
Ubuntu/Debian:
sudo apt-get install linux-tools-$(uname -r)CentOS/RHEL:
sudo yum install perf基本用法
perf帮助文档
]# perf --help用法: perf [--version] [--help] [OPTIONS] COMMAND [ARGS]最常用的 perf 命令有annotate 读取 perf.data由 perf record 创建并显示带注释的代码archive 创建包含在 perf.data 文件中找到的带有 build-id 的目标文件的归档文件bench 基准测试套件的一般框架buildid-cache 管理 build-id 缓存buildid-list 列出 perf.data 文件中的 build-idc2c 共享数据 C2C/HITM 分析器config 获取和设置配置文件中的变量data 数据文件相关处理diff 读取 perf.data 文件并显示差异分析evlist 列出 perf.data 文件中的事件名称ftrace 内核 ftrace 功能的简单封装inject 过滤器用于在事件流中添加附加信息kallsyms 在正在运行的内核中搜索符号kmem 追踪/测量内核内存属性的工具kvm 追踪/测量 KVM 客户操作系统的工具list 列出所有符号事件类型lock 分析锁事件mem 内存访问分析record 运行一个命令并将其性能数据记录到 perf.data 文件中report 读取 perf.data由 perf record 创建并显示分析报告sched 追踪/测量调度器属性延迟的工具script 读取 perf.data由 perf record 创建并显示跟踪输出stat 运行一个命令并收集性能计数器统计数据test 运行完整性测试timechart 可视化工作负载期间系统总体行为的工具top 系统性能分析工具version 显示 perf 二进制文件的版本probe 定义新的动态跟踪点trace 类似 strace 的工具参见 perf help COMMAND 以获取有关特定命令的更多信息。perf 提供了多种子命令以下是一些常用的命令
查看 CPU 性能计数器:
perf stat command该命令会运行指定的命令并显示其 CPU 性能统计信息。
记录性能数据:
perf record -a该命令会在系统上收集性能事件-a 选项表示全局记录包括所有 CPU。该命令会在当前路径下生成perf.data
分析性能数据:
perf report该命令会显示 perf record 收集到的数据的分析报告。读取当前路径下的perf.data文件。
跟踪特定进程:
perf trace -p pid该命令会实时跟踪指定进程的系统调用。
实际应用场景
识别性能瓶颈:
使用 perf stat 监控程序的性能以识别潜在的瓶颈如 CPU 使用率、缓存命中率等。
函数级别性能分析:
使用 perf record 和 perf report分析函数执行的耗时帮助定位慢函数。
系统调用跟踪:
使用 perf trace 跟踪特定进程的系统调用以分析 I/O 性能和系统调用的开销。
示例
统计命令执行的性能:
]# perf stat ls
anaconda-ks.cfg keys notation
ca.crt kubeconfig perf.data.old
cirros-0.5.2-x86_64-disk.img kubeconfig.kubemark perf-tests.tar.gz
cosign kubectl-ko pki
create_project_harbor.sh kubesphere pull-image-ceph.sh
download-etcd.sh kubesphere1-conf push-image-ceph.sh
go kubesphere2-1-conf registry2.7.tar
go1.22.4.linux-amd64.tar.gz kubesphere-argoproj.tar rook-ceph
harbor kuboard-spray-resource.tar sockperf-3.8.tar.gz
helm minio test-del.tar
ip_add.txt MrDoc trivy
iperf3-3.1.7-3.el7_9.x86_64.rpm myproject trivy_0.53.0_Linux-64bit.rpm
iperf3-tools.sh netperf-2.7.0.tar.gz trivy-db.tar.gz
k8s1.23.15-kubesphere3.4.1 nginx-ingress-controller.tag.gzPerformance counter stats for ls:1.92 msec task-clock # 0.808 CPUs utilized 0 context-switches # 0.000 K/sec 1 cpu-migrations # 0.521 K/sec 261 page-faults # 0.136 M/sec not supported cycles not supported instructions not supported branches not supported branch-misses 0.002374917 seconds time elapsed0.000000000 seconds user0.002503000 seconds sys记录整个系统的性能数据:
]# perf record -a -g -- sleep 10
[ perf record: Woken up 26 times to write data ]
[ perf record: Captured and wrote 7.078 MB perf.data (59077 samples) ]分析记录的数据:
[rootharbor ~]# perf reportSamples: 59K of event cpu-clock, Event count (approx.): 14769250000 Children Self Command Shared Object Symbol 96.81% 0.00% swapper [kernel.kallsyms] [k] start_cpu96.81% 0.01% swapper [kernel.kallsyms] [k] cpu_startup_entry96.65% 0.01% swapper [kernel.kallsyms] [k] arch_cpu_idle96.64% 0.01% swapper [kernel.kallsyms] [k] default_idle96.25% 96.25% swapper [kernel.kallsyms] [k] native_safe_halt69.10% 0.00% swapper [kernel.kallsyms] [k] start_secondary27.71% 0.00% swapper [kernel.kallsyms] [k] x86_64_start_kernel27.71% 0.00% swapper [kernel.kallsyms] [k] x86_64_start_reservations27.71% 0.00% swapper [kernel.kallsyms] [k] start_kernel27.71% 0.00% swapper [kernel.kallsyms] [k] rest_init0.39% 0.00% swapper [kernel.kallsyms] [k] irq_exit0.39% 0.00% swapper [kernel.kallsyms] [k] do_softirq0.39% 0.00% swapper [kernel.kallsyms] [k] call_softirq0.38% 0.07% swapper [kernel.kallsyms] [k] __do_softirq0.32% 0.00% swapper [kernel.kallsyms] [k] apic_timer_interrupt0.32% 0.00% swapper [kernel.kallsyms] [k] smp_apic_timer_interrupt0.32% 0.00% containerd-shim containerd-shim-runc-v2 [.] 0x000000000046b6c10.28% 0.00% runc [kernel.kallsyms] [k] async_page_fault0.28% 0.00% runc [kernel.kallsyms] [k] do_async_page_fault0.28% 0.00% runc [kernel.kallsyms] [k] trace_do_page_fault0.28% 0.03% runc [kernel.kallsyms] [k] __do_page_fault0.28% 0.00% runc runc [.] runtime.goexit.abi00.26% 0.00% runc runc [.] runtime.main0.25% 0.01% runc [kernel.kallsyms] [k] handle_mm_fault0.23% 0.00% runc [kernel.kallsyms] [k] native_flush_tlb_others0.22% 0.00% containerd-shim containerd-shim-runc-v2 [.] 0x00000000004698ca0.22% 0.21% runc [kernel.kallsyms] [k] smp_call_function_many0.18% 0.00% containerd-shim containerd-shim-runc-v2 [.] 0x000000000087eeeb0.17% 0.00% containerd-shim [kernel.kallsyms] [k] system_call_fastpath0.16% 0.00% runc [kernel.kallsyms] [k] do_wp_page0.16% 0.00% runc [kernel.kallsyms] [k] wp_page_copy.isra.730.16% 0.00% runc:[2:INIT] [kernel.kallsyms] [k] async_page_fault0.16% 0.01% runc:[2:INIT] [kernel.kallsyms] [k] __do_page_fault0.16% 0.00% runc:[2:INIT] [kernel.kallsyms] [k] do_async_page_fault0.16% 0.00% runc:[2:INIT] [kernel.kallsyms] [k] trace_do_page_fault0.15% 0.00% runc [kernel.kallsyms] [k] ptep_clear_flush0.15% 0.00% runc [kernel.kallsyms] [k] flush_tlb_page其他用法
不同的子命令有更详细的用法请通过perf COMMAND --help 或者perf help COMMAND查看。
注意事项
使用 perf 时某些操作可能需要 root 权限特别是全局记录和跟踪系统调用。在高负载系统中perf 可能会对性能产生一定影响建议在性能测试或故障排查时使用。