国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

線程池調(diào)度對服務器性能影響的研究*

2019-10-09 05:22
通信技術 2019年9期
關鍵詞:臨界點管理器正態(tài)分布

彭 華

(中國電子科技集團公司第三十研究所,四川 成都 610041)

0 引 言

隨著網(wǎng)絡和信息安全技術的快速發(fā)展,每天有數(shù)以萬計的用戶在不斷訪問各類大型網(wǎng)站,服務器需要并發(fā)處理大量的用戶連接請求。如何使服務器在面對大量訪問請求時仍能應付自如,成為需要迫切解決的問題。在服務器的網(wǎng)絡處理能力設計時,通常采用多路復用I/O機制加線程池技術實現(xiàn)[1]。

但是,大量訪問請求產(chǎn)生的網(wǎng)絡連接可能導致頻繁的線程調(diào)度,從而消耗大量的系統(tǒng)額外時間,或者導致調(diào)度不及時,導致連接請求沒有及時響應和處理,最終導致線程池技術沒有發(fā)揮出預期的性能。如何設計服務器的線程池調(diào)度算法使其能夠盡可能發(fā)揮線程池的效能,是一個需要重點解決的問題。

1 線程池技術

1.1 采用線程池技術的原因

創(chuàng)建和銷毀線程很費時,因為創(chuàng)建一個線程要獲取內(nèi)存資源或者其他更多資源。因此,提高效率的一個手段是盡可能減少創(chuàng)建和銷毀對象的次數(shù),特別是一些耗資源的對象創(chuàng)建和銷毀。為了節(jié)省對象創(chuàng)建和銷毀所產(chǎn)生的系統(tǒng)時間,需要準備一個容器用來保存一批這樣的對象。當需要使用這種對象時,不再需要每次去創(chuàng)建,而是直接從容器中取出現(xiàn)成的直接使用。由于節(jié)省了創(chuàng)建和銷毀對象所需的開銷,程序性能得以提升,而存放和管理這些線程對象的容器就是線程池[2]。

1.2 線程池的組成

如圖1所示,一般簡單線程池至少由以下3部分組成[2]。

圖1 線程池組成結構

線程池管理器:也稱為主控線程,用于創(chuàng)建和管理線程池中的工作線程,定時對任務隊列掃描、清理過期未提交工作線程執(zhí)行的積壓數(shù)據(jù)。

工作線程:用于任務處理的獨立單元,并根據(jù)系統(tǒng)初始設定創(chuàng)建其數(shù)量,繁忙時會動態(tài)創(chuàng)建新工作線程。

任務隊列:提供一種緩沖機制用于存放等待處理的任務,工作線程根據(jù)相應的原則從任務隊列中獲取數(shù)據(jù)處理。

1.3 線程池的工作原理

線程池采用預創(chuàng)建的技術,在應用程序啟動后,將立即創(chuàng)建一定數(shù)量的線程(N)放入空閑隊列中。這些線程處于阻塞狀態(tài),不消耗CPU,但占用較小的內(nèi)存空間。

線程池中線程的數(shù)目是動態(tài)調(diào)整的。當任務到來后將其存入任務隊列,線程池管理器選擇一個空閑線程,把任務傳入此線程中運行。當線程池中的所有線程都處于繁忙狀態(tài)時,線程池自動創(chuàng)建新線程處理更多的任務;當線程池比較空閑時,線程池銷毀一部分空閑線程,釋放系統(tǒng)資源,只保留初始創(chuàng)建的N個線程[2]。

1.4 線程池的優(yōu)點

(1)可以控制產(chǎn)生線程的數(shù)量。通過預先創(chuàng)建一定數(shù)量的工作線程并限制其數(shù)量,控制線程對象的內(nèi)存消耗[3]。

(2)降低系統(tǒng)開銷和資源消耗[3]。通過對多個請求重用線程,線程創(chuàng)建、銷毀的開銷被分攤到多個請求上。另外,通過限制線程數(shù)量,降低線程池在垃圾回收方面的開銷。

(3)提高系統(tǒng)響應速度。線程事先已被創(chuàng)建,任務到達時可直接進行處理,消除了因線程創(chuàng)建所帶來的時間延遲。另外,多個線程可以并發(fā)處理[3]。

1.5 線程池調(diào)度的作用

線程池技術解決了服務器多個線程執(zhí)行的調(diào)試問題,可以使處理器盡量保持忙碌狀態(tài),充分利用系統(tǒng)的可用資源,顯著提高系統(tǒng)性能。但是,如果線程池調(diào)度策略設計不當也會事與愿違[4]。

2 線程池調(diào)度實驗設計

可以通過以下2個實驗測試線程池調(diào)度策略的參數(shù)取值對服務器性能和資源占用的影響。

2.1 實驗一

假設并發(fā)用戶連接總數(shù)為T,線程池初始線程數(shù)N,每個線程處理最多M個用戶連接。當有用戶連接請求時,線程池會隨機選擇一個線程對該連接請求進行處理。線程繁忙臨界點設為P(0%

如圖2所示,當某一個工作線程的用戶連接數(shù)X=0時,說明該線程處于空狀態(tài);當用戶連接數(shù)X

圖2 工作線程的運行狀態(tài)

線程池調(diào)度周期為t,當所有工作線程處于忙狀態(tài)時,線程池管理器會新創(chuàng)建一個線程并加入線程池。

以T=20 000、N=4、M=2 000、t=1 s為例,測試線程繁忙臨界點P在不同取值下的訪問完成時間和線程總數(shù)。

2.2 實驗二

根據(jù)概率論與統(tǒng)計學原理,自然界很多看似沒有規(guī)律可尋的隨機事件其實服從正態(tài)分布[5]。

正態(tài)分布是一種自然分布,有極其廣泛的應用背景。在生產(chǎn)和科學實驗中,很多隨機變量的概率分布都可以近似用正態(tài)分布來表示。

如圖3所示,正態(tài)分布有2個參數(shù),即期望值和標準差,可記作N(μ,σ)。

圖3 正態(tài)分布

正態(tài)分布有如下特性:

假設在用戶訪問服務器的高峰時間段,用戶訪問總數(shù)為50萬,用戶訪問數(shù)量服從正態(tài)分布,如表1所示。

表1 高峰時間段訪問服務器的用戶數(shù)

測試線程繁忙臨界點P在取值30、60和90的情況下,高峰時段在各時間點的用戶完成數(shù)和耗時。

3 實驗結果和分析

實驗利用線程池方式實現(xiàn)的服務器做性能測試分析。服務器CPU為Intel Xeon 2.10 GHz雙核,內(nèi)存64 GB,操作系統(tǒng)Fedora Core 14。實驗一的測試結果如表2所示。

表2 臨界點P對完成時間和線程數(shù)的影響

將表2中的臨界點P在不同取值下的完成時間轉換為圖4,將表2中的臨界點P在不同取值下的處理線程數(shù)轉換為圖5。

圖4 臨界點P在不同取值下的完成時間對比

圖5 臨界點P在不同取值下的線程數(shù)對比

綜合圖4和圖5可見,隨著臨界點P值的增大,用戶連接處理不及時的概率增加,導致用戶連接處理完成時間變長,降低了網(wǎng)絡服務器的性能。但是,如果臨界點P值設置過小,會在線程還未飽和的情況下提前創(chuàng)建新線程,導致線程數(shù)量增加,造成系統(tǒng)資源浪費。

實驗二的測試結果,如圖6、圖7所示。

分析圖6可知,在用戶訪問的高峰時間段,隨著臨界點P值的增大,服務器對高峰期用戶訪問請求的響應速度變慢,未及時處理的用戶訪問請求會被延遲到高峰期后處理。

分析圖7可知,在用戶訪問的高峰時間段,隨著臨界點P值的增大,對高峰期用戶訪問請求的處理耗時會隨著用戶數(shù)的增加而增大,一旦到達服務器的處理極限后,會保持相同的處理耗時。結合圖6的分析可知,由于未及時處理的用戶訪問請求被延遲,所以處理耗時的下降拐點隨著臨界點P值的增大而延后。

圖6 臨界點P在不同取值下的用戶完成數(shù)對比

圖7 臨界點P在不同取值下的處理耗時對比

綜上所述,線程池模型主要是通過線程池管理器對線程池進行并發(fā)調(diào)度。線程池管理器主要通過各個工作線程的負載情況和任務的優(yōu)先級別調(diào)度任務,使得線程池工作更加靈活,處理任務更加及時、高效。但是,由于線程池的工作調(diào)度依賴于線程池管理器調(diào)度算法,所以線程池性能主要受到調(diào)度策略和調(diào)度參數(shù)的影響[6]。因此,不同的服務器需要根據(jù)應用場景尋找最優(yōu)的線程池調(diào)度方案,使服務器性能與資源消耗達到平衡。

4 結 語

線程池技術為線程創(chuàng)建銷毀的開銷問題和系統(tǒng)資源不足的問題提供了一個較好的解決方案,尤其適用于大量用戶訪問請求的服務器應用[7]。但是,要使線程池的處理效率更高,對線程池的調(diào)度是一個要考慮的問題,且調(diào)度策略和調(diào)度參數(shù)要根據(jù)實際應用場景來設定。只有合理的線程池調(diào)度,才能發(fā)揮出線程池技術在服務器應用中的最大效能。

猜你喜歡
臨界點管理器正態(tài)分布
關于n維正態(tài)分布線性函數(shù)服從正態(tài)分布的證明*
啟動Windows11任務管理器的幾種方法
應急狀態(tài)啟動磁盤管理器
生活常態(tài)模式
Windows文件緩沖處理技術概述
超越生命的臨界點
正態(tài)分布及其應用
在Win 7下利用憑據(jù)管理器提高訪問速度等
高考正態(tài)分布問題例析
红桥区| 香港 | 德保县| 南靖县| 株洲县| 溆浦县| 无锡市| 抚宁县| 拉萨市| 岳阳市| 梨树县| 咸丰县| 环江| 孝义市| 双峰县| 高要市| 行唐县| 抚州市| 都江堰市| 北安市| 丽水市| 甘南县| 灵璧县| 常宁市| 茂名市| 赫章县| 建水县| 罗平县| 即墨市| 临江市| 淳化县| 商丘市| 湘乡市| 定南县| 玉田县| 信宜市| 苏州市| 长武县| 阿鲁科尔沁旗| 大埔区| 库伦旗|