1.perf 是 Linux 系统中性能分析工具,用于收集性能相关的信息。它可以用于查看 CPU 使用情况、内存性能、磁盘 I/O 等,以帮助开发者找到性能瓶颈。
以下是一些 perf 常见用法和示例:
1. CPU Profiling
a. 查看 CPU 使用率
perf stat -e cpu-clock -a sleep 5
这个命令将统计所有 CPU 上运行的进程的 cpu-clock 事件,持续 5 秒钟。b. 检测函数耗时
perf record -e cycles -g -p <PID>
perf report
这个命令将在指定的进程上收集函数调用信息,然后通过 perf report 查看。
2. 内存分析
a. 查看内存分配情况
perf record -e malloc:*
perf report
这个命令将记录程序中的内存分配事件,然后通过 perf report 查看。
3. I/O 分析
a. 查看磁盘 I/O 情况
perf record -e block:block_rq_insert -a
perf report
这个命令将记录所有块 I/O 请求的插入事件,然后通过 perf report 查看。
4. Trace 系统调用
perf trace -a
这个命令将跟踪系统调用,显示正在运行的进程的详细信息。
当使用 perf 进行性能调优时,一般会经历以下步骤:
收集性能数据: 使用 perf 工具收集程序运行时的性能数据。分析性能数据: 通过 perf 工具的报告,分析程序中的性能瓶颈。优化代码: 根据分析结果,对程序进行优化。重新收集和分析: 重复上述步骤,直至达到满意的性能。
编译代码
gcc -o fibonacci fibonacci.c启动perf记录
perf record -g -o perf.data ./fibonacci生成报告
perf report优化的方式可能包括改进算法、减少函数调用、并行化等。在每次优化后,都要重新运行 perf,直到达到满意的性能水平。
2.lscpu 对于 Linux 机器,可以用 lscpu、cat /proc/info 等命令查看它的 CPU 信息, 比如下面这台机器
看到有 48 个 CPU。 要理解这些 CPU 在物理上是怎么分布的(layout)。