資源對SMP性能的影響
SMP架構(gòu)是一種利用富余資源來換取時間的方案,計劃并行之后必定會引起資源消耗的增加,包括CPU、內(nèi)存、I/O和網(wǎng)絡(luò)帶寬等資源的消耗都會出現(xiàn)明顯的增長,而且隨著并行度的增大,資源消耗也隨之增大。當(dāng)上述資源成為瓶頸的情況下,SMP無法提升性能,反而可能導(dǎo)致集群整體性能的劣化。SMP支持自適應(yīng)特性,該特性會根據(jù)當(dāng)前資源和查詢特征,動態(tài)選取最優(yōu)的并行度。下面對各種資源對SMP性能的影響情況分別進行說明:

CPU資源
在一般客戶場景中,系統(tǒng)CPU利用率不高的情況下,利用SMP并行架構(gòu)能夠更充分地利用系統(tǒng)CPU資源,提升系統(tǒng)性能。但當(dāng)數(shù)據(jù)庫服務(wù)器的CPU核數(shù)較少,CPU利用率已經(jīng)比較高的情況下,如果打開SMP并行,不僅性能提升不明顯,反而可能因為多線程間的資源競爭而導(dǎo)致性能劣化。
內(nèi)存資源
查詢并行后會導(dǎo)致內(nèi)存使用量的增長,但每個算子使用內(nèi)存上限仍受到work_mem等參數(shù)的限制。假設(shè)work_mem為4GB,并行度為2,那么每個并行線程所分到的內(nèi)存上限為2GB。在work_mem較小或者系統(tǒng)內(nèi)存不充裕的情況下,使用SMP并行后,可能出現(xiàn)數(shù)據(jù)下盤,導(dǎo)致查詢性能劣化的問題。
網(wǎng)絡(luò)帶寬資源
為了實現(xiàn)查詢并行執(zhí)行,會新增并行線程間的數(shù)據(jù)交換算子。對于Local類Stream算子,所需要進行數(shù)據(jù)交換的線程在同一個DN內(nèi),通過內(nèi)存交換,不會增加網(wǎng)絡(luò)負(fù)擔(dān)。而非Local類算子,需要通過網(wǎng)絡(luò)進行數(shù)據(jù)交換,因此會加重網(wǎng)絡(luò)負(fù)擔(dān)。當(dāng)網(wǎng)絡(luò)資源成為瓶頸的情況下,并行可能會導(dǎo)致一定程度的劣化。
I/O資源
要實現(xiàn)并行掃描必定會增加I/O的資源消耗,因此只有在I/O資源充足的情況下,并行掃描才能夠提高掃描性能。
舉例:某客戶現(xiàn)場環(huán)境6塊盤一個raid5部署6dn并發(fā)tpch? ?22個業(yè)務(wù)場景,query_dop=1時,cpu,mem跑滿,執(zhí)行成功,但是執(zhí)行時間不理想,于是調(diào)整query_dop=16提高并行度,結(jié)果sql執(zhí)行失敗。
問題定位方法:
降低業(yè)務(wù)場景的并發(fā)數(shù)量,保證場景能正確執(zhí)行,不斷提升query_dop的值,監(jiān)控cpu、mem、io使用情況(資源監(jiān)控可以根據(jù)sql類型著重監(jiān)測,如select重點監(jiān)測cpu和mem,insert重點監(jiān)測cpu和io),這樣既可以監(jiān)控到資源瓶頸也可以證明query_dop可以提高執(zhí)行效率
建議:
1、smp對資源比較依賴,建議在資源充足的情況下開啟。
2、問題定位過程中建議不要修改過多的參數(shù),以免影響定位效果,也不好解釋是哪個參數(shù)影響的。
3、非標(biāo)部署存在資源爭搶的情況,建議以此為思路進行驗證
任務(wù)調(diào)度 網(wǎng)絡(luò)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。