`
longxj
  • 浏览: 101859 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

runqueue balance in multiprocessor system

阅读更多

为了使得进程能够平均地分配到多个cpu之间,linux使用scheduling domain的概念来管理多个cpu,内核保证一个scheduling domain内,负载是均衡的。
具体来说,在每个时钟tick的处理函数中会调用rebalance_tick(),这个函数会根据当前处理器的使用情况,比如是否处于空闲或忙碌状态来决定是否要调用load_balance()(当当前cpu的runqueue是空
时,该函数调用较为频繁)
而load_balance()则首先找到domain里busiest cpu,然后将其runqueue里的进程迁移到当前cpu上来。如果失败了,则寻找到domain里一个最空闲的cpu,将找到的busiest cpu里的任务迁移到那个
最空闲的cpu的队列里去,从而完成负载的均衡。
2009/02/02 一

分享到:
评论

相关推荐

    7_3基于时间片的优先级调度算法.docx

    runqueue->runedtime = runqueue->runedtime + runqueue->killtime; runqueue->runtime = 0; // 此处应添加将已完成的进程从链表中删除的逻辑 } else { // 如果进程还未完成,则应重新插入到就绪队列中 } } }...

    Process Management in Linux

    - **运行队列数据结构**:创建用于保存就绪进程的数据结构`runqueue`。 - **初始化调度器**:`sched_init()`函数负责构建调度所需的内部数据结构。 - **软中断初始化**:调用`softirq_init`函数初始化软中断。 - *...

    LoadRunner监控到的Linux服务器CPU的一些主要指标说明.pdf

    RunQueue 越大,表示等待的队列越长。性能工具通常显示 runnable processes 的数目和 blocked processes 的数目。 七、 vmstat 命令 vmstat 命令可以显示 CPU 的状态,包括 idle、user、system、iowait 等状态。...

    进程调度实现源代码分析

    而`move_last_runqueue()`和`move_first_runqueue()`则用于调整队列中的进程位置。 第五章 内核源代码分析提供了更具体的代码层面的解读,涉及如何通过编程实现上述功能。 最后,第六章和第七章总结了作者的分析...

    2024春西电软工操作系统课程设计源码集合.zip

    3.Runqueue长度观测实验 4.进程切换次数观测实验 5.RR调度算法定制实验 6.系统调用实验/设备驱动实验 7.进程地址空间布局实验 8.进程页表修改实验 实验平台 使用Virtual Box 导入学在西电提供的 OpenEuler ...

    基于SMP的Linux系统并行性分析.pdf

    随着技术的发展,多处理器系统(Symmetric MultiProcessor,SMP)越来越受到重视,特别是在实时控制系统的领域。SMP架构允许多个中央处理器共享主内存,每个处理器都能独立响应中断,形成一个对称的系统结构。这种...

    计算机操作系统的作业调度与进程调度

    1. **操作系统(Operating System, OS)**:是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件。 2. **作业调度(Job Scheduling)**:是指操作系统中的一个过程,它负责...

    Linux学习总结—Linux调度器分析[定义].pdf

    10. **新的数据结构runqueue**:2.6版本引入了更复杂的数据结构struct runqueue,每个CPU都有自己的就绪队列,减少了竞争。 - **active和expired数组**:分别存储时间片未用完和已用完的就绪进程,简化了调度过程...

    Linux 2.6 调度系统分析

    与2.4版本中的全局就绪队列相比,每个CPU现在都维护着自己独立的就绪队列,即runqueue。这一改动显著减少了各处理器间的竞争,降低了调度延迟,提升了系统整体性能。 runqueue的核心数据结构由prio_array_t类型组成...

    TOPAS 命令详解

    Runqueue:等待处理器空闲以便运行的线程平均数。 Waitqueue:等待分页完成的线程平均数。 Readch:在监控期间通过读系统呼叫每秒钟读出的字节数。 Writech:在监控期间通过写系统呼叫每秒钟写入的字节数。 Raw...

    进程切换分析(3):同步处理.pdf

    在进程切换过程中,spin lock的使用尤为重要,因为它保护了runqueue队列不被并发修改。例如,X进程在b点获取锁,然后在Y进程的c点释放锁,同时开启中断。这种跨进程的同步操作保证了数据一致性。 至于是否可以在...

    Linux内核分析与应用课件第3章(三)进程调度.pdf

    在Linux内核中, 就绪队列是一个双向循环链表(runqueue),每个进程对应一个task_struct结构体,其中包括一个run_list链表,用于链入就绪队列中。init_task(0号进程的PCB)为队头。 三、进程调度算法 进程调度...

    源码详解Android中View.post()用法

    在 View 被添加到 Window 中时,View 的宽高还没有计算出来,但是 View.post() 可以保证操作是在 View 宽高计算完毕之后,因为它使用了 RunQueue 来执行任务。 RunQueue 会在 View 的宽高计算完毕之后执行任务,...

    topas命令详解

    - **Runqueue**:等待运行的进程数。 - **Waitqueue**:处于等待状态的进程数。 - **Readch**:每秒通过TTYs读取字符数。 - **Ttyout**:每秒通过TTYs写入字符数。 - **Igets**:每秒文件打开操作次数。 - **Namei**...

    线上问题排查-Linux 性能观测篇.pdf

    - CPU使用率分类:包括用户态CPU使用率(%usr)、内核态CPU使用率(%system)、运行虚拟机CPU使用率(%guest)、等待CPU使用率(%wait)、空闲CPU使用率(idle%,不包括等待I/O的时间)、硬中断、软中断、虚拟机窃取...

Global site tag (gtag.js) - Google Analytics