讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux怎么查看具体的CPU多线程并行效率图

秋丽大大_9812

秋丽大大_9812

发布时间:2026-09-02 09:06:29

|

656人浏览过

|

来源于php中文网

原创

perf是唯一能捕获真实线程级调度行为的工具,通过perf record -e sched:sched_switch -p PID采集调度事件,再用perf script | stackcollapse-perf.pl | flamegraph.pl生成调度热图,直观反映线程在CPU间的迁移频次与绑定稳定性,从而精准评估并行效率。

linux怎么查看具体的cpu多线程并行效率图

lscpu 能看出线程数,但看不出并行效率

lscpu 只提供静态拓扑:比如 Thread(s) per core: 2 表示超线程开启,CPU(s): 48 是逻辑总数。但它完全不反映实际运行时的并行利用情况——比如 48 个逻辑 CPU 是否真被填满、有没有大量空转、线程是否在不同核心间频繁迁移。这些才是“并行效率”的核心。

用 perf record + perf report 看真实调度热图

Linux 内核自带的 perf 是唯一能捕获真实线程级调度行为的工具,它记录的是内核调度器实际把线程扔到哪个 CPU 上、停留多久、是否被抢占或迁移。

  • 先确认目标进程 PID(比如 3883),然后采集 30 秒调度事件:
    sudo perf record -e sched:sched_switch -p 3883 -- sleep 30
  • 生成火焰图式调度热图:
    sudo perf script | awk '{print $9,$13}' | sort | uniq -c | sort -nr | head -20
    输出类似 1245 cpu0/3883,表示该线程在 cpu0 上被调度了 1245 次
  • 更直观的方式是导出为 FlameGraph:
    sudo perf script | stackcollapse-perf.pl | flamegraph.pl > sched-flame.svg
    横轴是 CPU ID,纵轴是调度频次堆叠,越宽越说明该线程长期绑定某核;若左右来回跳,则并行效率低

top -H 和 htop 的“线程视图”只是快照,不是效率图

top -H 或 htop 按线程(TID)排序,能看到每个线程当前的 %CPU,但这只是瞬时采样值。它无法告诉你:这个线程是不是刚从 cpu2 迁移到 cpu5、有没有因锁竞争反复休眠唤醒、是否因 NUMA 远程内存访问拖慢——这些才是并行效率瓶颈的根源。

Zynq Linux Hardware Debug
Zynq Linux Hardware Debug

Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。

下载
  • 误判常见:看到多个线程 %CPU 都接近 100%,就以为“并行很好”,其实它们可能全挤在同一个物理核上争抢资源
  • 关键线索藏在 /proc/<pid>/status</pid> 的 voluntary_ctxt_switches 和 nonvoluntary_ctxt_switches:后者高,说明频繁被内核抢占或等待 I/O,本质是串行阻塞

别信“CPU 使用率图表”代替并行效率图

用 top -b -n 1200 -d 0.5 -p <pid></pid> 导出 %CPU 到 CSV,再画折线图——这只是单个进程的总体负载曲线,和“多线程并行效率”无关。它甚至不能区分:是 8 个线程各跑 12.5%,还是 1 个线程跑 100% 其余 7 个彻底空闲。

  • 真正要问的是:线程是否均匀分布在物理核上?是否跨 NUMA 节点访问内存?是否因锁或信号量互相等待?
  • 这些问题只能靠 perf sched、perf record -e cycles,instructions,cache-misses 或 pidstat -t -u 1 的 %usr/%sys 分解来逼近

并行效率不是数字,是调度行为本身。所有“图”都只是对行为的投影,而最易被忽略的,是那些没被调度的线程——它们安静地躺在 runqueue 里,等一个没人争抢的核。

热门AI工具

更多
蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
Python 多线程与异步编程实战
Python 多线程与异步编程实战

本专题系统讲解 Python 多线程与异步编程的核心概念与实战技巧,包括 threading 模块基础、线程同步机制、GIL 原理、asyncio 异步任务管理、协程与事件循环、任务调度与异常处理。通过实战示例,帮助学习者掌握 如何构建高性能、多任务并发的 Python 应用。

1169

2025.12.24

java多线程相关教程合集
java多线程相关教程合集

本专题整合了java多线程相关教程,阅读专题下面的文章了解更多详细内容。

403

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

559

2026.01.21

C# 多线程与异步编程
C# 多线程与异步编程

本专题深入讲解 C# 中多线程与异步编程的核心概念与实战技巧,包括线程池管理、Task 类的使用、async/await 异步编程模式、并发控制与线程同步、死锁与竞态条件的解决方案。通过实际项目,帮助开发者掌握 如何在 C# 中构建高并发、低延迟的异步系统,提升应用性能和响应速度。

389

2026.02.06

C++多线程并发控制与线程安全设计实践
C++多线程并发控制与线程安全设计实践

本专题围绕 C++ 在高性能系统开发中的并发控制技术展开,系统讲解多线程编程模型与线程安全设计方法。内容包括互斥锁、读写锁、条件变量、原子操作以及线程池实现机制,同时结合实际案例分析并发竞争、死锁避免与性能优化策略。通过实践讲解,帮助开发者掌握构建稳定高效并发系统的关键技术。

233

2026.03.16

Java 多线程与并发编程实战
Java 多线程与并发编程实战

深入讲解 Java 并发编程体系,涵盖 Thread / Runnable / Callable 线程创建方式、线程生命周期与状态转换、synchronized 同步锁与 Lock/ReentrantLock 显式锁、volatile 可见性保证、ThreadPool 线程池配置与调优(核心参数/拒绝策略)、JUC 并发工具类(CountDownLatch/CyclicBarrier/Semaphore/ConcurrentHashMa

349

2026.04.17

C++ 多线程使用教程大全
C++ 多线程使用教程大全

系统讲解 C++11 及后续标准引入的多线程编程能力,涵盖 std::thread 线程创建与生命周期管理、std::mutex / shared_mutex 互斥锁与读写锁、std::condition_variable 条件变量同步、std::atomic 原子操作与内存序(memory_order)、std::future / promise / async 异步任务、线程池的设计与实现、死锁检测与避免策略,帮助开发者编写正确高效

216

2026.04.28

Python多线程、多进程与并发编程教程大全
Python多线程、多进程与并发编程教程大全

系统讲解 Python 的并发与并行编程体系,涵盖 GIL 全局解释器锁的原理与影响分析、threading 模块的线程创建/锁/事件/信号量、multiprocessing 模块的进程创建/进程间通信(Queue/Pipe/共享内存)、concurrent.futures 线程池与进程池的统一接口、I/O 密集型与 CPU 密集型任务的方案选择、多线程竞态条件排查与线程安全数据结构、subprocess 子进程管理,帮助开发者根据任务

194

2026.05.08

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

80

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn