影响程序性能的两个重要因素:
①应用程序从处理器缓存和从内存子系统获取数据所消耗的时间,其中存在各种延迟;
②带宽b/w(bandwidth 非Bilibili World)
mlc正是做这个的
在NUMA(Non-Uniform Memory Access 非一致性内存访问)构架下,不同的内存器件和CPU核心从属不同的 Node,每个 Node 都有自己的集成内存控制器(IMC,Integrated Memory Controller),解决了“每个处理器共享相同的地址空间问题”,避免总线带宽,内存冲突问题。
(补充:core=物理cpu,独立的物理执行单元;thread=逻辑cpu,线程
socket = node 相当于主板上的cpu插槽。node内部,不同核心间使用IMC Bus通信;不同node间通过QPI(Quick Path Interconnect)进行通信
同城速达的速度肯定与国际邮件不同,所以QPI(remote)延迟明显高于IMC Bus(local)
测试样例:
查询内存访问延迟 指令
./mlc --latency_matrix
结果
Numa node Numa node 0 1 0 82.2 129.6 1 131.1 81.6
表示node之间/内部的空闲内存访问延迟矩阵,以ns为单位
带宽反映了单位时间的传输速率马路越宽,就不会堵车了。带宽反映了单位时间的传输速率
Measuring Peak Injection Memory Bandwidths for the system Bandwidths are in MB/sec (1 MB/sec = 1,000,000 Bytes/sec) Using all the threads from each core if Hyper-threading is enabled Using traffic with the following read-write ratios ALL Reads : 69143.9 3:1 Reads-Writes : 61908.4 2:1 Reads-Writes : 60040.5 1:1 Reads-Writes : 54517.6 Stream-triad like: 57473.4
r:w 表示不同读写比下的内存带宽
一般情况下,内存的写速度慢于读取速度(Talk is easy, show me the CODE)
所以当读写比下降时,带宽会下降(路窄了,塞车了)
问题分析:如果带宽急剧下降,可能是写入程序增多;或者是写入程序出问题,速度太慢了
测试样例
查询存访问带宽 指令(单独判断numa节点间内存访问是否正常还可以使用 )
./mlc --bandwidth_matrix
结果
Measuring Memory Bandwidths between nodes within system Bandwidths are in MB/sec (1 MB/sec = 1,000,000 Bytes/sec) Using all the threads from each core if Hyper-threading is enabled Using Read-only traffic type Numa node Numa node 0 1 0 35216.6 32537.9 1 31875.1 35048.5
问题分析:如果副对角线数值相差过大,表明两个node相互访问的带宽差距较大
解决方法:出现不平衡的时候一般从内存插法、内存是否故障以及numa平衡等角度进行排查
Measuring Loaded Latencies for the system Using all the threads from each core if Hyper-threading is enabled Using Read-only traffic type Inject Latency Bandwidth Delay (ns) MB/sec ========================== 00000 523.74 69057.4 00002 589.55 68668.7 00008 686.99 68571.4 00015 549.87 68873.6 00050 575.48 68673.0 00100 524.74 68877.5 00200 197.61 64225.8 00300 131.60 47141.0 00400 110.39 36803.0 00500 117.32 30135.2 00700 100.90 22179.1 01000 100.93 15762.8 01300 91.74 12351.6 01700 98.61 9475.2 02500 86.66 6927.8 03500 88.13 5132.6 05000 87.68 3818.6 09000 85.36 2473.5 20000 84.83 1538.7
可以观察内存在负载压力下的响应变化,以及是否在到达一定带宽时,出现不可接受的内存响应时间
Measuring cache-to-cache transfer latency (in ns)... Local Socket L2->L2 HIT latency 38.6 Local Socket L2->L2 HITM latency 43.6 Remote Socket L2->L2 HITM latency (data address homed in writer socket) Reader Socket Writer Socket 0 1 0 - 133.4 1 133.7 - Remote Socket L2->L2 HITM latency (data address homed in reader socket) Reader Socket Writer Socket 0 1 0 - 133.5 1 133.7 -
指令
mlc --peak_bandwidth
结果
Using buffer size of 100.000MB/thread for reads and an additional 100.000MB/thread for writes Measuring Peak Memory Bandwidths for the system Bandwidths are in MB/sec (1 MB/sec = 1,000,000 Bytes/sec) Using all the threads from each core if Hyper-threading is enabled Using traffic with the following read-write ratios ALL Reads : 50035.2 3:1 Reads-Writes : 48119.3 2:1 Reads-Writes : 47434.3 1:1 Reads-Writes : 48325.5 Stream-triad like: 44029.0
指令
mlc --idle_latency
结果
Using buffer size of 200.000MB Each iteration took 260.5 core clocks ( 113.3 ns)
指令
mlc --loaded_latency
结果
Using buffer size of 100.000MB/thread for reads and an additional 100.000MB/thread for writes Measuring Loaded Latencies for the system Using all the threads from each core if Hyper-threading is enabled Using Read-only traffic type Inject Latency Bandwidth Delay (ns) MB/sec ========================== 00000 217.32 49703.4 00002 258.98 49482.4 00008 217.48 49908.1 00015 220.12 49973.7 00050 206.33 49185.7 00100 174.02 43811.8 00200 141.63 27651.1 00300 130.65 19614.6 00400 126.05 15217.0 00500 122.70 12506.0 00700 121.46 9253.0 01000 120.55 6690.6 01300 118.75 5314.9 01700 120.18 4148.7 02500 119.53 3055.7 03500 119.60 2349.4 05000 116.60 1816.9 09000 116.17 1257.8 20000 116.87 867.6
测量指定node之间的访问延迟
测量CPU cache的访问延迟
测量cores/Socket的指定子集内的访问带宽
测量不同读写比下的带宽
指定随机的访问模式以替换默认的顺序模式进行测量
指定测试时的步幅
文章浏览阅读202次。packagecode;//importjava.awt.*;//importjava.awt.Canvas;//importjava.awt.event.*;//importjavax.swing.*;importjava.util.Random;importjavax.microedition.lcdui.*;//写界面所需要的包/***//***俄罗斯方块*高雷*2007年1..._240×320java游戏
文章浏览阅读779次,点赞14次,收藏19次。然后,实现系统的数据管理和服务功能,包括用户的注册与登录、电影的分类与展示、电影信息的查询与推荐、座位的选择与预订、在线支付与电子票生成等。此外,随着在线视频平台的兴起,越来越多的人选择在线观看电影,这对传统电影院产生了巨大的冲击。研究意义: 开发在线电影院售票平台对于提升用户的观影体验、优化电影院的运营效率、促进电影产业的发展具有重要的意义。该系统旨在通过技术手段解决传统电影院售票中的问题,提供一个集成化的电影信息展示、座位选择、在线支付和用户评价平台,同时也为电影院和电影制作方提供有效的工具。
文章浏览阅读509次。保护我们剩下的人的通话信息安全,使用TOX可以让你在和家人,朋友,爱人交流时保护你的隐私不受政府无孔不入的的偷窥.关于TOX:其他牛逼的软件因为一些细化服务问你要钱的时候, TOX分文不取 . 你用了TOX, 想干嘛就干嘛.网友评论:项目源码展示:源码测试效果:最后,如果你学C/C++编程有什么不懂的,可以来问问我哦,或许我能够..._基于c++的即时聊天系统设计
文章浏览阅读584次。鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)当Java服务在Linux系统中运行时,可能会出现swap分区被占用的内存泄露问题,导致系统性能下降或者崩溃。下面是该问题的故障及解决方法、底层结构、架构图、工作原理、使用场景详解和实际应用方式、原理详细描述、相关命令使用示例以及文献材料链接。_linux swap占用很高
文章浏览阅读662次。Alt+F11,然后插入-模块:复制下面代码到编辑窗口:Sub 半角标点符号转换为全角标点符号()'中英互译文档中将中文段落中的英文标点符号替换为中文标点符号 Dim i As Paragraph, ChineseInterpunction() As Variant, EnglishInterpunction() As Variant Dim MyRange..._替换半角宏
文章浏览阅读2.8k次。#.简介: WebView是Android提供的用来展示展示web页面的View,内部使用webkit浏览器引擎(一个轻量级的浏览器引擎),除了展示Web页面外,还可与Web页面内的JS脚本交互调用。WebView内部的WebSetting对象负责管理WebView的参数配置; WebViewClient负责处理WebView的各种请求和通知事件,在对应事件发生时会执行WebViewClient的对应回调; ChromeWebviewClient辅助Webview处理与JS一些交互......_android webview真正加载完成
文章浏览阅读1.6k次。_bitcoin 调试环境搭建
文章浏览阅读4.3k次,点赞93次,收藏94次。为了解决贝塞尔曲线无法局部修正、控制性减弱、曲线次数过高、不易拼接的缺陷,引入B样条曲线(B-Spline)。本文介绍B样条曲线的基本概念:节点向量、支撑性、次数阶数、加权性质、节点生成算法等,为后续曲线计算打下基础。_样条曲线生成
文章浏览阅读902次。配置本地repo库下载我的阿里云盘文件文件放置#创建目录mkdir -p /opt/cloudera/parcel-repo/mkdir -p /opt/cloudera/cm/yum install createrepoCDH 6.2.0 的三个文件放到/opt/cloudera/parcel-repo/中,并且注意把sha256后缀的文件名修改为sha#执行createrepo命令生成rpm元数据 最终/opt/cloudera/parcel-repo/会多一个repodata目录_/opt/cloudera/cm-agent/service/mgmt/mgmt.sh: line 76: /usr/java/jdk1.8.0_181
文章浏览阅读943次,点赞2次,收藏2次。uni.canvasToTempFilePath_uni.canvastotempfilepath
文章浏览阅读3.1k次。SRAM :静态RAM,不用刷新,速度可以非常快,像CPU内部的cache,都是静态RAM,缺点是一个内存单元需要的晶体管数量多,因而价格昂贵,容量不大。DRAM:动态RAM,需要刷新,容量大。SDRAM:同步动态RAM,需要刷新,速度较快,容量大。DDR SDRAM:双通道同步动态RAM,需要刷新,速度快,容量大。........................_sdram 干扰
文章浏览阅读7.3k次。假设表格有A、B、C、D四列数据,希望导入到你的数据库中表格table,对应的字段分别是col1、col2、col3、col4。_excel数据怎么生成sql语句