計(jì)算機(jī)新跨內(nèi)核分配對(duì)時(shí)間敏感的數(shù)據(jù)處理,可快速響應(yīng)用戶!

現(xiàn)今的數(shù)據(jù)中心會(huì)消耗大量能量,并且會(huì)浪費(fèi)大量的能量來盡可能快地響應(yīng)用戶的請(qǐng)求,而延遲只有幾微秒。麻省理工學(xué)院(MIT)研究人員開發(fā)的一種新系統(tǒng),通過更好地跨中央處理器(CPU)內(nèi)核分配時(shí)間敏感的數(shù)據(jù)處理,并確保硬件高效運(yùn)行,提高了高速操作的效率。

數(shù)據(jù)中心作為分布式網(wǎng)絡(luò)運(yùn)行,在單個(gè)服務(wù)器上實(shí)現(xiàn)大量web和移動(dòng)應(yīng)用程序。當(dāng)用戶向應(yīng)用程序發(fā)送請(qǐng)求時(shí),存儲(chǔ)的數(shù)據(jù)片段將從數(shù)百或數(shù)千個(gè)服務(wù)器上提取。在發(fā)送響應(yīng)之前,應(yīng)用程序必須等待最慢的服務(wù)來處理數(shù)據(jù),這種延遲時(shí)間稱為尾部延遲。當(dāng)前減少尾部延遲的方法使服務(wù)器中大量CPU內(nèi)核處于打開狀態(tài),以便快速處理傳入的請(qǐng)求。

博科園-科學(xué)科普:但這意味著內(nèi)核大部分時(shí)間處于閑置狀態(tài),而服務(wù)器繼續(xù)使用能源只是為了保持供電。數(shù)據(jù)中心可以包含數(shù)十萬臺(tái)服務(wù)器,因此即使每臺(tái)服務(wù)器的效率稍有提高,也可以節(jié)省數(shù)百萬美元。或者,一些系統(tǒng)根據(jù)工作負(fù)載在應(yīng)用程序之間重新分配內(nèi)核。但是這發(fā)生在毫秒以上——大約是當(dāng)今快節(jié)奏請(qǐng)求所需速度的千分之一。等待太久也會(huì)降低應(yīng)用程序的性能,因?yàn)樵诜峙涞臅r(shí)間之前沒有處理的任何信息都不會(huì)發(fā)送給用戶。在USENIX網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)大會(huì)上發(fā)表的一篇論文中,研究人員開發(fā)了一種更快的核心分配系統(tǒng),名為Shenango,它可以減少尾部延遲,同時(shí)實(shí)現(xiàn)高效率。

首先,一種新的算法可以檢測(cè)哪些應(yīng)用程序正在艱難地處理數(shù)據(jù)。然后,軟件組件分配空閑內(nèi)核來處理應(yīng)用程序的工作負(fù)載。第一作者、計(jì)算機(jī)科學(xué)與人工智能實(shí)驗(yàn)室(CSAIL)的一名博士生Amy Ousterhout說:在數(shù)據(jù)中心,效率和延遲之間存在權(quán)衡,你真的需要在比每毫秒更細(xì)的粒度上重新分配內(nèi)核。Shenango允許服務(wù)器“管理在非常短的時(shí)間內(nèi)發(fā)生操作,并高效地執(zhí)行這些操作。根據(jù)數(shù)據(jù)中心的大小和工作負(fù)載的不同,節(jié)省的能源和成本也會(huì)有所不同。但總體目標(biāo)是提高數(shù)據(jù)中心的CPU利用率,使每個(gè)核心都能得到很好的利用。

目前的最佳CPU利用率約為60%,但研究人員表示,他們的系統(tǒng)可能會(huì)將這一數(shù)字提高到100%。電子工程和計(jì)算機(jī)科學(xué)的助理教授、CSAIL的研究員、論文的合著者Adam Belay說:現(xiàn)在數(shù)據(jù)中心的利用率非常低,這是一個(gè)非常嚴(yán)重的問題,在數(shù)據(jù)中心的一個(gè)地方是無法解決。但這個(gè)系統(tǒng)是提高利用率的一個(gè)關(guān)鍵因素。與Ousterhout和Belay一起發(fā)表論文的還有富士通電氣工程和計(jì)算機(jī)科學(xué)系的講座教授Hari Balakrishnan, CSAIL的博士生Jonathan Behrens和Joshua Fried。
高效的擁塞檢測(cè)
在真實(shí)的數(shù)據(jù)中心,shenango算法和軟件將在數(shù)據(jù)中心的每個(gè)服務(wù)器上運(yùn)行,所有服務(wù)器將能夠彼此通信。該系統(tǒng)的第一個(gè)創(chuàng)新是一種新的擁塞檢測(cè)算法。該算法每5微秒檢查排隊(duì)等待處理每個(gè)應(yīng)用程序的數(shù)據(jù)包。如果數(shù)據(jù)包仍在等待最后一次觀察,該算法注意到至少有5微秒的延遲。它還檢查是否有任何稱為線程的計(jì)算進(jìn)程等待執(zhí)行。如果是這樣,系統(tǒng)認(rèn)為這是一個(gè)“擁擠”的應(yīng)用程序??雌饋砗芎?jiǎn)單,但是隊(duì)列的結(jié)構(gòu)對(duì)于實(shí)現(xiàn)微秒級(jí)擁塞檢測(cè)非常重要。傳統(tǒng)的想法是讓軟件檢查每個(gè)排隊(duì)的數(shù)據(jù)包的時(shí)間戳,這將花費(fèi)太多的時(shí)間。研究人員在稱為“環(huán)形緩沖區(qū)”的有效結(jié)構(gòu)中實(shí)現(xiàn)隊(duì)列,這些結(jié)構(gòu)可以想象成環(huán)上的不同槽。

第一個(gè)輸入的數(shù)據(jù)包進(jìn)入一個(gè)起始槽。當(dāng)新的數(shù)據(jù)到達(dá)時(shí),它們被放入環(huán)周圍的后續(xù)槽中。通常,這些結(jié)構(gòu)用于先入先出的數(shù)據(jù)處理,從起始槽提取數(shù)據(jù)并向結(jié)束槽工作。然而,研究人員的系統(tǒng)只在結(jié)構(gòu)中短暫地存儲(chǔ)數(shù)據(jù)包,直到應(yīng)用程序能夠處理它們。同時(shí),存儲(chǔ)的數(shù)據(jù)包可以用于擁塞檢查。該算法只需要比較隊(duì)列中的兩個(gè)點(diǎn)(第一個(gè)數(shù)據(jù)包的位置和最后一個(gè)數(shù)據(jù)包在5微秒之前的位置)就可以確定數(shù)據(jù)包是否遇到了延遲??梢杂^察這兩點(diǎn),每5微秒跟蹤它們的進(jìn)程,看看有多少數(shù)據(jù)被處理過。因?yàn)榻Y(jié)構(gòu)很簡(jiǎn)單,每個(gè)核心只需要做一次。如果你查看24個(gè)核,會(huì)在5微秒內(nèi)進(jìn)行24次檢查,這很好。
智能分配
第二個(gè)創(chuàng)新是IOKernel,它是將數(shù)據(jù)包引導(dǎo)到適當(dāng)應(yīng)用程序的中央軟件中心。IOKernel還使用擁塞檢測(cè)算法,能夠比傳統(tǒng)方法更快地將內(nèi)核分配給擁塞應(yīng)用程序,速度要快幾個(gè)數(shù)量級(jí)。例如,IOKernel可能會(huì)看到某個(gè)應(yīng)用程序需要微秒處理速度的傳入數(shù)據(jù)包。如果應(yīng)用程序因?yàn)槿鄙賰?nèi)核而擁塞,IOKernel會(huì)立即將空閑的內(nèi)核分配給應(yīng)用程序。如果它還看到另一個(gè)應(yīng)用程序運(yùn)行著對(duì)時(shí)間不敏感的內(nèi)核,它會(huì)抓取其中一些內(nèi)核,并將它們重新分配給擁塞的應(yīng)用程序。處理后的數(shù)據(jù)返回IOKernel發(fā)送響應(yīng)。

IOKernel關(guān)注的是哪些應(yīng)用程序需要沒有核心的內(nèi)核,試圖找出誰超載了,需要更多的核,并盡快給他們提供核,這樣他們就不會(huì)落后,也不會(huì)有很大的延遲。IOKernel、算法、應(yīng)用程序和服務(wù)器硬件之間的緊密通信“在數(shù)據(jù)中心中是獨(dú)一無二的,并允許Shenango無縫地運(yùn)行,該系統(tǒng)對(duì)每個(gè)服務(wù)器上發(fā)生的事情具有全局可見性。它可以看到提供數(shù)據(jù)包的硬件、每個(gè)內(nèi)核中運(yùn)行的內(nèi)容以及每個(gè)應(yīng)用程序的繁忙程度。它在微秒的尺度上做到了這一點(diǎn)。接下來,研究人員將對(duì)Shenango進(jìn)行優(yōu)化,以實(shí)現(xiàn)真實(shí)的數(shù)據(jù)中心。為此,他們確保軟件能夠處理非常高的數(shù)據(jù)吞吐量并具有適當(dāng)?shù)陌踩匦浴?/p>
博科園-科學(xué)科普|研究/來自: 麻省理工學(xué)院/Rob Matheson
博科園-傳遞宇宙科學(xué)之美
