oracle 老白,老白学编程 - Netdata学习 - numa

Numa 介绍

NUMA,即Non-Uniform Memory Access Architecture,非统一内存访问架构。

背景

传统的SMP中, 所有处理器共享系统总线,当cpu数目增大时, 系统总现竞争就相应增加,会成为系统的瓶颈,所以SMP系统的CPU数目一般只有数十个。

Numa物理内存管理

有两种类型计算机,分别以不同方式管理内存。

UMA(一致内存访问,unifurm memory access)将内存以连续方式组织起来(可能会有小缺口)。SMP系统中的每个cpu访问的内存区都有一样的。

NUMA(非一致内存访问,non-uniform memory access)是多处理器计算机,各个cpu都有本地的内存,支持快速的访问;各个处理器通过总线连接,用以支持其他cpu本地内存的访问,相比本地内存访问较慢。

41732238ef53f6df5cd168366bc430bf.png

节点

pg_data_t 用于表示节点的基本元素。

ccdd22f936a42cfb4d9d7fd6c1b90bb9.png

zone

每个节点的内存被分为多个块,称做zone。

ZONE_DMA, DMA内存域

ZONE_NORMAL , 可以直接映射到内核的普通内存域。

ZONE_HIGDMEM , 超出内核段的物理地址。

调度

在每个任务创建时都会赋予一个HOME结点(所谓HOME结点,就是该任务获得最初内存分配的结点),它是当时创建该任务时全系统负载最轻的结点,由于目前Linux中不支持任务的内存从一个结点迁移到另一个结点,因此在该任务的生命期内HOME结点保持不变。

一个任务最初的负载平衡工作(也就是选该任务的HOME结点)缺省情况下是由exec()系统调用完成的,也可以由fork()系统调用完成。在任务结构中的node_policy域决定了最初的负载平衡选择方式。

linux kernel 3.8支持page在numa node上迁移。3.8前,调度器对进程page 分配是无感知的,迁移进程是基于对进程cache hotness来预估的,因此在3.8前,若想获得尽可能好的性能,应使用taskset, cpuset等工具将进程pin到特定的核上(c++框架seastar正是这种策略避免迁移的同时也实现了share-nothing);

policy

memory policy指的是在NUMA系统下的内存分配到哪个node上的问题。一种memory policy由一个mode, 可选的mode flags,和可选的nodes组成。分配针对的对象可以是整个系统,可以是某个进程,可以是进程的某段内存区域

系统默认级别

将使用local allocations

任务/进程级别

如果没有被设置,回退到默认;如果被设置,可由fork, exec, clone继承。对于进程设定memory policy之前分配的任何pages在设定之后保持原样

VMA级别 未设定时,默认取基于进程的policy; 主要作用于annoymous mapping(stack,heap) 可在共享虚拟页面的任务上共享,比如线程 exec调用时不继承它,因为exec会丢弃父进程页面,重新创建 如果任务试图在此VMA的子块内再次安装VMA policy,内核会将它分裂成多个VMA 默认情况下,在安装此policy之前的page保持原样,除非mbind调用导致迁移

shared策略

作用于memory objects,与VMA策略类似,也有不同之处

分配模式

NODE LOCAL (系统默认)

在当前代码执行的地方分配内存

Interleave

第一页分配在node 0,下一页在node 1,再下一页node 0,如此轮换。适合被多个线程访问的数据

进程的Numa分配可通过/proc//numa_maps查看,单个node分配查看/sys/devices/system/node/node/meminfo。

进程会从父进程那继承分配策略,即默认的node local,且Linux 调度器会尽可能地在负载均衡的同时保持进程的cache不失效,也即尽可能让进程在靠近分配内存的node的CPU上运行。但,万一负载非常不均,调度器是会将进程迁移到其它numa node上的,这时的内存访问就变成了remote acess,性能会下降。kernel 3.8+支持将数据迁移到running node上。

参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

几个非常实用的JQuery代码片段

jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多)。jQuery使用户能更方便地处理HTML(标准通用标记语言下的一个应用)、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一…

编码的喜悦……以及Java中的变异测试

多年以来,为源代码编写单元测试一直是一种好习惯。 并且还可以使用测试覆盖率报告来查看测试覆盖了多少代码。 尽管行分支覆盖率报告非常有用,但是它并不能告诉您单元测试的实际效果。 因此,甚至在测试中没有一个断言的情况下,甚至…

错误1083:配置成在该可执行程序中运行的这个服务不能执行该服务 【解决办法】...

一直好用的服务程序,今天遇到这个问题,搜了一下各位给出的解决办法; 1.程序里多添加serviceInstaller组件的,然而我并没改代码,也没重新编译,不是解决我问题的办法; 2.修改注册表的,…

oracle 更改启动内存,Oracle 11gR2修改内存参数后无法启动问题

Microsoft Windows [版本 6.1.7600]版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\windows\system32>net start oracleserviceorclOracleServiceORCL 服务正在启动 ......OracleServiceORCL 服务已经启动成功。C:\windows\system32>sqlplus / as sysdbaSQL…

查看所有shell类型

[xfxuexi ~]$ cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh 具体你使用的是那一个,取决于你的用户配置,可以在/etc/passwd文件查看最后一个字段 [xfxuexi ~]$ head -1 /etc/passwd…

Vue—事件修饰符

Vue事件修饰符 Vue.js 为 v-on 提供了事件修饰符来处理 DOM 事件细节&#xff0c;如&#xff1a; event.preventDefault() 或 event.stopPropagation()。Vue.js通过由点 (.) 表示的指令后缀来调用修饰符。 .stop.prevent.capture.self.once <!-- 阻止单击事件冒泡 -->…

如何安装 Angular CLI 并且检查 CLI 的版本

想在系统中安装 Angular CLI &#xff0c;如何进行安装并且如何检查 CLI 的版本&#xff1f; 可以使用命令&#xff1a; npm install -g angular/cli 进行安装。 使用命令 ng version 来查看 Angular 的 CLI 的版本 转载于:https://www.cnblogs.com/huyuchengus/p/10879166.htm…

与Maven和Docker的集成测试

Docker是其中的新热点之一。 与传统虚拟机相比&#xff0c;它具有一套不同的技术和思想&#xff0c;并通过容器的思想实现了相似但同时又有所不同的事物&#xff1a;几乎所有VM都具有强大的功能&#xff0c;但速度更快&#xff0c;并且具有非常有趣的附加功能。 在本文中&…

oracle转mysql总结经验,oracle转mysql总结(转)

ares-sdk初始开发测试使用的是oracle数据库&#xff0c;由于宁波通商的特殊需要&#xff0c;必须把数据库环境从oracle转向mysql。 现对转换过程中出现的问题及经验总结如下&#xff1a;主键生成策略创建一个专门记录序列的表sequence,记录有当前序列号,序列的间隔如1创建记录当…

vue 顶级组件

快 有时候懒的把一些通用组件写到 template里面去&#xff0c;而业务中又需要用到&#xff0c;比如表示 loading状态这样组件。如果是这样的组件&#xff0c;可以选择把组件手动初始化&#xff0c;让组件在整个app生命周期中始终保持活跃。 如&#xff1a; // a.js import Vu…

2018-2019-2 网络对抗技术 20165329 Exp 8 Web基础

2018-2019-2 网络对抗技术 20165329 Exp 8 Web基础 原理与实践说明 实践内容概述基础问题回答实践过程记录 1.Web前端&#xff1a;HTML2.Web前端&#xff1a;javascipt3.Web后端&#xff1a;MySQL基础4.Web后端&#xff1a;编写PHP网页5.最简单的SQL注入&#xff0c;XSS攻击测试…

为JVM分配内存:一个案例研究

这篇文章是关于最近的性能调整练习的。 与往常一样&#xff0c;这些开始于关于症状的模糊表述。 这次&#xff0c;魔鬼采取了“应用程序速度慢&#xff0c;我们无法访问源代码的形式。 我们有什么改善情况的选择”。 对该应用程序进行仔细研究后发现&#xff0c;它由捆绑在一起…

洛谷P4822 冻结

题目描述 “我要成为魔法少女&#xff01;” “那么&#xff0c;以灵魂为代价&#xff0c;你希望得到什么&#xff1f;” “我要将有关魔法和奇迹的一切&#xff0c;封印于卡片之中„„” 在这个愿望被实现以后的世界里&#xff0c;人们享受着魔法卡片&#xff08;\(SpellCard\…

Vue基础指令集锦

v-model双向绑定数据 <input type"text" v-model"msg"> {{msg}} ###v-on 事件 <div id"box"><button v-on:click"say">按钮</button><button click"say">按钮</button> </div>…

oracle删除实体,oracle 按条件删除、查询表

---查询表的名称&#xff0c;字段信息以及字段注释selectus.table_name, --表名ut.COLUMN_NAME,--字段名称uc.comments,--字段注释ut.DATA_TYPE,--字典类型ut.DATA_LENGTH,--字典长度ut.NULLABLE--是否为空from user_tab_columns utinner JOIN user_col_comments ucon ut.TABLE…

Thymeleaf与Spring集成(第2部分)

1.简介 这是Thymeleaf与Spring教程集成的第二部分。 您可以在此处阅读第一部分&#xff0c;在那里您将学习如何配置该项目。 如本教程第一部分开头所述&#xff0c;Web应用程序将发送两种类型的请求&#xff1a; 插入新访客&#xff1a;将同步请求发送到服务器以添加新访客。…

数据结构(一)

1.数据结构---数据在计算机中的存储和组织。 物理结构&#xff1a;线性存储和链式存储。 逻辑结构&#xff1a;数据的关系和联系&#xff0c;线性结构和非线性结构&#xff08;树一对多&#xff0c;前继&#xff0c;后驱&#xff09;。 数据结构和算法是伴生的&#xff0c;算法…

Vue实例和生命周期

创建一个Vue实例 每个Vue应用都是通过Vue函数创建一个新的Vue实例开始&#xff1a; var vm new Vue({//选项 }) 数据与方法 当一个Vue实例被创建时&#xff0c;它向Vue的响应式系统中加入了其data对象中能找到的所有属性。当这个属性的值发生变化时&#xff0c;视图将产生…

boid模型的Matlab程序,动物集群运动行为模型系列之五-—本科毕业设计.doc

动物集群运动行为模型系列之五-—本科毕业设计动物集群运动模型摘要本文主要模拟了鱼群的集群运动、鱼群躲避捕食者追捕的运动情况以及鸟群觅食运动的模拟&#xff0c;以此研究动物个体间的信息传递机制&#xff0c;同时也是对群体智能的初步探索。针对问题一&#xff0c;需要我…

【 jquery 】常用

$("#input1").show(slide); 渐进显示$("#input1").hide(slide); 渐进隐藏 siblings() 方法返回被选元素的所有同级元素 $("#family_name_pinyin").val(arr[0].replace(" ", "")).siblings("span").hide();…