利用多核架构提升软件性能
在当今的技术环境中,服务器、计算机和手机等设备的处理器配备了越来越多的 CPU 和核心。例如,手机可能有 6 个核心,工作站通过至强 CPU 可能拥有 12 个虚拟核心,而 AWS 中的虚拟机最多可拥有 40 个虚拟核心。这种硬件的变化要求我们重新设计软件,以充分利用这些资源。
1. 扩展的概念
“扩展(Scaling Up)”指的是当为单个系统提供额外资源(如更多的 CPU 核心或内存)时,应用程序能够利用这些资源。例如,给单个服务器上的应用程序分配更多资源,它应该能够在运行中利用这些资源。在云服务中,如果需要处理更多流量,可以将实例替换为核心更多的大型实例。假设应用程序能够利用这些资源,就实现了应用程序的扩展。相反,“向外扩展(Scaling Out)”是指通过添加更多的机器或虚拟机来为系统增加资源,而不是仅仅使用更大的机器或虚拟机。
由于如今部署代码的大多数环境都有多个虚拟 CPU 可用,我们需要改变编写代码的方式,以有效利用硬件。作为现代工程师,有责任安全有效地解决这些问题。鉴于现在核心数量增加而单核处理速度提升有限,我们需要设计应用程序,通过并行处理多个工作流来利用多核。
2. 多核架构作为分布式问题
在应用程序中利用多核看似是一个难题。传统的基于线程的抽象很难正确实现。当线程共享对可变状态的访问时,很容易引入竞态条件,而这些问题直到应用程序大规模部署和运行时才会显现。Tim Sweeny 曾说过,在并发环境中,命令式编程不是正确的默认选择。幸运的是,现在我们有了不同的抽象方法来利用可用的所有核心,并且与使用同步和锁定的线程抽象相比,这些方法更易于构建正确的并发软件。
利用多核架构
超级会员免费看
订阅专栏 解锁全文
932

被折叠的 条评论
为什么被折叠?



