多核新觀念-象使用內(nèi)存一樣使用CPU?
多核時(shí)代,很重要的一點(diǎn)就是要將多個(gè)CPU核同時(shí)運(yùn)轉(zhuǎn)起來,提高CPU的利用率,說得專業(yè)一點(diǎn)就是要提高多核CPU的加速比系數(shù)。
但 是并不是任何時(shí)候都可以同時(shí)將多個(gè)核運(yùn)轉(zhuǎn)起來,比如一些不能并行化執(zhí)行的代碼,特別是使用了鎖的代碼,它的執(zhí)行是串行化的,無法同時(shí)利用多個(gè)核,還有負(fù)載 平衡問題,多個(gè)任務(wù)無法劃分得很均勻,導(dǎo)致實(shí)際情況中有些任務(wù)先運(yùn)行完,有些任務(wù)后運(yùn)行完,先運(yùn)行完的CPU核就處于空閑狀態(tài)。
是 不是任何時(shí)候都需要將多個(gè)核利用到***呢?答案是否定的,比如一個(gè)服務(wù)器軟件,如果只有一個(gè)客戶端連接過來,那么只要用一個(gè)核來處理這個(gè)請求已經(jīng)綽綽有余 了,何必非要同時(shí)將多個(gè)核同時(shí)運(yùn)行起來呢? 再比如在客戶端軟件中,客戶做了一個(gè)操作后,機(jī)器只是進(jìn)行一個(gè)時(shí)間非常短的運(yùn)算就結(jié)果返回給用戶,然后機(jī)器處 于空閑狀態(tài)直到用戶的下一次操作為止,在這種情況下,由于機(jī)器運(yùn)算量很小,一個(gè)核進(jìn)行運(yùn)算完全能夠滿足用戶所需的性能需求,就沒有必要同時(shí)利用多個(gè)核進(jìn)行 運(yùn)算,因?yàn)楹苄〉挠?jì)算量情況下,多個(gè)核同時(shí)運(yùn)行效率可能還不如一個(gè)核。
既 然有那么多情況下不需要多個(gè)核同時(shí)進(jìn)行運(yùn)算,那么買多核的機(jī)器干什么? 這不由得將CPU和內(nèi)存比較起來,比如裝了一個(gè)2G內(nèi)存的機(jī)器,其實(shí)很多情況下是不可能將2G的內(nèi)存都用完的,但是當(dāng)運(yùn)行一些大的應(yīng)用,或者玩一些大型游 戲的情況下,內(nèi)存就基本上都利用上了,其實(shí)以后用多核CPU可能就象用內(nèi)存一樣,并不是任何時(shí)候都需要將所有的CPU核都用上的,只有計(jì)算量很大的情況下 才需要完全利用多個(gè)CPU核來進(jìn)行計(jì)算,也就是說全部的CPU核主要是為計(jì)算達(dá)到一定規(guī)模時(shí)才全部使用的,當(dāng)然這個(gè)計(jì)算規(guī)模隨CPU核數(shù)的不同而不同。
當(dāng) 然使用CPU和使用內(nèi)存并不是完全相同的,因?yàn)楝F(xiàn)在軟件規(guī)模越來越大,大多數(shù)計(jì)算的規(guī)模是可以達(dá)到為多核而使用的,因?yàn)檐浖?guī)模會隨著CPU核數(shù)的增加而 同步增長,大部分情況下多個(gè)CPU核都是可以充分利用上的,而內(nèi)存則不一樣,不論是客戶端機(jī)還是服務(wù)器,可能大部分時(shí)候內(nèi)存利用率并不是很高,只有少數(shù)高 峰時(shí)候才能將內(nèi)存全部用上。
原文鏈接:http://blog.csdn.net/drzhouweiming/article/details/1698721