浅谈大数据背景下的NUMA架构研究

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

大数据(big data),或称巨量资料,指的是所涉及的资料量规模巨大到无法透过目前主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。大数据的4V特点:Volume、Velocity、Variety、Veracity。如今,大数据时代已经到来,面对各行各业日益增长的海量信息数据,我们应该如何去收集数据、存储数据(storing)、保留筛选数据、分析数据、以及根据数据分析的结果采取相应行动的一系列过程,在大数据背景下这些问题都面临着巨大的挑战。

这篇文章,主要从计算机体系结构中的NUMA架构的角度出发,讨论一下在如今的大数据背景下,应该从哪些方面着手进行研究,以便适应日益增长的大数据应用。


NUMA简介

NUMA,即非统一内存访问,是一种分布式存储器访问方式,处理器可以同时访问不同的存储器地址,大幅度提高并行性。NUMA系统的节点通常是由一组CPU和本地内存组成。由于每个结点都有自己的本地内存,因此全系统的内存在物理上是分布的,每个结点访问本地内存和访问其它结点的远地内存的延迟是不同的。下图是一个简单的NUMA结构图。

图1 一个拥有四个节点的NUMA系统结构图

 

当今数据计算领域的主要应用程式和模型可大致分为联机事务处理(OLTP)、决策支持系统(DSS)和企业信息通讯(Business Communications)三大类。而小型单独服务器模式、SMP(对称多处理)模式、MPP(大规模并行处理)模式和NUMA模式,则是上述3类系统设计人员在计算平台的体系结构方面能够采用的选择。下面分别简述这三种模式,分析它们的特点,以及NUMA模式的必要性。

SMP模式将多个处理器和一个集中的存储器相连。在SMP模式下,任何处理器都能够访问同一个系统物理存储器,而且访问任意一块内存的时间相同。因此SMP系统有时也被称为一致存储器访问(UMA)结构体系。由于内存访问带宽限制,SMP的可伸缩性有限,在存储器接口达到饱和的时候,增加处理器并不能获得更高的性能。

MPP模式则是一种分布式存储器模式,能够将更多的处理器纳入一个系统的存储器。一个分布式存储器模式具备多个节点,每个节点都有自己的存储器,能够配置为SMP模式,也能够配置为非SMP模式。单个的节点相互连接起来就形成了一个总系统。MPP体系结构对硬件研发商颇具吸引力,因为他们出现的问题比较容易解决,研发成本比较低。由于没有硬件支持共享内存或高速缓存一致性的问题,所以比较容易实现大量处理器的连接。

NUMA模式也采用了分布式存储器模式,不同的是任何节点中的处理器都能够访问全部的系统物理存储器。NUMA最大的特点是存在本地和远端内存,多个内存访问控制器,processor访问这两类内存的开销是不一样的,访问local比remote要快很多。正是由于NUMA结构的特点,使得它具有很好的可扩展性。


NUMA体系的研究点和挑战

         NUMA体系的特点是,每个节点有自己的内存控制器,这样能够在一定程度上缓解内存访问竞争,但访问模式的“复杂化”,同时也给系统优化带来了很大的挑战。

         挑战一:如何合理的分配内存。前面说过,NUMA节点都有自己的本地内存,访问本地内存要比其他节点的内存快很多,这就涉及到内存位置摆放的问题。

         NUMA提供的内存分配机制包括4种:

1.   缺省(default):总是在本地节点分配(分配在当前线程运行的节点上);

2.   绑定(bind):分配到指定节点上;

3.   交织(interleave):在所有节点或者指定的节点上交织分配;

4.   优先(preferred):在指定节点上分配,失败则在其他节点上分配。

对于应用程序开发者来说,如果编写运行在NUMA系统上的程序,合理安排内存块的位置,可以极大的改善程序的性能。但这同时也增大了开发难度,而且需要开发者对于底层硬件有一个比较全面深入的了解;对于系统开发者而言,需要在底层对NUMA体系进行一些适当的优化,比如针对应用程序的特性,采取适当的内存管理机制来提高性能。

挑战二:如何减缓共享资源竞争。共享资源研究相对较多的是共享缓存,在NUMA体系中,同样存在。另外,NUMA体系中可能存在多个内存访问控制器,它们之间的竞争问题也是需要考虑在内的。目前在研究的针对NUMA架构的服务器上,对共享缓存的使用进行优化,调度系统中的任务,使各个NUMA节点的共享缓存能够更加合理的使用,提高系统的吞吐率。通过调度的方法解决共享缓存资源竞争的问题,已经是一个研究比较多的点了。从目前看,这种方式可以提高性能,但是有比较大的不确定性。并不是所有场景都能通过调度解决性能问题。在这个调度方法提出来之前,采用动态的缓存分块技术解决共享缓存资源利用问题的方法是一种研究比较成熟的技术。

另外,NUMA的内存分配策略对于进程(或线程)之间来说,并不是公平的。在现有的Redhat Linux中,localalloc是默认的NUMA内存分配策略,这个配置选项导致资源独占程序很容易将某个节点的内存用尽。而当某个节点的内存耗尽时,Linux又刚好将这个node分配给了某个需要消耗大量内存的进程(或线程),swap就会产生。尽管此时其他节点上还有很多空闲的内存块可以使用。

 

小结

总之,在大数据的背景下,如何对NUMA体系进行优化,从而有效提高程序性能,是一项很有意义同时也很有挑战的工作。NUMA体系的特点使其具有很好的可扩展性,但随之而来的内存分配和资源竞争问题,也不容忽视。对于这方面的研究,还是有必要进一步深入的。

【PyTorch版本兼容性指南】如何在不同版本中正确使用torch.nn.attention 本文详细解析了PyTorch版本兼容性问题,特别是torch.nn.attention模块在不同版本中的使用差异。针对常见的ModuleNotFoundError错误,提供了三种实用解决方案:升级PyTorch版本、使用自定义实现和源码移植方案,并分享了最佳实践建议,帮助开发者有效避免兼容性问题。 阅读详情

相关推荐

如何浏览与下载全球免费的地图高分辨率(亚米级)的遥感影像?

前言 如果你想使用商业卫星的高分辨遥感影像,一般价格昂贵。我们可以使用地图平台上免费的高分辨率数据。目前数据源很多,比如说google earth、天地图、四维地球、必应地图等等。这些影像统一有一个共同点就是:RGB三波段;Web地图瓦片服务。这意味着我们可以通过瓦片服务下载影像,但下载的影像只有三个波段,分别是 一.引言 二、可使用高分辨率的地图数据源 1.Google Earth影像 2.Esri World Image 3.天地图 4.必...

锐多宝的地理空间 2万+

YARN Container的NUMA感知支持

前言

走在前往架构师的路上 2411

[AI] 本地部署 Dify 遇到 Internal Error?一文彻底解决密码不一致引发的问题

摘要:Dify本地部署常见InternalError错误主要由配置残留或密码不一致导致,特别是修改.env文件后未同步清除数据库记录。彻底解决方案包括:1)清理Docker数据;2)删除旧配置和数据库;3)还原源代码;4)重建.env文件;5)重新初始化部署。关键提醒:记录部署路径、备份.env文件并妥善保存密码。该错误本质是配置冲突,最有效方法是完全重置而非调试,保持清晰的部署管理可避免多数InternalError问题。(149字)

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 379

MPP与Hadoop之间的关系是什么?

广义的Hadoop包括 Impala, Presto | Distributed SQL Query Engine for Big Data 这些MPP架构的SQL引擎。Hadoop社区还在持续发展,Spark还在持续给人们带来惊喜,开源软件的迷人之处也在于此。 先从NUMA说起吧,NUMA全称为Non-UniformMemoryAccess,是主流服务服务器为了提高SMP的可扩展性而...

程序之道的博客 1552

云计算入门(3)Google论文MapReduce阅读笔记

名词解释 MapReduce:这里指的是google的,hadoop的是根据本论文的开源实现 Iterator :遍历器 Grep: 模式匹配,简单的说就是从一大堆数据中找到特定的数据及其位置 NUMA架构 : 一种处理系统架构提供分离的存储器来给各个处理器,避免多个处理器等待一个存储器的问题,但是面对多个任务使用同一数据的情况,采用额外软件和硬件移动数据的方法,降低效能。 paxos算法:一种基...

fengqiniuhebahuang的博客 506

Hadoop整体感知

认识一门新技术首先从该技术解决什么问题开始,探讨该技术为解决问题提供了什么特性,是如何实现该特性的,最后探讨在真是环境的应用。        1. 为什么会有hadoop?         随着公司业务发展,数据会逐渐增多,格式也越来越复杂,而这些数据是存在潜在价值的,当数据量达到P级别时,传统数据库就会在存储和计算的平衡上趋于瓶颈。hadoop就是为解决该类问题而诞生的。

驰骋翱翔 569

Hadoop性能调优建议

5、HDFS的Handler数量由dfs.namenode.handler.count、dfs.namenode.service.handler.count和dfs.datanode.handler.count控制。Dfs.namenode.service.handler.count Namenode的RPC服务端用于监听来自datanode和所有非客户端节点请求的线程数。mapreduce.task.io.sort.mb 一般设置为容器内存的25%,加大可以减少map中间结果spill到硬盘次数。

Dreamershi的专栏 1780

浅谈大数据背景下的计算机体系结构存储层次结构研究-(百度移动端笔试题之一)

因为无知,所以无畏, 呵呵... 来源: http://rainytech.blog.51cto.com/3514342/1204450 大数据时代已经到来,面对各行各业日益增长的海量信息数据,我们应该如何去收集数据、存储数据(storing)、保留筛选数据(preserving)、分析数据、以及根据数据分析的结果采取相应行动的一系列过程,在大数据背景下这些问题都面临着巨大的挑战。

1621

浅谈大数据背景下的计算机体系结构存储层次结构研究

大数据时代已经到来,面对各行各业日益增长的海量信息数据,我们应该如何去收集数据、存储数据(storing)、保留筛选数据(preserving)、分析数据、以及根据数据分析的结果采取相应行动的一系列过程,在大数据背景下这些问题都面临着巨大的挑战。         今天,我想从计算机体系结构中的存储层次结构(memory hierarchy)的角度出发,讨论一下在如今的大数据背景下,存储层

RainyCheng的专栏 1745

浅谈大数据背景下的计算机体系结构存储层次结构研究-(百度移动端笔试题之一)...

因为无知,所以无畏, 呵呵... 来源: http://rainytech.blog.51cto.com/3514342/1204450 大数据时代已经到来,面对各行各业日益增长的海量信息数据,我们应该如何去收集数据、存储数据(storing)、保留筛选数据(preserving)、分析数据、以及根据数据分析的结果采取相应行动的一系列过程,在大数据背景下这些问题都面临着巨大的挑战。 ...

445822357 152

hadoop distcp 参数调优_linux性能调优总结 - 星火撩原

系统性能一直是个热门话题。做运维这几年也一直在搞性能调优,写这个文章也算是对工作的总结。讲调优第一步是,要讲为什么要调优?也就是系统分析,分析还需要有指标,做好性能监控的情况下,看到确实需要调优才能进行。不能为了调优而 “调优“ 那不是调优,那是破坏。性能分析的目的找出系统性能瓶颈 为以后的优化提供方案或者参考 达到良好利用资源的目的。硬件资源和软件配置。影响性能的因素想确定有哪些因素,首先确...

weixin_39692557的博客 592

NUMA

NUMA下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器的地方到另一个处理器之间共享的处理器或存储器)快一些。 在使用spark standalone或者yarn时,如果碰到跨cpu核数访问的情况,可以修改相应的代码。 Yarn: --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-s...

afqe60272的博客 202

Hadoop初入门的坑

这几天初入门hadoop,测试一些demo遇到了许多问题,有些问题想了好久才找到办法解决,因此写下这篇入坑小博客,学习编程,解决问题是我们的核心,所以我们遇到难题应该兴奋并解决之。以后我要写多点博客,记录编程的点点滴滴,愿与各位共勉之。下面,正题。 !!!hadoop中遇到问题一定要找相应的日志!!! 一、环境 1、一个linux系统(Centos7)的服务器(不是虚拟机),下面贴出/e

jiayoudeBOKE的博客 6676

Hadoop性能优化点小结

最近一段时间看了许多Hadoop性能优化相关的资料,于是花了点时间整理了一下,希望给正在苦于Hadoop集群性能问题的博友们一点建议吧。 1、Hadoop在存储有输入数据的节点上运行map任务,可以获得最佳性能,称为“数据本地化优化“,所以一般会设置最大分片的大小应该与块大小相同,如果分片跨越2个块的大小,必然要经过网络传输到不同的节点上读取数据。 2、适当的时候使用Combine函数。Com

走在前往架构师的路上 7663

tab点击切换,简单实例

<template> <div class=" padding-50 tabchange" style="color:yellow;"> <ul class="title-ul clearfix"> <li class="title-lists active">tab1</li> <li class="title-lists ">tab2</li>

LJ_QWE的博客 849

yarn container内存调优——防止container被kill

今天散仙写了个MapReduce作业,目的是读数据库里面多个表的数据,然后在JAVA中根据具体的业务情况做过滤,并把符合数据的结果写入到HDFS上,在Eclipse里面提交作业进行调试的时候,发现在Reduce阶段,总是抛出Java heap space的异常,这异常明显,就是堆内存溢出造成的,然后散仙仔细看了下业务块的代码,在Reduce里读数据库的时候,有几个表的返回数据量比较大约有50万左右

a11123939的专栏 1万+

【性能】什么是NUMA(Non-Uniform Memory Access)|什么是SMP

什么是NUMA(Non-Uniform Memory Access) NUMA VS. UMA NUMA(Non-Uniform Memory Access)非均匀内存访问架构是指多处理器系统中,内存的访问时间是依赖于处理器和内存之间的相对位置的。 这种设计里存在和处理器相对近的内存,通常被称作本地内存;还有和处理器相对远的内存, 通常被称为非本地内存。 UMA(Uniform Memory Access)均匀内存访问架构则是与NUMA相反,所以处理器对共享内存的访问距离和时间是相同的。由此可知,不论

我的笔记本 2万+

numa

NUMA的诞生背景NUMA出现之前,CPU朝着高频率的方向发展遇到了天花板,转而向着多核心的方向发展。 在一开始,内存控制器还在北桥中,所有CPU对内存的访问都要通过北桥来完成。此时所有CPU访问内存都是“一致的”,如下图所示: UMA 这样的架构称为UMA(Uniform Memory Access),直译为“统一内存访问”,这样的架构对软件层面来说非常容易,总线模型保证所有的内...

雪雪 635

numa架构与性能解析

      说到服务器的NUMA架构,大家或许都知道。NUMA架构在中大型系统上一直非常盛行,也是高性能的解决方案,尤其在系统延迟方面表现都很优秀。但NUMA架构对服务器的相关性能到底有什么影响,怎样设置会更好呢?本文在此解析一下。  1、什么是NUMA  NUMA(Non Uniform Memory Access Architecture)是一种用于多处理器的电脑记忆体设计,内存访问时间取决于...

weixin_34413065的博客 913

NUMA体系结构详解

由于OpenStack Kilo增加很多针对NUMA体系结构的增强功能,所以又重新温习了下NUMA相关的知识,简单做个笔记。   1. NUMA的几个概念(Node,socket,core,thread)   对于socket,core和thread会有不少文章介绍,这里简单说一下,具体参见下图:    一句话总结:socket就是主板上的CPU插槽; Core就是socket里独立的一组程序执行

少帅的天空 4万+
上一篇: CentOS下安装Kscope-1.6.2
下一篇: 求一个集合的所有子集
niji523
博客等级 码龄15年 2粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值