大学网站建设方案一级a做爰片免费网站国语版的
web/
2025/10/6 8:56:18/
文章来源:
大学网站建设方案,一级a做爰片免费网站国语版的,企业网站建设 厦门,上海微网站一.什么是cpu上下文切换
CPU 上下文切换是操作系统在多任务环境下管理进程的一项关键任务。在现代计算机系统中#xff0c;有多个进程同时运行#xff0c;每个进程都需要一定的 CPU 时间来执行其任务。由于 CPU 在某一时刻只能执行一个进程的指令#xff0c;因此操作系统需…一.什么是cpu上下文切换
CPU 上下文切换是操作系统在多任务环境下管理进程的一项关键任务。在现代计算机系统中有多个进程同时运行每个进程都需要一定的 CPU 时间来执行其任务。由于 CPU 在某一时刻只能执行一个进程的指令因此操作系统需要及时切换 CPU 的上下文将当前运行进程的状态保存下来并加载下一个要执行的进程的状态从而实现进程之间的快速切换。
上下文切换的过程包含以下主要步骤 保存当前进程的上下文 当操作系统决定要切换到另一个进程时首先会将当前运行进程的寄存器、程序计数器和其他必要的状态信息保存到该进程的内核栈中或进程控制块Process Control BlockPCB中。 选择下一个要运行的进程 操作系统根据进程调度算法从就绪队列中选择一个新的进程来运行。这个就绪队列中保存了所有准备好被执行的进程。 恢复下一个进程的上下文 操作系统从下一个要运行的进程的内核栈或 PCB 中恢复其先前保存的状态信息包括寄存器、程序计数器和其他必要的信息。 切换到新进程 CPU 将控制权交给新的进程并开始执行其指令。
这个上下文切换过程对用户是透明的意味着用户不会察觉到进程切换的发生。操作系统负责处理上下文切换确保系统在多个进程之间公平分配 CPU 时间以实现多任务处理。上下文切换的频率通常取决于系统的负载和进程调度算法。
然而上下文切换也是一项开销较高的操作因为它涉及到 CPU 寄存器和内核栈的保存和恢复这会导致额外的计算开销。过多的上下文切换可能会降低系统的性能因此在优化系统性能时减少上下文切换次数是一个重要的考虑因素
二.使用什么工具分析上下文切换问题
vmstatvmstat 命令用于显示系统的虚拟内存统计信息其中包括上下文切换次数。运行 vmstat 1 命令每秒钟显示一次系统状态特别关注输出中的 cs 列该列表示每秒钟的上下文切换次数。
pidstatpidstat 命令用于显示指定进程的资源使用情况包括上下文切换次数。使用 pidstat -w -p PID 命令检查指定进程的上下文切换情况。注意观察 cswch/s 列该列表示每秒钟的自愿voluntary和非自愿non-voluntary上下文切换次数。
perfperf 是一个功能强大的性能分析工具可以用于更深入地分析上下文切换的原因如进程调度和中断等。例如使用 perf record -e context-switches -a 命令记录上下文切换事件然后使用 perf report 命令查看报告。
top / htoptop 和 htop 是常用的实时系统监视工具可以显示系统负载和进程情况。在其中查看 cs 列它显示每秒的上下文切换次数。
chrtchrt 命令用于查看和修改系统的进程调度策略。使用 chrt -m 命令查看系统的进程调度策略确保选择合适的调度策略以减少不必要的上下文切 三.使用案例讲解
1.vmstat cscontext switch每秒上下文切换的次数。ininterrupt每秒的中断数。rrunning | runnable就绪队列的长度即正在运行和等待 CPU 的进程数。bblocked处于不间断睡眠状态的进程数。
2. pidstat
vmstat 工具只给出了系统的整体上下文切换的信息。要查看每个进程的详细信息您需要使用 pidstat。添加 -w 选项您可以看到每个进程的上下文切换 结果中有两列需要我们注意cswch 和 nvcswch。其中cswch 表示每秒自愿上下文切换的次数nvcswch 表示每秒非自愿上下文切换的次数。
自愿上下文切换指进程无法获得所需资源而导致的上下文切换。例如当 I/O 和内存等系统资源不足时就会发生自愿上下文切换。非自愿上下文切换指进程因时间片已过期而被系统强制重新调度时发生的上下文切换。例如当大量进程竞争 CPU 时很容易发生非自愿的上下文切换。
3.测试工具安装
yum install sysbench 测试前查看cpu 使用情况 模拟测试sysbench --threads10 --max-time300 threads run 应该可以发现 cs 栏的上下文切换次数从之前的 35 次突增到 139 万次。同时注意观察其他几个指标
r就绪队列的长度已达到 8us 和 syus 和 sy 的 CPU 使用率加起来是 100%系统 CPU 使用率是 84%说明 CPU 主要被内核占用。in中断数也上升到了 10000说明中断处理也是一个潜在的问题。
结合这些指标我们可以知道系统的就绪队列太长了也就是有太多的进程在运行等待 CPU导致大量的上下文切换而大量的上下文切换导致了系统 CPU 使用率的增长。
那么是什么过程导致了这些问题呢
我们继续分析同时在第三个终端使用 pidstat看看 CPU 和进程上下文切换的情况
我们继续分析同时在第三个终端使用 pidstat看看 CPU 和进程上下文切换的情况
通过pidstat -w -u 1 查看 从 pidstat 的输出可以发现CPU 使用率的增加确实是 sysbench 造成的它的 CPU 使用率已经达到了 100%。但上下文切换来自其他进程包括非自愿上下文切换频率最高的 pidstat以及自愿上下文切换频率最高的内核线程 kworker 和 sshd。
四.结论
自愿上下文切换较多说明进程在等待资源可能会出现 I/O 饱和等其他问题。非自愿上下文切换较多说明进程正在被强制调度也就是都在争抢 CPU说明 CPU 确实产生了瓶颈。中断次数增多说明 CPU 被中断处理程序占用需要通过查看 /proc/interrupts 文件来分析具体的中断类型。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87824.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!