随着AMD锐龙与英特尔酷睿i9的相继发布,电脑多核时代距离普通大众越来越近。这似乎是一个性能过剩的时代。 过去多年的四核八线程天花板终于被打破,只要几千块就能买到10核20线程的酷睿i9,过去只有洋垃圾大船靠岸的时候才有这种机会。 这种高配电脑按说应该绝对不会再卡了吧?一位就职于谷歌的程序猿拥有一台24个CPU核心、64GB内存的工作站,但却被Win 10的BUG卡到连鼠标都无法移动! 作为程序猿,最不能忍就是BUG的存在,于是他开启了分析追踪。在多数时间里这台高性能工作站的CPU利用率都在50%以下,可鼠标指针却卡到难以动弹,令人匪夷所思。从任务管理器窗口一次卡上1.125秒开始入手: 经过分析,他发现几乎所有窗口响应都非常慢,如果把全部进程的响应时间加一起有63.3秒之多。 而之所以会卡成这样,原因在于一个仅存在于Windows 10系统中的BUG:所有进程销毁工作都是单线程处理的。学习过编程的朋友都知道做清理善后工作的析构函数,每当一个程序结束退出时都需要先释放之前调用的内存。 不幸的是,微软居然在Windows 10中将如此重要的工作交给一个单线程运行的机制来完成。谷歌的程序猿在程序编译过程中同时有大量进程产生和销毁,不停调用的进程销毁工作仅能通过一个操作系统线程完成,这让24核CPU的工作站电脑也空有力气使不出! 显然这次Windows 10的BUG又是多线程优化不佳、无法利用多核处理器的典型情况。AMD和英特尔把CPU核心数量越堆越高,却依然不能防止猪队友挖坑。不过好在一般家用电脑不会遇到谷歌程序猿面对的不停生成和终止进程的情况,所以不会有直接影响。 这个BUG在Windows 7中是不存在的,一方面看出Windows 10底层架构的确是经过了重写,另一方面也能印证Windows系统在高性能运算与服务器中不及Linux应用广泛不是没有原因。 |
|