首页 > 系统相关 >MPI(二)- 进程调度,绑定

MPI(二)- 进程调度,绑定

时间:2024-05-30 20:56:28浏览次数:47  
标签:操作系统 核心 绑定 调度 MPI 进程 CPU

单节点情况下

不显式绑定CPU核心

MPI运行时环境会依赖操作系统来管理MPI进程与CPU核心的映射和调度。操作系统会尝试均匀分配负载,但可能会出现缓存污染、上下文切换开销增加以及 NUMA 访问延迟等问题。

默认调度

  • 操作系统的默认调度器会将进程分配到可用的 CPU 核心上,尝试均匀分布负载。
  • MPI 进程可能会在不同的时间段运行在不同的核心上(也就是说,进程可能会迁移)。

超线程

  • 如果系统支持超线程,每个物理核心可能会有多个逻辑核心。操作系统可能会将 MPI 进程调度到这些逻辑核心上,这可能导致性能下降,因为多个进程共享相同的物理资源。

NUMA(非一致性内存访问)

  • 在多插槽系统中,操作系统需要考虑 NUMA 结构。如果进程和它们所使用的内存分配在不同的 NUMA 节点上,可能会导致内存访问延迟增加

显式绑定CPU核心

将 MPI 进程与 CPU 核心绑定(也称为 CPU 亲和性)可以提高性能,因为它减少了上下文切换和缓存失效。

mpirun --bind-to core --map-by core -np 4 ./your_mpi_program

--map-by core :将 MPI 进程映射到不同的 CPU 核心。其主要目的是确保进程被合理地分布到可用的核心上,尽量避免多个进程同时占用同一个核心。这种映射策略可以优化进程之间的资源使用,减少资源争用。

--bind-to core:将 MPI 进程绑定到具体的核心上。绑定的目的是确保进程在执行过程中始终运行在同一个核心上,防止操作系统将其迁移到其他核心,从而降低上下文切换的开销并提高缓存命中率。

注:进程绑定只能减低系统原因带来的性能影响,而不解决任何程序本身存在的问题 ,尤其是负载不均衡导致的性能波动(甚至可能在绑核后变得更明显)。此外,绑定仅仅指将进程/线程限制在指定的 CPU 核心上,但仍然可能有其他进程抢占这些资源。即使进程独占了一部分核心,其他核心上的进程 也可能对其性能产生影响(如抢占共享的 cache 或内存带宽)。

标签:操作系统,核心,绑定,调度,MPI,进程,CPU
From: https://www.cnblogs.com/tao-gak567/p/18223192

相关文章

  • Avalonia下DataGrid多选MVVM绑定的功能
    安装Avalonia.Xaml.BehaviorsInstall-PackageAvalonia.Xaml.BehaviorsDataGridSelectedItemsBehavior.csusingAvalonia;usingAvalonia.Controls;usingAvalonia.Threading;usingAvalonia.Xaml.Interactivity;namespaceCgdataBase;publicclassDataGridSelected......
  • SpringBoot项目接入分布式任务调度平台xxl-job(2.0.2)说明
    简介如果是单体项目,定时任务写到项目中就能满足需要,当需要部署集群的时候就会出现问题,接入统一的任务调试平台是一个不错的选择。接入xxl-job挺简单的,只需要几步,好记性不如烂笔头,记录一下步骤,方便以后使用。 本次使用软件的相关版本:xxl-job版本:2.0.2spring-boot:2.3.6.RELEAS......
  • Error in system(paste(MAKE, p1(paste("-f", shQuote(makefiles))), "compilers"),
     001、R语言windows中安装R包出现如下报错Errorinsystem(paste(MAKE,p1(paste("-f",shQuote(makefiles))),"compilers"),:'make'notfound 002、确认是否安装Rtoolsinstall.packages("pkgbuild")pkgbuild::find_rtools(debug=TRU......
  • 分布式任务调度内的 MySQL 分页查询优化
    一、背景介绍最近在线上环境发现了一条执行较慢的分页查询,高并发执行,产生了大量的慢查询日志,CPU使用率逐步升高。通过观察它的执行时间,发现该SQL查询时快时慢,执行时间并不稳定,以至于在高并发执行场景时,数据库来不及响应,数据库服务变慢。二、分析定位2.1定位SQL执行......
  • 绑定事件的方法有几种?
    在JavaScript中,绑定事件的方法主要有以下几种:1.HTML内联事件:直接在HTML元素中使用事件属性来绑定事件html<buttononclick="handleClick()">点击我</button><script>functionhandleClick(){alert('你点击了按钮!');}</script>2.DOM0级事件:通过JavaScript直接为元素......
  • 【SCAU操作系统】实验三单处理器系统的进程调度python源代码及实验报告参考
    一、课程设计目的        1.加深对进程概念的理解,明确进程和程序的区别。        2.深入了解系统如何组织进程、创建进程。        3.进一步认识如何实现处理器调度。二、课程设计内容        编写程序完成单处理器系......
  • vue3 表单输入绑定
    表单输入绑定在前端处理表单时,我们常常需要将表单输入框的内容同步给JavaScript中相应的变量。手动连接值绑定和更改事件监听器可能会很麻烦:<input:value="text"@input="event=>text=event.target.value">v-model指令帮我们简化了这一步骤:<inputv-model=......
  • Leetcode621. 任务调度器
    EverydayaLeetcode题目来源:621.任务调度器类似题目:1953.你可以工作的最大周数解法1:贪心本质上来说,我们需要构造一个尽量短的,相同元素间隔>=(n+1)的序列。用一个数组cnt统计每个任务的次数。设cnt的元素和为s,这是任务总数,也是序列长度的下界。当存在多个......
  • 异步数据加载与绑定设计: AsyncLoadHelper
    在现代应用程序开发中,异步数据加载和管理是一个普遍的需求。本文介绍了一个自定义的异步数据加载工具——AsyncLoadHelper。通过详细的设计和实现介绍,以及结合实际应用示例,展示了AsyncLoadHelper在简化异步操作、提高代码可读性和维护性方面的优势。在开发过程中,异步数据加载常常......
  • WPF 中具有静态属性的数据绑定
    我有一个简单的静态属性FontSizeTitle,它应该用于所有HandledWindow类型实例中的风格化标题,并在更改属性后同时从同一个静态属性更新而无需明确通知。通过设置面板或任何会更改属性的内容,以便直观地更改和更新所有窗口的所有标题的字体大小。这是我在XAML中风格化标题的代码,它......