icp备案需要先建设网站么,苏州个人网站制作公司,东莞模板建站软件,装修广告做哪个网站最好看一台服务器#xff0c;不管是物理机还是虚拟机#xff0c;必不可少的就是内存#xff0c;内存的性能又是如何来衡量呢。
1. 内存与缓存
现在比较新的CPU一般都有三级缓存#xff0c;L1 Cache#xff08;32KB-256KB#xff09;#xff0c;L2 Cache#xff08;128KB-2M…一台服务器不管是物理机还是虚拟机必不可少的就是内存内存的性能又是如何来衡量呢。
1. 内存与缓存
现在比较新的CPU一般都有三级缓存L1 Cache32KB-256KBL2 Cache128KB-2MBL3 Cache1M-32M。缓存逐渐变大CPU在取数据的时候优先从缓存去取数据取不到才去内存取数据。 2. 内存与时延
显然越靠近CPU取数据的速度越块通过LMBench进行了读数延迟的测试。 从上图可以看出
Intel(R) Xeon(R) Platinum 8163 CPU 2.50GHz 这款CPU的L1D CacheL1I Cache为32KB而L2 Cache为1ML3为32M在对应的Cache中时延是稳定的不同缓存的时延呈现指数级增长
所以我们在写业务代码的时候如果想要更快地提高效率那么使得计算更加贴近CPU则可以获取更好的性能。但是从上图也可以看出内存的时延都是纳秒为单位而实际业务中都是毫秒为单位优化的重点应该是那些以毫秒为单位的运算而内存时延优化这块则是长尾部分。
3. 内存带宽
内存时延与缓存其实可谓是紧密相关不理解透彻了则可能测的是缓存时延。同样测试内存带宽如果不是正确的测试则测的是缓存带宽了。 为了了解内存带宽有必要去了解下内存与CPU的架构早期的CPU与内存的架构还需要经过北桥总线现在CPU与内存直接已经不需要北桥直接通过CPU的内存控制器IMC进行内存读取操作 那对应的内存带宽是怎样的呢测试内存带宽有很多很多工具linux下一般通过stream进行测试。简单介绍下stream的算法 stream算法的原理从上图可以看出非常简单某个内存块之间的数据读取出来经过简单的运算放入另一个内存块。那所谓的内存带宽内存带宽搬运的内存大小/耗时。通过整机合理的测试可以测出来内存控制器的带宽。下图是某云产品的内存带宽数据
-------------------------------------------------------------
Function Best Rate MB/s Avg time Min time Max time
Copy: 128728.5 0.134157 0.133458 0.136076
Scale: 128656.4 0.134349 0.133533 0.137638
Add: 144763.0 0.178851 0.178014 0.181158
Triad: 144779.8 0.178717 0.177993 0.180214
-------------------------------------------------------------
内存带宽的重要性自然不言而喻这意味着操作内存的最大数据吞吐量。但是正确合理的测试非常重要有几个注意事项需要关注
内存数组大小的设置必须要远大于L3 Cache的大小否则就是测试缓存的吞吐性能CPU数目很有关系一般来说一两个核的计算能力是远远到不了内存带宽的整机的CPU全部运行起来才可以有效地测试内存带宽。当然跑单核的stream测试也有意义可以测试内存的延时。
4. 其他
内存与NUMA的关系开启NUMA可以有效地提供内存的吞吐性能降低内存时延。stream算法的编译方法选择通过icc编译可以有效地提供内存带宽性能分。原因是Intel优化了CPU的指令通过指令向量化和指令Prefetch操作加速了数据的读写操作以及指令操作。当然其他C代码都可以通过icc编译的方法提供指令的效率。原文链接 本文为云栖社区原创内容未经允许不得转载。