3.2. 處理器能力

處理器能力又稱為 CPU 能力(CPU power)、CPU 週期(CPU cycle)、或其他名稱,指得是電腦處理資料的能力。處理器能力跟 CPU 架構(還有時脈速度)有關 — 通常時脈速度愈高、能處理位元數愈大的處理器,速度會比時脈速度低、位元數小的電腦要來得快。

3.2.1. 處理器能力的兩三事

處理器有兩個特點,是我們必須牢記在心的:

處理器能力是固定的,CPU 能跑多快,就是多快。舉例來說,如果您要電腦把兩個數字相加(在大部分電腦架構上,這只要一個機器指令就可以完成),CPU 只會用某個固定的速度完成指令。除了少數例外,您不能「降低」CPU 處理指令的速率,更不用說是增加速率了。

處理器能力在另一方面也是固定的:它是有限的。每台電腦能插上的 CPU 種類都有限制。有些電腦支援多種速度、多款 CPU;而有些電腦的 CPU 則根本不能升級[1]

處理器能力不能儲存起來,留待之後再用。也就是說,假設 CPU 每秒可以處理一億個指令,那麼如果 CPU 閒置了一秒,那這每秒一億個指令的儲存能力,就算浪費了。

如果換個角度看這些限制,那麼 CPU 是以一個固定速率,「生產」一連串可執行的指令。既然 CPU 「生產」指令,那就表示有其他東西「消費」這些指令。接下來我們就來看看這些消費者是誰。

3.2.2. 處理器能力的消費者

處理器能力有兩大消費者:

3.2.2.1. 應用程式

處理器能力最明顯的消費者,就是您希望電腦為您執行的應用程式與軟體。從試算表到資料庫,這些應用程式正是您買電腦的原因。

單 CPU 每次只能處理一件事。因此,如果您的應用程式正在執行,系統上的其他程式就不能使用處理器資源,反之亦然 — 如果電腦正在執行其他程式,您的應用程式就處於閒置狀態。

但為什麼現在的作業系統都標榜,一次可以執行很多個應用程式呢?這答案是因為:它們都是多工的作業系統。換句話說,這些作業系統會製造一種假象,好像所有工作都是同時運行的。這訣竅是把 CPU 每秒鐘的執行能力分成許多等分,此刻執行這個程式,下一刻又執行另一個程式。如果這環境切換(context switch,又稱內容切換)的次數夠頻繁,看起來就像同時執行好幾個應用程式一樣。

當然,應用程式不只用 CPU 來處理資料,還會停在那裡等使用者輸入資料,或對硬碟、螢幕等裝置做輸入輸出的動作。當這些動作發生時,應用程式是不需要用到 CPU 的。像這種時候,CPU 就可以空出來給其他程式使用,避免讓其他程式空等。

除此之外,CPU 還有另一個消費者會消耗處理器能力:那就是作業系統本身。

3.2.2.2. 作業系統

作業系統到底會佔據多少處理器能力,不是很容易界定的。這原因出在作業系統混合了程序等級(process-level)與系統等級(system-level)的程式碼,以完成工作。例如您可以很輕易地用程序監控程式,看看執行 系統程式(daemon)服務(service) 的程序到底在做什麼;但要看出系統等級的 I/O 處理耗去了多少 CPU 資源(通常這工作是由發出 I/O 需求的程序所完成),那就不是件容易的事情。

一般來說,我們可以把這種作業系統負荷分成兩類:

  • 作業系統的自身管理

  • 與行程有關的活動

作業系統的自身管理包括行程排程與記憶體管理;而與行程有關的活動,則包括任何支援作業系統的行程,例如紀錄系統日誌或清除 I/O 快取的行程都是。

3.2.3. 改進 CPU 效能短缺的問題

當處理器能力不足以支應您要執行的工作時,您有兩個選擇:

3.2.3.1. 降低負載

降低負載的好處,是不用花上一毛錢。方法是找出造成系統負載中,您能控制的項目,然後把它關閉即可。您可以著重在三個方面:

  • 降低作業系統負載

  • 降低應用程式負載

  • 移除整個應用程式

3.2.3.1.1. 降低作業系統負載

要降低作業系統負載,您得先檢視目前作業系統的負荷,然後找出是什麼程式索求無度,讓作業系統異常忙碌。這些領域包括:

  • 降低經常性行程的排程需求

  • 降低 I/O 的數量

不要祈禱奇蹟出現。在合理範圍內設定良好的系統上,降低作業系統負載並不會讓效能大幅增加。這是因為所謂「在合理範圍內設定良好的系統」的定義,指得就是負載最陽春的系統。不過,如果您的電腦記憶體太少,多加些記憶體可以降低系統負荷。

3.2.3.1.2. 降低應用程式負載

降低應用程式負載,指的是確定所有應用程式有一切需要的資源。有些應用程式在不同的環境中,表現大不相同 — 例如有些應用程式在處理特定資料時,會大量消耗運算資源;但處理其他資料時不會。

在這兒要記住的是,要讓應用程式有效率的運作,您就要對它們有更進一步的了解。通常,跟使用者與(或)公司裡的程式設計師一起合作,能找出讓應用程式更有效率的方法。

3.2.3.1.3. 移除整個應用程式

這方法不見得適用於您的組織,完全看情況而定;因為通常要執行什麼應用程式,不在系統管理者的管轄範圍內。不過,如果您能找出哪些應用程式「佔著茅坑不拉屎」,霸佔著 CPU 不放,您就可以發揮些許影響力,強迫這些軟體退休。

這麼做會牽一髮而動全身,不是您一個人的事情;凡是會受到影響的使用者,都應該參與這整個過程。通常這些人有足夠的知識以及政治影響力,幫助您改善應用程式的狀況。

提示提示
 

記得,您不一定要把某個應用程式從公司的所有電腦上移除。您只需要把對 CPU 資源索求無度的軟體,從高負載的系統,移到低負載的系統即可。

3.2.3.2. 升級

如果不能降低使用量,那就只好增加處理器的處理能力。這方法要花錢,卻是可行的方案。

3.2.3.2.1. CPU 升級

最直接的方法,是看看能不能把電腦上的 CPU 升級。第一步,先確定能不能拔下目前的 CPU。有些電腦(尤其是筆記型電腦)的處理器焊在主機板上,升級無望。其他使用插槽的處理器,就可以升級 — 至少理論上可以。

接下來,您就得做些研究,看能不能找到更快的處理器,同時系統也要支援。舉個例子,如果您目前 CPU 的速度為 1GHz,市面上還找得到同型的 2GHz 處理器,那應該就可以升級。

最後,記得檢查系統的最高時脈速度為何。延續剛剛的例子,即使您可以找到同款的 2GHz 處理器,如果您電腦的時脈只支援 1GHz 以下的處理器,那麼換上新的 CPU 是沒有用的。

如果您無法安裝新的處理器,那麼可能就只有換掉主機板,甚至是之前提到的「堆高機升級」一途了。

不過,有些電腦提供了另一種升級方法。與其換掉目前的 CPU,為什麼不乾脆再加一顆呢?

3.2.3.2.2. 對稱式多重處理適合您嗎?

對稱式多重處理(SMP,Symmetric multiprocessing)可以讓一顆以上的處理器,共享所有系統資源。跟單處理器的電腦不同的是,多處理器的電腦可以在同一時間,執行多個程序。

乍看之下,這似乎是系統管理者夢寐以求的功能。最重要的是,即使主機板不支援更高的時脈,SMP 還是能有效提昇 CPU 效能 — 多加 CPU 就對了。不過,這種彈性並不是十全十美的。

首先,並不是所有的電腦都支援 SMP;您得有一張支援多處理器的主機板才行。如果沒有的話,您至少得先升級主機板。

其次,SMP 本身也會增加系統負荷。仔細想想,這並不無道理:作業系統必須花更多的 CPU 週期,把工作分配到更多的處理器上。另一方面,CPU 更多也意味著爭奪系統資源的情形就愈嚴重。基於這幾個原因,從雙 CPU 升級到四 CPU 並不會讓整體的處理器效能加倍。事實上,根據實際硬體、工作量、以及處理器架構的不同,您一直為電腦系統增加處理器,遲早會出現反效果,系統效能反而會「降低」。

還有一點要記住的,是 SMP 對於一次發出大量連串指令的大型應用程式,無法提昇其工作效率。換句話說,如果有個專司運算的模擬程式以程序型態執行,也不使用任何執行緒,那麼在 SMP 機器上,它的速度不會比單處理器還快;事實上,如果把 SMP 本身的負荷也算進去,那麼速度會更慢。也因為如此,當談到處理器能力的問題時,許多系統管理者寧願使用單處理器的電腦:限制少,CPU 的能力反而能充分發揮出來。

剛剛的這些討論,好像說明了 SMP 不是個好主意;不過還是有適用 SMP 的環境。舉例來說,多個運算型的程式一起執行,就適合交給 SMP 處理。這是因為這些程式一直著重在運算上,讓 CPU 忙碌;但卻比較不會跟其他程序爭奪資源,作業系統的負荷也較低。

還有一點要注意的,就是當系統負荷增加時,SMP 系統的效能下降較慢。這是因為多種程序混合在一起處理時,對 SMP 系統負載的影響較低。這也是 SMP 在伺服器與多使用者環境間,較受歡迎的原因。

[1]

這種情況有個很幽默的名詞,叫做堆高機升級(forklift upgrade),意思是換掉整台電腦。