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

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.xdnf.cn/news/18445.html

相关文章:

  • 详解flink table api基础(三)
  • 在Excel和WPS表格中制作可打印的九九乘法表
  • 服务器内存使用buff/cache的原理
  • 单片机驱动继电器接口
  • 图论Day6学习心得
  • 动态规划----8.乘积最大子数组
  • 从“怀疑作弊”到“实锤取证”:在线面试智能监考重塑招聘公信力
  • CMake1:概述
  • 通过自动化本地计算磁盘与块存储卷加密保护数据安全
  • 前端-JavaScript笔记(核心语法)
  • CentOS 系统 Java 开发测试环境搭建手册
  • C/C++嵌入式笔试核心考点精解
  • Kafka如何保证「消息不丢失」,「顺序传输」,「不重复消费」,以及为什么会发生重平衡(reblanace)
  • SpringWeb详解
  • Java FTPClient详解:高效文件传输指南
  • CSS3DRenderer+ CSS3DObject实现在 Three.js 中添加文本内容
  • Preprocessing Model in MPC 2 - 背景、基础原语和Beaver三元组
  • Java 学习笔记(基础篇6)
  • 分布式唯一 ID 生成方案
  • leetcode 3 无重复字符的最长子串
  • 将集合拆分成若干个batch,并将batch存于新的集合
  • C语言第十章内存函数
  • C语言:第18天笔记
  • 【自记】Power BI 中 ALLNOBLANKROW的适用场景举例
  • 疏老师-python训练营-day51复习日+退款开始
  • 计算机网络技术学习-day4《路由器配置》
  • SQL 中大于小于号的表示方法总结
  • 微软宣布开源大模型gpt-oss在Azure平台实现性能突破
  • Git 新手完全指南(二):在vscode中使用git
  • 官网SSO登录系统的企业架构设计全过程