- 相關(guān)推薦
機(jī)器學(xué)習(xí)的服務(wù)器調(diào)優(yōu)系統(tǒng)設(shè)計(jì)論文
當(dāng)代,論文常用來(lái)指進(jìn)行各個(gè)學(xué)術(shù)領(lǐng)域的研究和描述學(xué)術(shù)研究成果的文章,簡(jiǎn)稱(chēng)之為論文。它既是探討問(wèn)題進(jìn)行學(xué)術(shù)研究的一種手段,又是描述學(xué)術(shù)研究成果進(jìn)行學(xué)術(shù)交流的一種工具。下面是小編整理的機(jī)器學(xué)習(xí)的服務(wù)器調(diào)優(yōu)系統(tǒng)設(shè)計(jì)論文,歡迎大家分享。
[摘要]
隨著計(jì)算機(jī)網(wǎng)絡(luò)的廣泛應(yīng)用,越來(lái)越多的網(wǎng)絡(luò)服務(wù)程序都要求服務(wù)器具有穩(wěn)定的性能以提供可靠的服務(wù)。本文提出了基于機(jī)器學(xué)習(xí)的服務(wù)器調(diào)優(yōu)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)方法,為提高服務(wù)器的可靠性及高效性提供了較好的解決方案。
[關(guān)鍵詞]
機(jī)器學(xué)習(xí);服務(wù)器調(diào)優(yōu);線(xiàn)程池
[中圖分類(lèi)號(hào)]
TP181[文獻(xiàn)標(biāo)識(shí)碼]A[文章編號(hào)]1009—5349(2016)02-0133-01
一、線(xiàn)程池調(diào)優(yōu)系統(tǒng)總體設(shè)計(jì)
線(xiàn)程池調(diào)優(yōu)系統(tǒng)由四個(gè)模塊組成:線(xiàn)程池模塊、性能監(jiān)測(cè)模塊、支持向量機(jī)調(diào)優(yōu)模塊。線(xiàn)程池模塊負(fù)責(zé)線(xiàn)程池的創(chuàng)建與維護(hù),任務(wù)隊(duì)列的任務(wù)管理等,并將任務(wù)隊(duì)列中的用戶(hù)任務(wù)取出放入線(xiàn)程池中進(jìn)行執(zhí)行。性能監(jiān)測(cè)模塊負(fù)責(zé)對(duì)表征線(xiàn)程池性能的三個(gè)特征量吞吐量、任務(wù)運(yùn)算時(shí)間和任務(wù)阻塞時(shí)間的監(jiān)測(cè),作為測(cè)試樣本輸入支持向量機(jī)調(diào)優(yōu)模塊中。支持向量機(jī)調(diào)優(yōu)模塊則通過(guò)性能監(jiān)測(cè)模塊提供的測(cè)試樣本,得到所需的最佳線(xiàn)程池尺寸,并與當(dāng)前的線(xiàn)程池尺寸進(jìn)行對(duì)比,最后調(diào)整線(xiàn)程池尺寸到最佳。
二、線(xiàn)程池模塊
線(xiàn)程池模塊主要負(fù)責(zé)線(xiàn)程池內(nèi)線(xiàn)程的創(chuàng)建、銷(xiāo)毀、構(gòu)造任務(wù)隊(duì)列,并將任務(wù)隊(duì)列中的用戶(hù)任務(wù)取入線(xiàn)程池中分配空閑線(xiàn)程來(lái)執(zhí)行。系統(tǒng)采用Win32的提供的線(xiàn)程庫(kù),以面向?qū)ο笏枷雽?shí)現(xiàn)相關(guān)功能模塊。線(xiàn)程池模塊主要包括線(xiàn)程池類(lèi)CPoolThread、任務(wù)隊(duì)列類(lèi)CJobDequeue、線(xiàn)程類(lèi)CThread以及同步類(lèi)CMutex。線(xiàn)程類(lèi)CThread最重要的一個(gè)方法是線(xiàn)程的創(chuàng)建方法CThread::Create()。線(xiàn)程創(chuàng)建方法采用了Win32線(xiàn)程庫(kù)提供的線(xiàn)程創(chuàng)建應(yīng)用程序接口CreateThread(Null,0,_ThreadEntry,this,0,&ThreadID)來(lái)實(shí)現(xiàn)。線(xiàn)程池類(lèi)CThreadPool主要提供了一個(gè)數(shù)組變量m_list_thread來(lái)維護(hù)一個(gè)線(xiàn)程池,線(xiàn)程池內(nèi)的每個(gè)線(xiàn)程都存在了這個(gè)數(shù)組變量中,而具體的池內(nèi)線(xiàn)程的操作都交給了線(xiàn)程類(lèi)CThread來(lái)完成。線(xiàn)程池類(lèi)CThreadPool主要包括初始化線(xiàn)程池的初始化方法CThreadPool::InitInstance()來(lái)實(shí)現(xiàn)線(xiàn)程池內(nèi)所有線(xiàn)程的創(chuàng)建操作,具體通過(guò)CThread類(lèi)的CThread::Create()方法來(lái)實(shí)現(xiàn)每個(gè)線(xiàn)程的創(chuàng)建。任務(wù)隊(duì)列類(lèi)CJobQueue是線(xiàn)程池類(lèi)的一個(gè)對(duì)象,維護(hù)了一個(gè)任務(wù)隊(duì)列數(shù)組列表m_normal_list,用戶(hù)任務(wù)經(jīng)過(guò)線(xiàn)程池類(lèi)添加任務(wù)接口進(jìn)入此數(shù)組列表中。任務(wù)隊(duì)列類(lèi)通過(guò)隊(duì)列列表來(lái)維護(hù)管理等待中的用戶(hù)任務(wù)。同步類(lèi)CMutex主要是為了實(shí)現(xiàn)程序中的某些互斥操作設(shè)立的,通過(guò)對(duì)私有變量m_lock調(diào)用WinAPI函數(shù)的WaitForSingleObject()與ReleaseMutex()來(lái)實(shí)現(xiàn)程序的加鎖與解鎖操作。
三、性能監(jiān)測(cè)模塊
性能監(jiān)測(cè)模塊主要是監(jiān)測(cè)表征線(xiàn)程池性能的三個(gè)特征量:吞吐量、任務(wù)運(yùn)算時(shí)間和任務(wù)阻塞時(shí)間。由于吞吐量是監(jiān)測(cè)用戶(hù)任務(wù)進(jìn)入任務(wù)隊(duì)列的數(shù)量,因此,對(duì)吞吐量的監(jiān)測(cè)可以在任務(wù)隊(duì)列類(lèi)中實(shí)現(xiàn)。而任務(wù)運(yùn)算時(shí)間和任務(wù)阻塞時(shí)間直接是與線(xiàn)程的執(zhí)行任務(wù)相關(guān)的,因此,將這兩個(gè)量的監(jiān)測(cè)放入線(xiàn)程類(lèi)中實(shí)現(xiàn)。性能監(jiān)測(cè)模塊對(duì)吞吐量的監(jiān)測(cè)方法。每當(dāng)有用戶(hù)任務(wù)通過(guò)線(xiàn)程池類(lèi)進(jìn)入任務(wù)隊(duì)列時(shí),任務(wù)隊(duì)列將其成員變量m_tuntu進(jìn)行加1操作,實(shí)現(xiàn)對(duì)吞吐量的實(shí)時(shí)更新。任務(wù)運(yùn)算時(shí)間的監(jiān)測(cè)方法主要通過(guò)調(diào)用Windows提供的API函數(shù)GetThreadTimes添加至線(xiàn)程類(lèi)中的Run方法中來(lái)實(shí)現(xiàn)。GetThreadTimes函數(shù)可以返回四個(gè)參數(shù):線(xiàn)程創(chuàng)建時(shí)間、線(xiàn)程退出時(shí)間、系統(tǒng)代碼運(yùn)算時(shí)間和用戶(hù)代碼運(yùn)算時(shí)間。因此,可以通過(guò)對(duì)系統(tǒng)代碼時(shí)間與用戶(hù)代碼時(shí)間求和來(lái)得到任務(wù)占用CPU的時(shí)間,也就是任務(wù)運(yùn)算時(shí)間。具體做法是當(dāng)線(xiàn)程類(lèi)中Run方法啟動(dòng)用戶(hù)任務(wù)時(shí),即調(diào)用此API函數(shù),獲得任務(wù)進(jìn)入線(xiàn)程池時(shí)間;當(dāng)用戶(hù)任務(wù)運(yùn)行結(jié)束時(shí),再次調(diào)用此API函數(shù),即可獲得任務(wù)離開(kāi)線(xiàn)程池時(shí)間,將二者做差即可得到任務(wù)占用CPU的運(yùn)算時(shí)間。對(duì)任務(wù)阻塞時(shí)間的監(jiān)測(cè)方法的實(shí)現(xiàn)則相對(duì)麻煩一些,因?yàn)闆](méi)有直接測(cè)試任務(wù)阻塞時(shí)間的API函數(shù)。但是可以通過(guò)間接的方法來(lái)測(cè)量,即任務(wù)阻塞時(shí)間=任務(wù)執(zhí)行時(shí)間—任務(wù)運(yùn)算時(shí)間。其中,任務(wù)執(zhí)行時(shí)間可以通過(guò)WindowsAPI函數(shù)getTickCount()來(lái)分別得到任務(wù)進(jìn)入線(xiàn)程池與離開(kāi)線(xiàn)程池時(shí)的CPU時(shí)鐘,從而做差就可以求出任務(wù)執(zhí)行時(shí)間;而任務(wù)運(yùn)算時(shí)間也可以得到,因此再將兩者做差就可以得出最后的任務(wù)阻塞時(shí)間。具體做法同監(jiān)測(cè)任務(wù)運(yùn)算時(shí)間時(shí)的做法,只是改變了監(jiān)測(cè)的API函數(shù)。
四、支持向量機(jī)調(diào)優(yōu)模塊
根據(jù)支持向量機(jī)調(diào)優(yōu)模型,將支持向量機(jī)調(diào)優(yōu)模塊寫(xiě)成線(xiàn)程類(lèi)中的一個(gè)函數(shù)——調(diào)優(yōu)函數(shù)Tuning()。通過(guò)線(xiàn)程池類(lèi)內(nèi)的成員變量m_tuntu、m_cmptm和m_blktm獲取當(dāng)前線(xiàn)程池性能數(shù)據(jù),輸入到支持向量機(jī)方法中得到最佳線(xiàn)程池尺寸。當(dāng)最佳線(xiàn)程池尺寸與當(dāng)前線(xiàn)程池尺寸不符時(shí),需要對(duì)線(xiàn)程池的尺寸進(jìn)行調(diào)整。當(dāng)需要增加線(xiàn)程池尺寸時(shí),可以通過(guò)WindowsAPI函數(shù)CreateThread()來(lái)創(chuàng)建新線(xiàn)程;當(dāng)需要減小線(xiàn)程池尺寸時(shí),可以通過(guò)調(diào)用函數(shù)TerminateThread()來(lái)銷(xiāo)毀空閑線(xiàn)程,最終達(dá)到所需的最佳線(xiàn)程池尺寸。
【參考文獻(xiàn)】
[1]董如意.基于二階段法的新型凸殼支持向量機(jī)研究[J].現(xiàn)代交際,2012(11).
【機(jī)器學(xué)習(xí)的服務(wù)器調(diào)優(yōu)系統(tǒng)設(shè)計(jì)論文】相關(guān)文章:
FPGA數(shù)據(jù)采集與回放系統(tǒng)設(shè)計(jì)論文04-24
基于系統(tǒng)設(shè)計(jì)的科研管理論文03-21
解析科技競(jìng)賽賽務(wù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文04-19
綜合布線(xiàn)系統(tǒng)設(shè)計(jì)項(xiàng)目教學(xué)模式應(yīng)用論文07-12
系統(tǒng)優(yōu)化與系統(tǒng)設(shè)計(jì)的教學(xué)07-08
關(guān)于景觀導(dǎo)視系統(tǒng)設(shè)計(jì)實(shí)踐教學(xué)方法的論文07-12
庫(kù)存管理系統(tǒng)論文07-24
控制系統(tǒng)論文12-07
物資管理系統(tǒng)論文08-06