美国服务器多核并行编程技术

        美国服务器目前主流的系统都是冯诺依曼架构的,即共享内存的计算模型,这种过程计算模型对美国服务器的并行计算并不友好,该架构中有如下设计特点:,        1、多个CPU核心改善美国服务器处理器的计算处理能力;,        2、多级cache改善美国服务器CPU访问主存的效率;,        3、各个CPU都有本地内存NUMA(非一致性内存访问),进一步改善美国服务器CPU访问主存的效率;,,        4、store buffer模块改善cache write由于应答延迟而造成的美国服务器系统写停顿问题;,        5、invalidate queue模块改善使美国服务器无效应答的时延,把使无效命令放入queue后就立即发送应答;,        6、外设DMA支持直接访问主存,改善美国服务器CPU使用效率。,        这些美国服务器硬件体系设计特点也引入很多问题,最大的问题就是cache一致性问题和乱序执行的问题,cache一致性问题由cache一致性协议MESI解决,MESI由硬件保证,对软件来说是透明的。,        MESI协议保证所有美国服务器CPU对单个cache line中单个变量修改的顺序保持一致,但不保证不同变量的修改在所有CPU上看到的是相同顺序,这就造成了乱序。不仅如此,乱序的原因还有以下方面:,        这种情况造成就连简单的++运算操作的原子性都无法保证,而这些问题必须采用美国服务器多核并行编程新的技术手段来解决。以下小编就来详细介绍下美国服务器的多核并行编程技术。,
        多核并行编程

关键技术,
        1
、锁技术,        美国服务器Linux kernel提供了多种锁机制,如自旋锁、信号量、互斥量、读写锁、顺序锁等。各种锁的简单比较如下:,        1)自旋锁,不休眠,无进程上下文切换开销,可以用在美国服务器中断上下文和临界区小的场合。,        2)信号量,会休眠,支持美国服务器同时多个并发体进入临界区,可以用在可能休眠或者长的临界区的场合。,        3)互斥量,类似与信号量,但只支持美国服务器同时只有一个并发体进入临界区。,        4)读写锁,支持读并发,写写/读写间互斥,读会延迟写,对读友好,适用美国服务器读侧重场合。,        5)顺序锁,支持读并发,写写/读写间互斥,写会延迟读,对写友好,适用美国服务器写侧重场合。,        锁技术虽然能有效地提供美国服务器并行执行下的竞态保护,但锁的并行可扩展性很差,无法充分发挥多核的性能优势。锁的粒度太粗会限制扩展性,粒度太细会导致巨大的系统开销,而且设计难度大,容易造成死锁,以下美国服务器技术手段或指导原则能解决或减轻这些问题的风险:,
        2
、原子技术,        原子技术主要是解决美国服务器不一致性和乱序执行对原子访问的破坏问题,主要的原子原语有:,        1)ACCESS_ONECE():只限制编译器对美国服务器内存访问的优化。,        2)barrier():只限制编译器的乱序优化。,        3)smb_wmb():写内存屏障,刷新store buffer,同时限制美国服务器编译器和CPU的乱序优化。,,        4)smb_rmb():读内存屏障,刷新invalidate queue,同时限制编译器和美国服务器CPU的乱序优化。,        5)smb_mb():读写内存屏障,同时刷新store buffer和invalidate queue,同时限制美国服务器编译器和CPU的乱序优化。,        6)atomic_inc()/atomic_read():美国服务器整型原子操作。,
        3

无锁技术,        原子技术是美国服务器无锁技术中的一种,除此之外无锁技术还包括RCU、Hazard pointer等,这些无锁技术都基于内存屏障实现的:,,        1)Hazard pointer主要用于美国服务器对象的生命周期管理,类似引用计数,但比引用计数有更好的并行可扩展性。,        2)RCU适用的场景很多,其可以替代:读写锁、引用计数、垃圾回收器、等待事物结束等,而且有更好的并行扩展性。但美国服务器RCU也有一些不适用的场景,如写侧重、临界区长、临界区内休眠等场景。,        不过所有的无锁原语也只能解决读端的并行可扩展性问题,写端的并行可扩展性只能通过美国服务器数据分割技术来解决。,
        4
、数据分割技术,        分割数据结构可以减少共享数据,是解决美国服务器并行可扩展性的根本办法。对分割友好,即并行友好的数据结构有:,        使用这些便于分割的数据结构,有利于通过数据分割来改善美国服务器并行可扩展性。除了使用合适的数据结构外,合理的分割指导规则也很重要:,        以上这些就是关于美国服务器多核并行编程的内容,基本上涵盖了Linux kernel中所有的并发编程关键技术。当然美国服务器并行编程还有很多其他技术没有应用到Linux kernel中的,如无副作用的并行函数式编程技术、消息传递、MapReduce等等。,        现在梦飞科技合作的美国VM机房的美国服务器所有配置都免费赠送防御值 ,可以有效防护网站的安全,以下是部分配置介绍:,
,
,        梦飞科技已与全球多个国家的顶级数据中心达成战略合作关系,为互联网外贸行业、金融行业、IOT行业、游戏行业、直播行业、电商行业等企业客户等提供一站式安全解决方案。持续关注梦飞科技官网,获取更多IDC资讯!,, ,
,        美国服务器目前主流的系统都是冯诺依曼架构的,即共享内存的计算模型,这种过程计算模型对美国服务器的并行计算并不友好,该架构中有如下设计特点:,        4、store buffer模块改善cache write由于应答延迟而造成的美国服务器系统写停顿问题;,

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《美国服务器多核并行编程技术》
文章链接:https://zhuji.vsping.com/348896.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。