為何 PC 需要單核高性能,而伺服器不在乎?

pc圈子總是要求單核性能極強,動不動超3.5g還嫌不勉強。

不到3g的e5似乎總是被嫌小,嫌棄單核垃圾帶不動應用。

而絕大部分伺服器,包括高性能節點,都是2-2.6主頻為主,照樣撐起各種奇葩的高壓力場景,低延遲場景。

那麼pc上的應用真有那麼特殊?


「更快地壓完一個視頻」和「更快地壓完一萬個視頻」

顯然後者對並行更友好


理解反了。不是PC應用特殊,而是伺服器應用特殊。

伺服器應用全為多核進行了優化。所以可以完美使用多核心。或者換句話說,主流的,靠譜的,伺服器應用、以及應用框架,全為多核進行了優化,毫無例外。

有時某些應用自己什麼都沒做,但選擇了一個已經為多核優化的應用框架,這種情況下也是多核優化的。

應用如果沒特別為多核進行優化也沒選擇多核應用框架,那就只能依賴單核性能,而這類應用是大多數。所以對PC來說,單核性能當然最重要。


目前答案里各種不好好回答問題,一水的諷刺PC應用編程用不好多線程我也是醉了。我不單指誰——各位,不裝B會死?

伺服器所謂的「高並發」、「低延遲」場景本來就是指的「更快的服務更多並發請求」。「一個調度[/分發]器+n個處理器」這樣的多線程模式是個很自然的選擇。無論是單機多核,還是分散式服務,都是這個思路。一味的提高單核頻率沒有優勢,且又會使功耗激增,不經濟不節能!

而PC機通常只面對一個用戶, 而且運行的程序都是計算密集型的,如GUI繪製,編解碼,複雜數據結構運算(遊戲),數學、物理計算(遊戲等)。這些操作理論上都應該放在單個核心進行計算,以達到最低的複雜度(編程容易)最高的能耗比(多核協作1+1&<2)。只有在單核性能滿足不了要求的情況下(延遲過高;等待時間過長)多線程才有實際意義(比如大型遊戲)。如果要運行多個程序,理想的情況也是一個程序佔一個核心,然後不同程序按佔用量均勻分布——當然這是操作系統任務調度的鍋,不用寫應用的碼農背。

硬把一個核能輕鬆完成的工作搞成多線程是種裝B和作死的行為!

當然,UI線程和工作線程分離、非同步事件處理這些顯著提高用戶體驗的多線程策略我是堅決擁護的。PC機越來越多的核也減少了各個應用程序搶佔同一個核心資源的頻率——任務調度也是有不小開銷的。記住CPU的線程數是固定的,你搞的線程越多,CPU核心的效率就越低(在利用率相同的情況下)!

綜上:你可以罵寫程序卡的一B的碼農不會用多線程,但你不能罔顧PC場景需要單核性能而伺服器場景需要多核心的事實。


PC和Server的應用程序特性不一樣。

一般來說關注PC性能的是遊戲玩家,遊戲中的交給CPU做的遊戲邏輯運算,很多是這麼一種特性:「下一次的運算輸入,是上一次運算的輸出結果」,所以說這兩次運算有確定的先後順序,不能同時執行,現在的遊戲多數基於遊戲引擎開發,還會受到遊戲引擎本身的限制,多線程優化也就有限度,強行改多線程效果甚至可能會更差。

伺服器端的應用,多是「接收一個用戶的請求,並作出回應」,多數情況下每個用戶請求的內容不相關,比如A君在TB的某店買了一個東西,B君在另一個店買另一個東西,這兩個用戶的請求甚至可以交給不同的伺服器來處理,並且單個用戶需要的CPU時間很短。這種情況,幾乎可以說多一個核就多一倍性能(如果Server端不是Python,霧...)。

有時候多個用戶請求內容相關(比如12306買票),個人猜測性能瓶頸在網路帶寬和IO互斥訪問上,如果瓶頸在IO那麼對CPU要求就(相對IO性能)更低了。

順便,「多核優化」這個詞幾乎成了玄學,在玩PC玩手機但沒有編程知識的人群中,天天被討論到,一看到自己有核心閑著,就說多核優化不到位,似乎就可以冠冕堂皇地罵程序員了。覺得自己買了牛逼硬體發揮不出的心情可以理解,但畢竟有10個女人也不能1個月生出一個孩子,多一分理解吧。


其實簡單點說很多軟體對於多核心優化不良,舉個簡單的栗子,著名的單核坦克世界(誤),如果我們把頻率比作一個人的辦事效率,線程比作一心多用功能,那麼頻率高了就代表辦事效率高了,這在日常使用中至關重要,但是伺服器u不一樣,伺服器u的設計是為了處理超大量數據,所以可以達到「一心多用」功能……所以……

GG


因為很多軟體,尤其是部分遊戲,對多核的優化不好。

比如SC2,這麼多年了仍然只有雙核(2線程)優化。還有一些網遊也是這樣。

伺服器端肯定是考慮到利用多線程的事。


。。。

機關下屬的某報社建的某網站使用的某華某光外包的某國產加代工的某CMS後台。。。

tomcat伺服器。。。

雙e5-2407。。。

然後後台進程永遠是12-13%。。。

。。。

你和我說單線程不要緊。。。天天就看著微信群里他們一幫編輯在和技術撕逼,後台卡死了卡死了卡死了。。。

還有

都是2-2.6主頻為主

你點過那些處理器有多少核沒有?

在優化足夠的情況下核心數完全可以掩蓋主頻的劣勢

然後目前intel最低最低的雙路配置也有12個純核心/8核心16框框,e5-2603v4和e5-2623 v4,一個十二核1.7GHZ主頻一個8核16線程3.5GHZ-3.7GHZ。。。注意我這裡乘以了2,因為我不認為可配置雙路的處理器有什麼討論單路的必要,專門的單路e5里主頻最低的3.2GHZ(e5-1660 v4),八核心十六線程

而家用機呢?不上high end最多也就是八個框框的普通i7,還是靠超線程撐的門面其實就四核心。。。撐死了一個明明應該雙路e5的e5伺服器其中一個半e5的水平

核心又少,主頻也低,那還怎麼玩?洗洗睡吧。。。

實在想不明白請算個乘法,主頻乘以核心數等於幾。。。我知道不準但是這玩意拿來參考我認為沒有太大問題。。。

當然如果你一定要用家用的高端去和最差的e5玩田忌賽馬。。。那也沒啥辦法了。。。

還還有。。。

動不動超3.5g還嫌不勉強

題主你這「pc圈子」都是去哪買的電腦。。。上3.5GHZ還要超?難道這年頭流行買最低端i5和低功耗i5回家超頻玩?


誰告訴你伺服器不在乎?

是英特爾不給便宜的多核的並且高頻的

你看看e5 2699v4價格多少錢?

英特爾給的低頻便宜,所以市面上用的低頻e5多

生產環境更需要多核,虛擬化平台主靠核數。頻率低了點一樣能跑,但是你的核數直接影響能跑多少個虛擬機。


很簡單啊,不管是什麼程序,程序員基本上都是能用單核絕不多核,能多核絕不gpu運算。這個也不僅僅是因為程序員懶,CPU可以多核,gpu可以增加流處理器,但是輸入輸出的IO卻是沒辦法並行處理的,同時從硬碟讀取數據會造成競爭問題導致失敗或者更慢。所以並行處理起碼是需要內存級別的數據才有較大提升,這個是和程序的並行程度有關。PC程序的並行度往往不怎麼樣,很多時候IO是瓶頸;伺服器就不同了,每個人的需求都相似有不相關,並行度較高,並行優化的空間更高。


伺服器環境,有充分的動機壓榨性能。深度拓展小家小戶玩不起大機器,大廠又找不到能滿足它們的怪獸,分散式平易近人。更成熟的『舊』CPU,每單位計算能力更便宜。

大多數網路服務的瓶頸在於網路和讀寫的IO又貴又慢,CPU基本跑不滿。一般不追求高頻。怎麼多快好省怎麼來。

PC圈子在意主頻的多是遊戲用戶吧,專業軟體大都多核支持還不錯。而遊戲開發基本上是抱著夠用就好的精神,畢竟遊戲開發和底層圖形引擎開發可以說不是同一個世界的事。賣座主要還是靠遊戲性,畫面不落伍就好,儘可能讓更多人能玩。上多線程增加開發成本,說不定還減少用戶群體。

選擇高主頻上並不是單純為了性能。很少有遊戲可以完全吃光同時期的主力CPU(這種一般都被吐槽優化狗屎)。更多還是為了降低電腦更換頻率;或者有保持一定冗餘性能,亂安裝一些垃圾軟體後還能正常運行遊戲;嗯,還有裝逼啊;在控制台開120%特效一類的。

原始需要完全不同,當然變現出來的購買策略當然不同咯。

只是泛泛討論下多數情況。不帶上具體任務扯性能要求都是耍流氓。

說起來現在無論手機還是PC炒CPU的風氣都是廠家的陰謀吧 。買自用設備時,我只想要一個標示2016的CPU ,才不管什麼架構多少Hz,敢保證2016年12月前出的『常規』應用我都能愉快用就好了。消費者有更多心思去追求外設舒服才是王道嘛。



誰說的。。。。恰恰相反,伺服器單核處理能力比家用的更高。樓主不要被主頻騙了。。。。同一代CPU雖然家用的主頻更高,但是伺服器的處理器流水線往往擁有更多的處理並發數,更強的指令預取能力,更大的cache,更多的指令加速器和指令集,單核下伺服器處理器的性能,從一些主要測評軟體可以看到,一般是可以秒掉主頻更高的家用處理器的。

伺服器領域像web server, cdn,推薦演算法,搜索引擎,人工智慧演算法這些服務對單核的處理能力要求還是挺高的,處理能力低意味著處理時延長,縱有眾核也枉然,這也是推非x86伺服器很難的其中一個原因。

伺服器處理器由於核數多,cache大,io邏輯更加複雜,帶來了晶體面積發,發熱量更大的代價。我們知道半導體動態功率是翻轉頻率的二次方的關係,發熱量大影響的是處理器的壽命和運算的正確性,這也就是伺服器主頻做不上去的原因。而家用處理器的核數更小,發熱量更小,出錯的影響更小,而主頻高更能忽悠題主這樣的消費者。也就造成了伺服器處理器主頻低,家用處理器主頻高的現象。


既然是伺服器,功耗什麼的,全部是浮雲.伺服器全部託管在IDC數據中心,(我之前上班的地方),發熱什麼的,有專業的IDC中心空調和濕度控制環境,恆溫恆濕.可以絕對的屏蔽外界的干擾.

還有就是,單核和多核,其實區別不大的,個人是偽程序員,Java方面的.雙核什麼的,六核什麼的,都是差別不大,應用在同一時間,都在爭取CPU的執行權,哪個爭取到了,哪個就執行,所有,CPU的時鐘頻率高的,執行肯定快點.但是伺服器端運行的應用太多了.

比如,你開雲主機,虛擬空間,這些東西是非常耗內存的,但是對處理器的時鐘頻率卻要求不高.

但是,如果你是搞視頻渲染的,或者其他的CDN的,時鐘頻率就要求非常高了.

所有,實際應用,還是得看應用場景,渲染伺服器,還是需要高頻率的,但是一些虛擬空間之類的,就不需要高頻率的.

家用,一般運行的都是遊戲或者一些常用的辦公軟體,但是那些個軟體才多大啊,而且大多都是免費的,天下沒有免費的午餐,誰會去完美匹配A平台和I平台的硬體給你用?所有全部弄成單核的,方便維護.再有就是遊戲了,目前的遊戲幾乎全部都是雙核優化到四核優化,你有十個核心,遊戲能用的就只有四個核心,所有多核完全沒用,還是得吃處理器的時鐘頻率,高的,肯定快,低的,肯定慢!

再有就是A平台和I平台的架構了,I平台單核比A平台強太多了,而且,A平台的功耗,架構什麼的,都比不上I平台,所有遊戲什麼的,還是能選I就選I吧,A就算了.這也很好的解釋了伺服器端都是I平台壟斷的原因吧.

再說說伺服器,IBM的高端伺服器動不動就十幾萬一台,人家配的可是雙路CPU啊,和家用的PC完全沒得比的.

IO方面,伺服器端用的都是RAID陣列,內存動不動就破百的,完全不用考慮IO方面的壓力.所以,IO瓶頸完全可以忽略,完全可以根據自己的需求來部署.


問題完全等同於:為什麼家用PC有人超頻。因為家用電腦玩遊戲死機了重啟就是了,伺服器怎麼辦?


伺服器的特點是處理大量請求,可以天然細分,而家用機處理一個應用,這就要求這個應用自己實現多核優化,而以前大家都不會搞


因為pc就你一個人同時在用


分頁阅读: 1 2