00:00
Oma。呃,由于呢,我现在还没有讲那个ZDC。下节课就是不是下节课了,就是下个版本,我讲那个GVM的时候,我会给大家深入分析,ZDC和ZDC是个什么东东呢?ZDC是垃圾垃圾回收器的最后的两种之一啊,Zdc shadown zdc源有一项呢,叫ZDC的nu mawa,就是他能够感知到你的。计算机的底层里头有这么一个结构叫numa,那么numa到底是什么意思呢?一般来说小的机器它的结构都叫做numa,叫uniform memory access,其实其实什么意思?就是特别简单,这就是uma,就好多CPU,然后呢,通过一条总线直接去访问我们的主内存,就是多个CPU共享同一个内存,这叫做UN ma,叫uniform member access,但是nu ma是什么意思?Nu ma的意思是。看这里,看这个图。
01:02
从主板的结构上,它会分成不同的槽。不同的插槽。不通插槽。每一个插槽上有一组。CPU,还有和这组CPU离得特别近的内存,所以它内存其实是插在不同的槽上面,这个CPU去访问我自己的这块内存,要比这个CPU去访问别人家那块内存。别的CPU访问那块内存,我跟你说速度要快的多,这个叫UN ma叫non uniform,非统一访问内存。叫non uniform。OK,我看金泉课程名命令不符合,看会找起来太麻烦,这个你刚开始肯定是来晚了,我刚开始就给大家解释过这个问题了啊,这是腾讯课堂那边对于课程名字的目录的更新,它每个月只能更新一次。
02:02
我们要是嗯嗯,就是有时候加了课之后,每个月更新一次,所以会产生时间长了之后会积累成那个对不上。这个你看,呃,咱们班主任老师给你的那个界面好吗?嗯,好不多说了啊,那继续聊。Uma和unma的区别,不知道大家现在get到了没有,就是UN ma的意思叫uniform member access叫统一内存访问,就是大家伙CPU共同的,没有说谁先谁后,谁优先谁不优先去访问这个内存。而nu ma的意思,我对于自己这块插槽上的内存是具有优先级的。好了,这就叫numa。OK。能get到的同学给老师扣一。那么u ma有什么问题呢?为什么要用ma呢?现在很多很多服务器的架构都是nu ma,为什么?
03:01
是因为UI不容易扩展。呃,据说做的测试就CPU的数量增多以后,内存访问冲突,家具为什么会有访问冲突?因为你要往这个里面写,你想多个CPU去共享一块内存,那这个内存的地址我们一定是多个CPU去征用。谁先用到的就是谁的,我先把这lock住,那就是我的,我要没lock住,那就是你的。所以多个CPU之间的内存访问冲突加剧,CPU的很多资源是花在争抢内存地址上面。以前的工业上的实验叫四颗左右比较合适,本来正常的一个情况说我的最开始的执行速度呢,是在这个位置上,然后呢,我只有一一颗CPU是在这个位置,那我两个CPU呢,应该是一个线性增长,三个CPU呢是一个线性增长,但是后来做的实验不是这样的,它是一个什么样的增长曲线呢?是这样的一个增长曲线。随着一个CPU数量的增多,很多很多的CPU的资源是浪费在竞争内存资源上。
04:05
所以就诞生了现在的nu ma叫non uniform memory access。啊,这个non uniform memory,呃,A的这个架构到底是什么意思,就是在我的呃,主板的插槽上,我有一些CPU的一组CPU是和一些内存放在一起的。我有自己专属的内存,可以这么来理解,然后他们之间又通过总线相连接,我访问别人家内存也是没有任何问题的,我只要通过这条总线去访问就可以了。不过效率稍微低一些。所以。现在的程序。他就又进行了一步优化程序可以干嘛呢?可以做到nu ma。CDC就是这样的,Al什么意思?它能感知到你们家。C你们家的整个的系统的底层架构是这样的,那么如果在这个CPU里面分配了一个对象的话,那么他会优先把这个对象分配在离你近的这个内存里头。
05:11
好了,这就叫做nu ma PC是什么架构?呃,看你有多强了嘛,你的PC要是16颗CPU是吧?每颗CPU有好几个核,其实也是numa,这个得看。你的那个PC的生产厂商了。就近访问原则,对,就这意思,所以AMA很简单啊,叫做能uniform mece。CDC是可以做到什么呢?Numa aware。
06:03
呃,分配内存会优先分配。该线程所在CPU的。离最近内存,它叫做numa,这是底层上的一些优化。那。呃,讲到现在呢,数据一致性,这跟数据一致性有半毛钱关系吗?Cherish,你好好再想想。可以显著提高效率。好,到现在为止呢,关于CPU一些底层的知识,我基本上就讲到这儿了。
我来说两句