当前位置: 首页 > news >正文

RHCA07-Linux跟踪工具及CPU调优

Linux跟踪工具与CPU调优笔记


一、Linux跟踪工具
  1. strace 系统调用跟踪

    • 核心功能
      • 监控进程的系统调用、信号传递和状态变更
      • 诊断性能瓶颈和异常行为
    • 关键参数
      参数作用示例场景
      -tt毫秒级时间戳精确记录调用时序
      -T显示调用耗时定位性能瓶颈(如lstat占38%时间)
      -e trace=file只跟踪文件操作strace -e trace=file cp
      -f跟踪子进程分析nginx及其子进程
      -p跟踪运行中进程strace -p <PID>
    • 典型应用
      • updatedb优化:发现lstatwrite是主要耗时操作
      • 配置查找strace php 2>&1 | grep php.ini 追踪配置文件路径
      • 故障诊断:分析iptables -L卡顿(检查/etc/resolv.conf加载)
  2. SystemTap 内核诊断

    • 核心优势
      • 免编译内核:通过脚本动态插入探针收集数据
      • 生产友好:开发机编译模块 → 生产机直接运行
    • 部署流程
      必需
      必需
      仅需
      开发机
      安装组件
      编译模块
      生产机运行
      kernel-debuginfo
      kernel-devel
      systemtap-runtime
    • 注意事项
      • 内核版本必须严格匹配
      • 普通用户需加入stapusr
      • 模块存放路径:/lib/modules/<内核版本>/systemtap/

二、CPU调优技术
  1. IRQ中断均衡

    • 核心问题:网卡流量过大时软中断集中单核
    • 优化步骤
      1. 查看中断分布:cat /proc/interrupts
      2. 关闭默认均衡:systemctl stop irqbalance
      3. 手动绑定CPU:
        # 绑定中断19到CPU0和CPU1  
        echo 3 > /proc/irq/19/smp_affinity  # 3=二进制0011 (CPU0+1)  
        
    • 掩码计算
      CPU掩码值二进制
      010001
      120010
      240100
      381000
  2. 进程绑定(taskset

    • 缓存敏感型程序
      # 绑定进程到CPU0和CPU1  
      taskset -p 3 <PID>  
      
    • 查看运行位置ps -o psr -p <PID>
    • 服务级持久化
      [Service]  
      ExecStartPost=/bin/bash -c "taskset -p 3 ${MAINPID}"  
      
  3. cpuset资源隔离

    • NUMA架构优化
      # 创建web服务cpuset  
      mkdir /sys/fs/cgroup/cpuset/web  
      echo 0 > web/cpuset.cpus    # 绑定CPU0  
      echo 0 > web/cpuset.mems    # 绑定内存zone0  
      echo <PID> > web/tasks      # 加入进程  
      
    • 独占模式echo 1 > cpuset.exclusive

三、性能诊断案例
故障现象诊断命令根因分析
iptables -L 卡顿strace -e trace=file iptables -LDNS查询超时(检查resolv.conf
df -h 响应慢strace -e trace=read df -ThNFS挂载故障
单CPU软中断100%cat /proc/interrupts网卡中断未均衡
服务启动失败strace -f systemctl start nginx配置文件路径错误

四、知识小结
知识点核心要点调优场景
strace通过系统调用分析程序行为(-T看耗时,-e过滤事件)命令执行慢/服务启动失败
SystemTap动态内核诊断(版本严格匹配,模块化部署)深度性能分析/内核级监控
IRQ均衡手动绑定中断掩码(/proc/irq/XX/smp_affinity网络密集型应用
taskset进程绑定提升缓存命中率(缓存敏感型程序优先)循环密集型计算任务
cpusetCPU+内存分区隔离(支持NUMA,需设置cpuset.mems数据库/Web服务资源隔离

黄金法则

  1. 性能诊断:先用strace定位用户空间问题,再用SystemTap分析内核瓶颈
  2. CPU绑定:I/O密集型用默认均衡,计算密集型用taskset固定CPU
  3. 生产慎用SystemTap模块需严格测试,避免内核崩溃
http://www.dtcms.com/a/341019.html

相关文章:

  • Linux I/O 多路复用实战:深入剖析 Select 与 Poll
  • capsh 命令详解
  • 【机器学习深度学习】Ollama、vLLM、LMDeploy对比:选择适合你的 LLM 推理框架
  • Objective-C 版本的 LiveEventBus 效果
  • vue+openlayers示例:适配arcgis矢量瓦片服务以及样式(附源码下载)
  • 英伟达Blackwell架构下的中国特供版AI芯片:B30A与RTX 6000D,是技术妥协还是市场新策略?
  • 基于单片机太阳能充电器/太阳能转换电能
  • C端高并发项目都有哪些
  • Angular由一个bug说起之十八:伴随框架升级而升级ESLint遇到的问题与思考
  • C++围绕音视频相关的资料都有哪些?如何进行学习
  • 实现自己的AI视频监控系统-第一章-视频拉流与解码2
  • 【ansible】4.实施任务控制
  • 【沉浸式解决问题】peewee.ImproperlyConfigured: MySQL driver not installed!
  • 亚马逊运营破局:销量与ACOS的动态平衡之道
  • 网页作品惊艳亮相!这个浪浪山小妖怪网站太治愈了!
  • 8 月中 汇报下近半个月都在做些什么
  • VR交通安全学习机-VR交通普法体验馆方案
  • Vue3源码reactivity响应式篇之数组代理的方法
  • Android studio gradle 下载不下来
  • 23种设计模式——模板方法模式(Template Method Pattern)详解
  • 在 Ubuntu Linux LTS 上安装 SimpleScreenRecorder 以录制屏幕
  • 软考中级习题与解答——第一章_数据结构与算法基础(1)
  • 软考网工选择题节选-2
  • uniapp:h5链接拉起支付宝支付
  • uni-app跨端开发最后一公里:详解应用上架各大应用商店全流程
  • 从协同设计到绿色制造:工业云渲染的价值闭环
  • uniapp 手写签名组件开发全攻略
  • 三极管单电源供电中电阻关系的理解
  • Oracle:创建触发器,当目标表相关字段有数据变动时,存入临时表
  • 开发避坑指南(29):微信昵称特殊字符存储异常修复方案