cpu wa

news/2025/9/19 10:45:54/文章来源:https://www.cnblogs.com/tiantao36/p/19100328

cpu wa

👌 我明白了,你需要的是把 两个文档合并

  1. 逐指标展开分析逻辑(cycles/instructions、context-switches、page-faults、syscalls 等 → 如何推导分支)。

  2. 典型 %wa 场景说明(本地块设备、NFS/iSCSI、Swap、虚拟化、驱动阻塞),并把 perf stat → perf trace/perf top → 系统工具验证 串联起来。

这样既有 渐进式分析路径,也有 场景对照表


🔎 Linux CPU %wa 系统化分析手册

1️⃣ %wa 的定义

  • %wa = CPU 空闲但有进程等待 block I/O 完成

  • 并非一定是磁盘 I/O,也可能是:

    • 网络存储 I/O (NFS/iSCSI/CEPH)

    • 内存 Swap I/O

    • 虚拟化宿主机 I/O 调度延迟

    • 特殊驱动或硬件阻塞


2️⃣ 初始全局统计(perf stat)

perf stat -a sleep 60

关键指标及解释

指标作用典型异常表现初步怀疑下一步
cycles / instructions (CPI) 衡量 CPU 执行效率 CPI 高(>3)= stall I/O stall 或内存瓶颈 perf top -a 看热点
context-switches 进程切换次数 秒级上万次 I/O wait 或锁竞争 perf sched / pidstat -w
page-faults (major) 内存缺页异常 major faults 高 swap I/O vmstat、sar -B
syscalls 内核调用量 read/write/fsync/ioctl ↑ I/O 类型相关 perf trace -a
cpu-migrations 核间迁移 明显偏高 调度/NUMA 负担 仅参考

👉 这里完全不依赖 PID,先用 全局指标 判断大类问题。


3️⃣ 分支分析逻辑

  1. page-faults 高 → swap 分支

    • vmstat 1 → si/so 是否高

    • free -m → swap 使用量

  2. syscalls 高 → syscall 分支

    • perf trace -a → 哪类 syscall 最耗时

    • read/write → 块 I/O 或网络存储

    • fsync → 数据库/日志刷盘

    • ioctl → 驱动/特殊设备

  3. context-switches 高,但 syscall 不明显 → 调度/锁分支

    • perf sched record / perf sched latency

    • perf top 看是否卡在 schedule() / io_schedule()

  4. CPI 高,但 syscalls/ctx/faults 正常 → stall 分支

    • perf top -a 看热点

    • 可能是 NUMA 远程访问、宿主机 I/O 调度延迟


4️⃣ 典型 %wa 场景对照表

场景perf stat 特征perf trace / top验证工具说明
本地块设备 I/O syscalls ↑ (read/write/fsync),CPI ↑ io_schedule(), blk_finish_request iostat -x 1, blktrace 磁盘繁忙、坏块重试、日志刷盘
网络存储 I/O (NFS/iSCSI) read/write ↑,但 iostat 平稳 nfs_file_read, tcp_sendmsg nfsstat, tcpdump 网络抖动、NFS 卡顿
Swap I/O page-faults ↑↑ (major),syscalls 正常 swap_readpage, do_swap_page vmstat si/so, sar -B 内存不足,大量换页
虚拟化宿主机 I/O 延迟 CPI ↑↑,但 syscalls/faults 不突出 kvm_vcpu_block, schedule() perf kvm stat, 宿主机 iostat 宿主机过载,虚拟机 I/O 延迟
驱动/特殊设备阻塞 ioctl ↑,CPI 中等 驱动相关函数 strace, dmesg RAID 控制器、GPU、特殊硬件 bug

5️⃣ 标准化分析路径

  1. perf stat -a(全局指标)

  2. 判断分支:

    • faults 高 → swap

    • syscalls 高 → I/O 类型

    • ctx 高 → I/O 或锁

    • CPI 高 → stall

  3. perf trace -a(全局 syscall 耗时分布)

  4. perf top -a(内核热点函数)

  5. 按分支用验证工具确认:

    • swap → vmstat

    • 本地块 I/O → iostat / blktrace

    • NFS/iSCSI → nfsstat / tcpdump

    • 虚拟化 → perf kvm stat

    • 驱动 → strace / dmesg


这样两个文档的内容就合并了:

  • 前半部分:指标作用 + 分支判断

  • 后半部分:典型 %wa 场景对照表


要不要我帮你整理成一个 操作手册版(带命令序列和判断提示),你在现场排查时直接按顺序执行就能走完整个分析路径?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/907703.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解码C语言指针

一、指针的定义与本质 1. 指针是什么? 指针是一种 存储变量内存地址 的特殊变量。所有数据存储在内存中,每个内存单元都有唯一地址(编号),指针通过记录地址实现对数据的间接访问。 2. 指针的核心作用直接操作内存…

windows下Qt调用fftw库

环境:Windows 11 Qt:6.8.3 程序中需要用到fftw库来进行傅里叶变换,通过网上的资料,配置了很久一直没成功,后来发下还是没有配置正确,最后终于成功,顺便记录一下 1.下载fftw3.3.5 http://www.fftw.org/install/…

Gitee崛起:国产代码托管平台如何接棒CODING成为开发者新宠

Gitee崛起:国产代码托管平台如何接棒CODING成为开发者新宠 随着腾讯云宣布CODING DevOps系列产品逐步停止服务,中国开发者生态正在经历一次重要的基础设施迁移。在这场变革中,开源中国旗下Gitee平台凭借其十年本土化…

flask下的MySQL增查配置

flask下的MySQL增删配置 添加数据 @app.route(/add) def add_data():u = UserInfo()new_user1 = UserInfo(nickname=flask_test1, mobile=13888888888, signature=理想, create_time=datetime.now(), role_id=1)new_us…

AT_agc056_c [AGC056C] 01 Balanced

不难设 \(d_i\) 为前缀 \(i\) 中 \(0/1\) 数量的差值,显然有两个限制:\(d_{l - 1} = d_r\) \(|d_{i - 1} - d_i| \le 1\)可以差分约束,事实上,直接跑差分约束就可以得到字典序最小的构造了,这也算本题的价值之一。…

高效智能(到家服务)管理平台解决方案

一、项目背景 随着互联网技术的快速发展以及服务行业的数字化转型,传统的线下服务模式逐渐向线上迁移。为了提升服务效率、优化用户体验,并满足用户对快速响应和精准服务的需求,本项目旨在打造一个高效、智能的服务…

centos7卸载openjdk-java11

[root@localhost ~]# rpm -qa|grep -i openjdk java-11-openjdk-headless-11.0.23.0.9-2.el7_9.x86_64 java-11-openjdk-devel-11.0.23.0.9-2.el7_9.x86_64 java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64# 卸载命令, yu…

jenkins的安装和配置

windows 安装 jenkins 自动化构建部署至linux服务器上 一、环境准备1、git安装环境 参考链接 https://www.cnblogs.com/yuarvin/p/12500038.html 2、maven安装环境,包括jdk环境安装 参考链接 https://www.cnblogs.com…

从MMoE到PLE:读懂多任务学习架构的渐进式演化

从MMoE到PLE:读懂多任务学习架构的渐进式演化从MMoE到PLE:读懂多任务学习架构的渐进式演化 引言 在多任务学习(MTL)领域,MMoE(Multi-gate Mixture-of-Experts)无疑是一个里程碑式的模型,它通过巧妙的软参数共享…

在VSCode中设置Qt编写环境

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:【Day 52 】Linux-Jenkins

深入解析:【Day 52 】Linux-Jenkinspre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monac…

本土开发者如何选择代码管理工具?Gitee与GitHub深度对比解析

本土开发者如何选择代码管理工具?Gitee与GitHub深度对比解析 在数字化转型浪潮下,代码管理工具已成为开发者日常工作的必备基础设施。面对国内外众多选择,新手开发者往往陷入选择困难。本文将从本土化开发视角,深入…

MES系统核心组件

核心总览 在半导体工厂中,MES(Manufacturing Execution System,制造执行系统) 是最高层的指挥中枢,它负责管理生产线上从投料开始到成品产出的全部作业流程。而其他各种“XX Server”则是MES这个大脑指挥下的专业…

易基因:多组学整合分析揭示DNA甲基化与基因组改变在肿瘤进化中的协同驱动机制|Nat Genet/IF29重磅

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 近日,伦敦大学学院癌症研究所Nnennaya Kanu和弗朗西斯克里克研究所Peter Van Loo团队合作在国际遗传学Top期刊《自然遗传学》(Nature Genetics)发…

AI 视频模型大比拼(2025年7月版):价格、效果与分辨率

AI 视频模型大比拼(2025年7月版):价格、效果与分辨率pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&…

为什么芯片行业需要私有化部署软件?

在芯片研发过程中,每天产生的大量设计数据、测试结果和知识产权,构成了企业的核心竞争优势。一旦这些数据泄露,不仅可能导致数百万美元的研发投入付诸东流,更可能让企业在全球竞争中失去领先地位。 近年来,芯片行…

C++ std::string

C++ 标准库中的 std::string 是处理字符串的核心类,封装了字符串的存储、管理和操作,相比 C 风格的 char* 更安全、易用。 1、基本概念 1.1 基本特性 std::string 定义在 <string> 头文件中(属于 std 命名空间…

MathType数学公式编辑器v7.9.1

MathType全球最受欢迎的专业数学公式编辑器工具软件,可视化公式编辑器轻松创建数学方程式和化学公式。兼容Office Word、PowerPoint、Pages、Keynote、Numbers 等700多种办公软件,用于编辑数学试卷、书籍、报刊、论文…

git常见冲突场景及解决办法 - 指南

git常见冲突场景及解决办法 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&…

有关字节的基础知识

什么是字节位(bit):是计算机 内部数据 存储的最小单位,11001100是一个八位二进制数。字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写B来表示。字符:是指计算机中使用的字母、数字、字和符号 1bit表…