今年很重要的一項(xiàng)工作是交易系統(tǒng)的性能優(yōu)化追驴,做多了各種橫向的業(yè)務(wù)擴(kuò)展的項(xiàng)目,能有機(jī)會(huì)做一個(gè)性能優(yōu)化的項(xiàng)目疏之,而且挑戰(zhàn)很大殿雪,還是有點(diǎn)小期待的。問題來了锋爪,怎么樣才能算這個(gè)性能優(yōu)化的項(xiàng)目執(zhí)行成功了呢丙曙?需要可度量的指標(biāo),對(duì)交易系統(tǒng)而言其骄,TPS和延時(shí)是大家常常討論的兩個(gè)指標(biāo)亏镰,但是真的能把這兩個(gè)指標(biāo)解釋清楚,特別是能把兩者間的關(guān)系說清楚的人拯爽,好像還真不多索抓。如果把這兩者的關(guān)系想明白了,其實(shí)性能優(yōu)化的思路也就容易理解了毯炮。
一纸兔、TPS(Transactions Per Second) 事務(wù)數(shù)/秒
TPS是軟件測試結(jié)果的測量單位,一個(gè)事務(wù)是指一個(gè)客戶機(jī)向服務(wù)器發(fā)送請(qǐng)求然后服務(wù)器做出反應(yīng)的過程否副『嚎螅客戶機(jī)在發(fā)送請(qǐng)時(shí)開始計(jì)時(shí),收到服務(wù)器響應(yīng)后結(jié)束計(jì)時(shí)备禀,以此來計(jì)算使用的時(shí)間和完成的事務(wù)個(gè)數(shù)洲拇。對(duì)交易系統(tǒng)而言,一般我們說每秒能處理多少個(gè)訂單曲尸,那對(duì)應(yīng)的就是TPS赋续。
二、延時(shí)另患,也叫響應(yīng)時(shí)間RT(Response Time)
延時(shí)是一個(gè)交易系統(tǒng)最重要的指標(biāo)之一纽乱,它的數(shù)值大小直接反應(yīng)了系統(tǒng)的快慢。響應(yīng)時(shí)間是指執(zhí)行一個(gè)請(qǐng)求從開始到最后收到響應(yīng)數(shù)據(jù)所花費(fèi)的總體時(shí)間,即從客戶端發(fā)起請(qǐng)求到收到服務(wù)器響應(yīng)結(jié)果的時(shí)間±セ現(xiàn)在很多投資者開始做算法交易了鸦列,大家也越來越關(guān)心延時(shí)的指標(biāo)了租冠,時(shí)間就是金錢啊。
三薯嗤、TPS和延時(shí)的關(guān)系
如果系統(tǒng)內(nèi)部就是一個(gè)單模塊顽爹,完全沒有并發(fā),那么TPS和延時(shí)的關(guān)系很簡單骆姐,就是“TPS=1/延時(shí)”的關(guān)系镜粤。但是隨著CPU處理性能的不斷提升,流水線技術(shù)使得處理器可以同時(shí)執(zhí)行多條指令玻褪;并行技術(shù)使得處理器可以同時(shí)執(zhí)行多個(gè)任務(wù)肉渴,為上層應(yīng)用的優(yōu)化提供了更多的可能性。TPS和延時(shí)的關(guān)系就更加復(fù)雜了带射。
四同规、流水線和并行化對(duì)TPS的影響
流水線的TPS看這張圖比較容易理解,這里要注意的是段的劃分庸诱,每個(gè)段都是一個(gè)可獨(dú)立運(yùn)轉(zhuǎn)的單元,多個(gè)段可以并行的工作晤揣。
上圖是一個(gè)理想場景桥爽,每一段的執(zhí)行時(shí)間相等,均為△t昧识,那么k個(gè)△t完成第一個(gè)任務(wù)钠四,即k*△t為裝入時(shí)間,其余n-1個(gè)任務(wù)跪楞,每個(gè)△t完成一個(gè)任務(wù)缀去,考慮到交易系統(tǒng)的性能都是很高的,一般是萬級(jí)以上的甸祭,而k相對(duì)于TPS來說往往可以忽略不計(jì)缕碎,可以看成TPS = n/(n+k-1)△t = 1/△t
有了上面這張圖,稍微擴(kuò)展一下不難理解池户,如果每一段的執(zhí)行時(shí)間不一致咏雌,那么TPS =1/△tmax
再擴(kuò)展一下,如果執(zhí)行時(shí)間最長的一段是可以m個(gè)單元并行處理的校焦,那么可以認(rèn)為這一段的延時(shí)就下降為△t/m赊抖,那么這是的TPS就是取決于下一個(gè)瓶頸單元了。
所以寨典,如果要提升系統(tǒng)的TPS氛雪,就是要優(yōu)化最長段的執(zhí)行時(shí)間!