多线程优化不佳24核CPU、64G内存,却被卡到连鼠标都动弹不得

数码科技

35人已加入

描述

  随着AMD锐龙与英特尔酷睿i9的相继发布,电脑多核时代距离普通大众越来越近。这似乎是一个性能过剩的时代。

  事实上,计算性能的扩展分为纵向扩展(scale up)和横向扩展(scale out)两个方向,纵向的扩展通常是指单台机型的性能提升,而横向扩展则是一种基于并行节点的理念,把多台计算机合起来当做一个资源一起用。

  以往的纵向扩展,频率和CPU架构的优化是带来性能提升最大的方面。但由于制造工艺、能耗控制等带来的限制,现在的CPU已经不再完全通过提升频率来提升性能,另一方面,CPU架构出现革命性变化也不常见。所以,在最近几年以来,单颗CPU内部核心数量的增加往往是提升性能的最直接方法。而至强E7 v4,则是其中王者,单颗处理器最多可达24个核心。当然,放入这么多核心也不简单,内部总线的革新、核与核之间的协调同步……也都是黑科技级别的。可不是当年双核时的简单粗暴方式了。

  

  过去多年的四核八线程天花板终于被打破,只要几千块就能买到10核20线程的酷睿i9,过去只有洋垃圾大船靠岸的时候才有这种机会。

  cpu

  这种高配电脑按说应该绝对不会再卡了吧?一位就职于谷歌的程序猿拥有一台24个CPU核心、64GB内存的工作站,但却被Win 10的BUG卡到连鼠标都无法移动!

  cpu

  作为程序猿,最不能忍就是BUG的存在,于是他开启了分析追踪。在多数时间里这台高性能工作站的CPU利用率都在50%以下,可鼠标指针却卡到难以动弹,令人匪夷所思。从任务管理器窗口一次卡上1.125秒开始入手:

  cpu

  经过分析,他发现几乎所有窗口响应都非常慢,如果把全部进程的响应时间加一起有63.3秒之多。

  cpu

  而之所以会卡成这样,原因在于一个仅存在于Windows 10系统中的BUG:所有进程销毁工作都是单线程处理的。学习过编程的朋友都知道做清理善后工作的析构函数,每当一个程序结束退出时都需要先释放之前调用的内存。

  

  不幸的是,微软居然在Windows 10中将如此重要的工作交给一个单线程运行的机制来完成。谷歌的程序猿在程序编译过程中同时有大量进程产生和销毁,不停调用的进程销毁工作仅能通过一个操作系统线程完成,这让24核CPU的工作站电脑也空有力气使不出!

  

  显然这次Windows 10的BUG又是多线程优化不佳、无法利用多核处理器的典型情况。AMD和英特尔把CPU核心数量越堆越高,却依然不能防止猪队友挖坑。不过好在一般家用电脑不会遇到谷歌程序猿面对的不停生成和终止进程的情况,所以不会有直接影响。

  

  这个BUG在Windows 7中是不存在的,一方面看出Windows 10底层架构的确是经过了重写,另一方面也能印证Windows系统在高性能运算与服务器中不及Linux应用广泛不是没有原因。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分