smp架构与numa架构_NUMA架构和Java
smp架构与numa架构
这些具有巨大内核的盒子带有非统一内存访问(NUMA)架构。 NUMA是可提高本地节点的内存访问性能的体系结构。 这些新的硬件盒分为称为节点的不同区域。 这些节点具有一定数量的核心,并分配有一部分内存。 因此,对于具有1 TB RAM和80个核心的机箱,我们有4个节点,每个节点具有20个核心和256 GB的内存分配。
您可以使用命令numactl --hardware
>numactl --hardware
available: 4 nodes (0-3)
node 0 size: 258508 MB
node 0 free: 186566 MB
node 1 size: 258560 MB
node 1 free: 237408 MB
node 2 size: 258560 MB
node 2 free: 234198 MB
node 3 size: 256540 MB
node 3 free: 237182 MB
node distances:
node 0 1 2 3 0: 10 20 20 20 1: 20 10 20 20 2: 20 20 10 20 3: 20 20 20 10
JVM启动时,它将启动线程,这些线程是在某些随机节点的内核上调度的。 每个线程都尽可能快地使用其本地内存。 线程可能在某个时候处于WAITING状态,并在CPU上重新调度。 这次不能保证它将在同一节点上。 现在这一次,它必须访问一个远程存储位置,这会增加延迟。 远程存储器访问速度较慢,因为指令必须遍历互连链路,从而引入额外的跃点。
Linux命令numactl提供了一种仅将进程绑定到某些节点的方法。 它将进程锁定到特定的节点以执行和分配内存。 如果将JVM实例锁定到单个节点,则将删除节点间的流量,并且所有内存访问都将在快速本地内存上进行。
numactl --cpunodebind=nodes, -c nodes
Only execute process on the CPUs of nodes.
创建了一个小型测试,该测试试图序列化一个大对象并计算每秒的事务和延迟。
要执行绑定到一个节点的Java进程,请执行
numactl --cpunodebind=0 java -Dthreads=10 -jar serializationTest.jar
将此测试运行在两个不同的盒子上。
盒子A
4个CPU x 10核x 2(超线程)=总共80核
节点:0,1,2,3
方块B
2个CPU x 10个内核x 2个(超线程)=总共40个内核
节点:0,1
CPU速度:两者均为2.4 GHz。
默认设置也使用包装盒上所有可用的节点。
框 | NUMA政策 | TPS | 延迟 (平均) | 延迟 (分钟) |
一个 | 默认 | 261 | 37 | 18 |
乙 | 默认 | 387 | 25 | 5 |
一个 | –cpunodebind = 0,1 | 405 | 23 | 3 |
乙 | –cpunodebind = 0 | 1,613 | 5 | 3 |
一个 | –cpunodebind = 0 | 1,619 | 5 | 3 |
因此,我们可以推断,与“ 2个节点” Box B上的默认设置相比,“节点较多”的Box A上的默认设置在“ CPU密集型”测试中的性能较低。但是,由于我们仅将流程绑定到2个节点,因此它的性能相同更好。 可能是因为它的节点跳数更少,并且在同一节点上重新安排线程的概率增加到50%。
当--cpunodebind=0
,它的表现优于所有情况。
注意:以上测试是在10个内核上使用10个线程运行的。
测试罐: 下载
测试源: 下载
参考:来自我们的JCG合作伙伴 Himadri Singh的NUMA和Java ,在Billions&Terabytes博客上。
翻译自: https://www.javacodegeeks.com/2012/09/numa-architecture-and-java.html
smp架构与numa架构
smp架构与numa架构_NUMA架构和Java相关推荐
- numa节点_NUMA架构下的内存访问延迟区别!
现在的服务器物理机CPU一般都是多个CPU,核数也是十几甚至几十核.内存几十GB甚至是上百G,也是由许多条组成的.那么我这里思考一下,这么多的CPU和内存它们之间是怎么互相连接的?同一个CPU核访问不 ...
- 【操作系统】SMP vs NUMA vs MPP 架构简介
目录 概述 单处理器系统(Single Processor Systems) 多处理器系统(Multi Processor Systems) 集群系统(Clustered Systems) SMP对称 ...
- linux如何查看系统架构?(查看系统架构命令)(armv7l)
文章目录 命令 1. uname 命令 2. dpkg 命令 3. getconf 命令 4. arch 命令 5. file 命令 瑞芯微摄像头arm-linux(很多命令都没有...) 命令 以下 ...
- 朱晔的互联网架构实践心得S1E9:架构评审一百问和设计文档五要素
朱晔的互联网架构实践心得S1E9:架构评审一百问和设计文档五要素 [下载文本PDF进行阅读] 本文我会来说说我认为架构评审中应该看的一些点,以及我写设计文档的一些心得.助你在架构评审中过五关斩六将,助 ...
- Google App Engine技术架构之Google App Engine架构
上一篇我们介绍了Google App Engine的基本信息,本篇将首先介绍App Engine的一些设计理念,接着将对App Engine的组成部分等进行介绍. 设计理念 App Engine在设计 ...
- dubbo协议_阿里P8架构师谈微服务架构:Dubbo+Docker+SpringBoot+Cloud
微服务架构 什么是微服务架构呢?简单说就是将一个完整的应用(单体应用) 按照一定的拆分规则(后文讲述)拆分成多个不同的服务,每个服务都能独立地进行开发.部署.扩展.服务于服务之间通过注入RESTful ...
- 如何成为一名Android架构师,乃至高级架构师,文末有路线图
很多Android的小伙伴在做了多年的开发之后,始终搞不清楚达到Android架构师需要何种技能,我们对比着Android高级工程师来说明. 我们先来看一下Android高级工程师的招聘要求 职位描述 ...
- 互联网架构师必备技术 Docker仓库与Java应用服务动态发布那些事
讲师简介: James老师 十余年Java经验,曾就职于携程.人人网等一线互联网公司,专注于java领域,精通软件架构设计,对于高并发.高性能服务有深刻的见解, 在服务化基础架构和微服务技术有大量的建 ...
- 架构师之路 — 业务架构 — Overview
目录 文章目录 目录 业务架构 TOGAF 设计的业务架构 业务架构 OMG 的业务架构工作组(BAWG)给了如下定义: 业务架构明确定义企业的治理结构.业务能力.业务流程.业务数据.其中,业务能力定 ...
最新文章
- cvpr2018论文阅读
- 找回创新能力 才是苹果的救命稻草
- UE4异步编程专题 - 线程池FQueuedThreadPool
- php mysql随机记录_php随机取mysql记录方法小结
- Redis和Memcached的区别详解
- 轻量级HTTP服务器Nginx(Nginx性能优化技巧)
- FFmpeg纯净版解码 av_parser_parse2
- 矩池云上出现Could not find conda environment
- 贺利坚老师汇编课程33笔记:[bx+idata]对同长度字符串进行同步处理
- 微信公众号h5开发流程
- 三年白干!程序员因违反《竞业协议》赔偿腾讯 97.6 万元,返还 15.8 万元
- 荣耀20搭载鸿蒙,荣耀20新机发布 搭载鸿蒙系统荣耀20详细参数
- java内部窗口无法实现,java 既不是内部命令也不是外部命令的解决办法
- 【Django】模板
- 读《枪炮,病菌和钢铁》
- 网络安全学习笔记——红队实战攻防(中)
- 致我们终将逝去的大学生活
- dnspod 动态域名的使用。openwrt使用dnspod动态域名解析。
- 华为od统一考试B卷【最少面试官数】Python 实现
- 使用convert对jpg图像压缩和缩放