平均负载和上下文切换

文章目录

  • 平均负载和上下文切换学习笔记:
    • 一、平均负载(Load Average)
    • 二、相关命令
    • 三、平均负载与CPU使用率的区别
    • 四、上下文切换(Context Switch)
    • 五、减少上下文切换的技术用例
    • 六、CPU为什么要进行上下文切换


平均负载和上下文切换学习笔记:

一、平均负载(Load Average)

  1. 定义: 单位时间内,系统中处于可运行状态和不可中断状态的平均进程数。

  2. 错误定义: 不是单位时间内的CPU使用率,而是系统中等待CPU和正在执行的进程数量的平均值。

  3. 理想状态: 每个CPU上都有一个活跃进程,平均负载数等于CPU数量。

  4. 过载经验值: 平均负载高于CPU数量的70%时,系统可能过载。

二、相关命令

  1. uptime 显示系统运行时间和平均负载。

    uptime
    
  2. top 实时显示系统运行状态,包括平均负载。

    top
    
  3. watch -d uptime 动态显示uptime,高亮显示变化的区域。

    watch -d uptime
    
  4. stress 压测命令,用于测试系统稳定性。

    stress --cpu 4 --io 2 --vm 1 --vm-bytes 128M --timeout 10s
    
  5. mpstat 多核CPU性能分析工具。

    mpstat -P ALL 1
    
  6. pidstat 进程性能分析工具。

    pidstat -wtu 1
    
  7. vmstat 虚拟内存统计工具。

    vmstat -wt 1 1
    

三、平均负载与CPU使用率的区别

  1. CPU使用率: 单位时间内CPU繁忙情况的统计。

  2. 平均负载: 反映系统中运行和等待CPU的进程数,与CPU使用率不一定一致。

  3. 情况区分:

    • CPU密集型:平均负载和CPU使用率基本一致。
    • IO密集型:平均负载升高,CPU使用率不一定升高。
    • 大量进程调度:平均负载和CPU使用率同时升高。

四、上下文切换(Context Switch)

  1. 定义: 是对任务当前运行状态的暂存和恢复过程。

  2. 类型:

    • 进程上下文切换
    • 线程上下文切换
    • 中断上下文切换
  3. 过程:

    • 记录当前任务的上下文。
    • 找到新任务的上下文并加载。
    • 切换到新任务的程序计数器位置,恢复其任务。
  4. 触发条件:

    • 时间片耗尽
    • 资源不足
    • 进程睡眠
    • 高优先级进程
    • 硬件中断
  5. 性能问题: 大量的上下文切换可能引发性能问题,需谨慎处理。

五、减少上下文切换的技术用例

  1. 数据库连接池: 复用连接减少进程间的上下文切换。
  2. 合理设置进程、线程数: 避免过多进程导致切换开销。
  3. 直接内存访问(DMA): 减少CPU参与IO操作。
  4. 零拷贝技术: 优化数据传输过程,减少拷贝次数。

六、CPU为什么要进行上下文切换

  1. 多任务调度: 多个进程竞争CPU,保证公平调度和执行。
  2. 时间片轮转: 采用时间片机制,轮流处理多个进程。
  3. 硬件中断响应: 中断处理打断正常调度,需要切换到中断上下文。

总体而言,理解平均负载和上下文切换对于系统性能分析和优化是非常重要的。通过合理使用相关命令和技术手段,可以更好地监控系统状态,及时发现和解决性能问题。

你可能感兴趣的:(linux)