- 軟件系統(tǒng)優(yōu)化
- 郭健美 黃波 劉通宇 林曉東 趙鵬
- 1284字
- 2025-08-07 15:12:59
2.3 從單點(diǎn)到全局的系統(tǒng)觀
系統(tǒng)優(yōu)化的對(duì)象可以是一個(gè)應(yīng)用程序、一個(gè)系統(tǒng)庫、一個(gè)編譯器或一個(gè)硬件設(shè)備,也可以是一臺(tái)服務(wù)器、一個(gè)服務(wù)器集群或整個(gè)數(shù)據(jù)中心。由于影響性能的因素眾多、關(guān)系復(fù)雜,對(duì)于任一優(yōu)化對(duì)象,系統(tǒng)優(yōu)化都需要考慮該對(duì)象所處的整體軟硬件環(huán)境對(duì)性能的影響。
程序性能優(yōu)化的一個(gè)重要原則是考慮程序執(zhí)行時(shí)間的整體優(yōu)化,而不僅僅是影響性能的任何單一部分的優(yōu)化。這要求我們?cè)趦?yōu)化系統(tǒng)時(shí),應(yīng)當(dāng)建立從單點(diǎn)到全局的系統(tǒng)觀。本書提出的“系統(tǒng)觀”,本質(zhì)上是強(qiáng)調(diào)在系統(tǒng)優(yōu)化過程中應(yīng)該具備的整體思維和全局視角。如圖2.2所示,系統(tǒng)觀包含兩個(gè)維度:一個(gè)是垂直擴(kuò)展(scale up)的維度,即從底層硬件設(shè)備、中間系統(tǒng)軟件到上層應(yīng)用負(fù)載的全棧思維(full-stack thinking);另一個(gè)是水平擴(kuò)展(scale out)的維度,即從單機(jī)到集群、數(shù)據(jù)中心、去中心化系統(tǒng)的擴(kuò)展思維(scalable thinking)。

圖2.2 從單點(diǎn)到全局的“系統(tǒng)觀”
從全棧思維的視角,應(yīng)用負(fù)載、系統(tǒng)軟件和硬件設(shè)備各層的優(yōu)化是互相關(guān)聯(lián)的,共同形成軟硬件的全棧優(yōu)化。各層的優(yōu)化不一定有疊加的效果,任一層上的改動(dòng)都需要考慮對(duì)其他層和全棧整體的影響。
應(yīng)用負(fù)載優(yōu)化的典型場(chǎng)景是基準(zhǔn)評(píng)測(cè)(benchmarking)和配置優(yōu)化(configuration optimization),其核心目標(biāo)都是找到已知的最佳配置(Best-Known Configuration, BKC),從而使應(yīng)用負(fù)載的性能達(dá)到最優(yōu)。為了達(dá)到這個(gè)目標(biāo),需要可靠的性能測(cè)量和合理的性能評(píng)價(jià)。這些內(nèi)容都是性能工程的基礎(chǔ)知識(shí),將在本書第二部分介紹。
硬件設(shè)備優(yōu)化的核心是處理器優(yōu)化和存儲(chǔ)器優(yōu)化,包括超標(biāo)量處理、亂序執(zhí)行、分支預(yù)測(cè)和高速緩存等。這些優(yōu)化能夠?qū)崿F(xiàn)的前提是有效定位復(fù)雜硬件設(shè)備的性能瓶頸,這就需要面向微體系結(jié)構(gòu)的量化分析方法。然而,單一類型的處理器可能無法高效處理當(dāng)今各種復(fù)雜而多樣的計(jì)算任務(wù),這推動(dòng)了異構(gòu)計(jì)算(heterogeneous computing)和異構(gòu)編程(heterogeneous programming)技術(shù)在近年來的快速發(fā)展。異構(gòu)編程使得開發(fā)者能夠編寫和管理在不同指令集上運(yùn)行的程序,通過組合不同體系結(jié)構(gòu)的處理器(如CPU+GPU),利用各自的優(yōu)勢(shì)來優(yōu)化特定的任務(wù),從而提高系統(tǒng)的整體性能。這些內(nèi)容都涉及計(jì)算機(jī)體系結(jié)構(gòu)優(yōu)化,將在本書第三部分介紹。
系統(tǒng)軟件通常包括操作系統(tǒng)、編譯器等,它們是軟硬件棧的中樞,是保障應(yīng)用負(fù)載在硬件設(shè)備上高效運(yùn)行的關(guān)鍵組件。應(yīng)用負(fù)載的行為其實(shí)是用各種編程語言編寫的程序在特定輸入的情況下所表現(xiàn)出來的動(dòng)態(tài)運(yùn)行特征。編譯器作為重要的系統(tǒng)軟件之一,在很大的程度上對(duì)程序的性能起著至關(guān)重要的作用,理解和運(yùn)用編譯優(yōu)化是實(shí)現(xiàn)軟件系統(tǒng)優(yōu)化的一個(gè)重要手段。編譯優(yōu)化的相關(guān)內(nèi)容將在本書第四部分介紹。
從擴(kuò)展思維的視角,系統(tǒng)優(yōu)化不止于單機(jī)環(huán)境,還需要考慮優(yōu)化效果在規(guī)模化應(yīng)用環(huán)境下的擴(kuò)展性。以大規(guī)模數(shù)據(jù)中心和云計(jì)算平臺(tái)為例,可擴(kuò)展的性能優(yōu)化更具吸引力,因?yàn)榧词箮讉€(gè)百分比的資源利用率提升也會(huì)帶來相當(dāng)可觀的經(jīng)濟(jì)效益。此外,近年來,人工智能(Artificial Intelligence, AI)和大語言模型(Large Language Model, LLM)技術(shù)迅猛發(fā)展,相關(guān)的算力需求空前高漲,對(duì)AI系統(tǒng)和深度學(xué)習(xí)框架等進(jìn)行深度優(yōu)化成為研究熱點(diǎn)。這樣的優(yōu)化不僅能提升AI模型訓(xùn)練與推理的速度和精度,還能降低對(duì)計(jì)算資源的需求,從而推動(dòng)AI技術(shù)在各個(gè)領(lǐng)域的廣泛應(yīng)用和持續(xù)創(chuàng)新。這些內(nèi)容將作為面向新興領(lǐng)域的技術(shù)專題在第五部分討論。
- Vue.js 3.x快速入門
- C程序設(shè)計(jì)簡明教程(第二版)
- SOA實(shí)踐
- 深入理解Django:框架內(nèi)幕與實(shí)現(xiàn)原理
- 神經(jīng)網(wǎng)絡(luò)編程實(shí)戰(zhàn):Java語言實(shí)現(xiàn)(原書第2版)
- HBase從入門到實(shí)戰(zhàn)
- Java程序設(shè)計(jì)與計(jì)算思維
- Python GUI Programming Cookbook
- jQuery從入門到精通 (軟件開發(fā)視頻大講堂)
- R大數(shù)據(jù)分析實(shí)用指南
- Android程序設(shè)計(jì)基礎(chǔ)
- Unity UI Cookbook
- Mastering AWS Security
- TypeScript 2.x By Example
- Learning Splunk Web Framework