機器學習的伺服器調優系統設計論文

機器學習的伺服器調優系統設計論文

  當代,論文常用來指進行各個學術領域的研究和描述學術研究成果的文章,簡稱之為論文。它既是探討問題進行學術研究的一種手段,又是描述學術研究成果進行學術交流的一種工具。下面是小編整理的機器學習的伺服器調優系統設計論文,歡迎大家分享。

  [摘要]

  隨著計算機網路的廣泛應用,越來越多的網路服務程式都要求伺服器具有穩定的效能以提供可靠的服務。本文提出了基於機器學習的伺服器調優系統的設計與實現方法,為提高伺服器的可靠性及高效性提供了較好的解決方案。

  [關鍵詞]

  機器學習;伺服器調優;執行緒池

  [中圖分類號]

  TP181[文獻標識碼]A[文章編號]1009—5349(2016)02-0133-01

  一、執行緒池調優系統總體設計

  執行緒池調優系統由四個模組組成:執行緒池模組、效能監測模組、支援向量機調優模組。執行緒池模組負責執行緒池的建立與維護,任務佇列的任務管理等,並將任務佇列中的使用者任務取出放入執行緒池中進行執行。效能監測模組負責對錶徵執行緒池效能的三個特徵量吞吐量、任務運算時間和任務阻塞時間的監測,作為測試樣本輸入支援向量機調優模組中。支援向量機調優模組則透過效能監測模組提供的測試樣本,得到所需的最佳執行緒池尺寸,並與當前的執行緒池尺寸進行對比,最後調整執行緒池尺寸到最佳。

  二、執行緒池模組

  執行緒池模組主要負責執行緒池內執行緒的建立、銷燬、構造任務佇列,並將任務佇列中的使用者任務取入執行緒池中分配空閒執行緒來執行。系統採用Win32的提供的執行緒庫,以面向物件思想實現相關功能模組。執行緒池模組主要包括執行緒池類CPoolThread、任務佇列類CJobDequeue、執行緒類CThread以及同步類CMutex。執行緒類CThread最重要的一個方法是執行緒的建立方法CThread::Create()。執行緒建立方法採用了Win32執行緒庫提供的執行緒建立應用程式介面CreateThread(Null,0,_ThreadEntry,this,0,&ThreadID)來實現。執行緒池類CThreadPool主要提供了一個數組變數m_list_thread來維護一個執行緒池,執行緒池內的每個執行緒都存在了這個陣列變數中,而具體的池內執行緒的操作都交給了執行緒類CThread來完成。執行緒池類CThreadPool主要包括初始化執行緒池的初始化方法CThreadPool::InitInstance()來實現執行緒池內所有執行緒的建立操作,具體透過CThread類的CThread::Create()方法來實現每個執行緒的建立。任務佇列類CJobQueue是執行緒池類的一個物件,維護了一個任務佇列陣列列表m_normal_list,使用者任務經過執行緒池類新增任務介面進入此陣列列表中。任務佇列類透過佇列列表來維護管理等待中的使用者任務。同步類CMutex主要是為了實現程式中的某些互斥操作設立的,透過對私有變數m_lock呼叫WinAPI函式的WaitForSingleObject()與ReleaseMutex()來實現程式的加鎖與解鎖操作。

  三、效能監測模組

  效能監測模組主要是監測表徵執行緒池效能的三個特徵量:吞吐量、任務運算時間和任務阻塞時間。由於吞吐量是監測使用者任務進入任務佇列的數量,因此,對吞吐量的監測可以在任務佇列類中實現。而任務運算時間和任務阻塞時間直接是與執行緒的執行任務相關的,因此,將這兩個量的監測放入執行緒類中實現。效能監測模組對吞吐量的監測方法。每當有使用者任務透過執行緒池類進入任務佇列時,任務佇列將其成員變數m_tuntu進行加1操作,實現對吞吐量的實時更新。任務運算時間的監測方法主要透過呼叫Windows提供的API函式GetThreadTimes新增至執行緒類中的'Run方法中來實現。GetThreadTimes函式可以返回四個引數:執行緒建立時間、執行緒退出時間、系統程式碼運算時間和使用者程式碼運算時間。因此,可以透過對系統程式碼時間與使用者程式碼時間求和來得到任務佔用CPU的時間,也就是任務運算時間。具體做法是當執行緒類中Run方法啟動使用者任務時,即呼叫此API函式,獲得任務進入執行緒池時間;當用戶任務執行結束時,再次呼叫此API函式,即可獲得任務離開執行緒池時間,將二者做差即可得到任務佔用CPU的運算時間。對任務阻塞時間的監測方法的實現則相對麻煩一些,因為沒有直接測試任務阻塞時間的API函式。但是可以透過間接的方法來測量,即任務阻塞時間=任務執行時間—任務運算時間。其中,任務執行時間可以透過WindowsAPI函式getTickCount()來分別得到任務進入執行緒池與離開執行緒池時的CPU時鐘,從而做差就可以求出任務執行時間;而任務運算時間也可以得到,因此再將兩者做差就可以得出最後的任務阻塞時間。具體做法同監測任務運算時間時的做法,只是改變了監測的API函式。

  四、支援向量機調優模組

  根據支援向量機調優模型,將支援向量機調優模組寫成執行緒類中的一個函式——調優函式Tuning()。透過執行緒池類內的成員變數m_tuntu、m_cmptm和m_blktm獲取當前執行緒池效能資料,輸入到支援向量機方法中得到最佳執行緒池尺寸。當最佳執行緒池尺寸與當前執行緒池尺寸不符時,需要對執行緒池的尺寸進行調整。當需要增加執行緒池尺寸時,可以透過WindowsAPI函式CreateThread()來建立新執行緒;當需要減小執行緒池尺寸時,可以透過呼叫函式TerminateThread()來銷燬空閒執行緒,最終達到所需的最佳執行緒池尺寸。

  【參考文獻】

  [1]董如意.基於二階段法的新型凸殼支援向量機研究[J].現代交際,2012(11).

最近訪問