1. 如何衡量一個時間演算法的時間效率
一個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機運行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。
並且一個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。一個演算法中的語句執行次數稱為語句頻度或時間頻度。記為T(n)。演算法的時間復雜度是指執行演算法所需要的計算工作量。
時間效率,一定生產時間內,機器實際運轉時間與理論運轉時間之比,通常用百分率表示。與設備自動化程度、速度、卷裝尺寸、工人操作熟練程度及看台數有關。
(1)如何對演算法耗能進行評估和優化擴展閱讀:
點在空間中變化對點的描述稱為被描述點相當於該點的時間【該點運動到某一位置時,被描述點都會有唯一的對應位置,稱為此時被描述點的位置】。被描述點可以隨時間變化位置不變,可知時間與被描述點的位置有函數關系。
空間使事物具有了變化性,即因為空間的存在,所以事物才可以發生變化。空間是沒有能量的事物,即當事物能產生變化時,變化產生的能量已經和阻礙的能量相互抵消。
天文測時所依賴的是地球自轉,而地球自轉的不均勻性使得天文方法所得到的時間(世界時)精度只能達到10-9,無法滿足二十世紀中葉社會經濟各方面的需求。一種更為精確和穩定的時間標准應運而生,這就是「原子鍾」。
世界各國都採用原子鍾來產生和保持標准時間,這就是「時間基準」,然後,通過各種手段和媒介將時間信號送達用戶,這些手段包括:短波、長波、電話網、互聯網、衛星等。這一整個工序,就稱為「授時系統」。
2. 如何度量演算法的性能
演算法是否高效決定你後面開發的效率和繁瑣度。一般最好用博弈論測試下,核心演算法不行的話最好推倒重建比較好些。
3. 如何優化策略降低系統能耗
針對雲計算系統在運行過程中由於計算節點空閑而產生大量空閑能耗,以及由於不匹配任務調度而產生大量「奢侈」能耗的能耗浪費問題,本文提出一種通過任務調度方式的能耗優化管理方法。
高能耗是雲計算系統最為嚴重的問題之一
雲計算系統中,除了處理任務時產生的必要能耗開銷,其運行過程中還存在能耗浪費的現象
解決方案
用排隊模型對雲計算系統進行建模,分析雲計算系統的平均響應時間和平均功率,建立雲計算系統的能耗模型;
提出基於大服務強度和小執行能耗的任務調度策略,分別針對空閑能耗和「奢侈」能耗進行優化控制。基於該調度策略,設計滿足性能約束的最小期望執行能耗調度演算法ME3PC (minimum expectation execution energy with performance constraints).
結果
大量實驗表明,本文提出的能耗優化管理方法在保證其性能的前提下,大幅度降低了雲計算系統的能耗
下一步工作
將研究在給定和真實的雲計算系統體系結構下,如何根據任務到達率的大小和分布規律,決策系統中應該處於運行狀態的計算機個扮胡數,結合關閉/休眠技術和電壓動態調整技術,進一步對雲計算系統的能耗進行優化控制,並且將研究的理論成果在實際雲平台上進行評測,以驗證其正確性
能耗
能耗分類
空閑能耗:由於計算任務達到的隨機性,使得單位時間內到達的任務量時而稀疏,時而密集,而現有的雲計算系統通常是長時間處於開啟狀態,等待計算任務的到達。但是當計算機處於空閑狀態時,其空閑功率會占峰值功率的50%~60%。因此,雲計算系統會產生大量的空閑能耗。奢侈能耗:由於雲計算系統中通常包含不同的計算機,實驗結果表明,不同計算機對不同計算任務的執行功率和響應時間一般不同。例如,同一圖像處理任務分別在CPU 和GPU 上的執行功率和響應時間不同,任務執行完成後,產生的總能耗也不同。因此,當未考慮能耗因素時,不匹配的調度方式會造成:本來用較低能耗就能解決問題,但卻用了較高能耗。本文把由於任務的不合理調度而浪費的能耗稱為「奢侈」能耗。執行能耗:執行能耗可定義為:任務在計算機上運行時,指令和數據驅動計算機硬體運轉所產生的能耗
傳統節能的方法
關閉/休眠技術:最大飢模限度的降低空閑能耗,缺點是當使用計算機時需要較長的啟動時間,導致系統性能一定程度的下降
電壓動態調整技術:為了便於研究,本文假定執行功率為任務整個執行過程的平均耗電功率。根據CMOS 電路動態功率公式Pdynamic~αCV2f 可知,動態功率與廳肢攔電壓的平方成正比。因此,降低處理器的電壓可以降低處理器的動態功率。但該方法的缺點是,隨著電壓的下降,處理器的性能會隨之下降
虛擬化技術:可實現多個任務在一個計算機的不同虛擬機上運行,通過提高計算機資源利用率,以減少所需計算機數量的方式降低能耗。虛擬化技術實現了計算機資源從物理實體向虛擬實體的遷移,提高了計算機資源的利用率。但虛擬化,特別是深層次的虛擬化本身也要付出高昂的效能代價,因為虛擬化技術通過對底層硬體部件到高層服務應用的層層虛擬,每一級的虛擬都造成了效能的損失。
任務和系統模型
隨機任務模型
根據任務對計算機資源的需求特徵,可分為計算密集型、通信密集型、數據密集型和I/O密集型等。
隨機到達雲計算系統的任務可以用三元組(T,Λ,W)表示,第i類任務可以表示為(ti,λi,wi)。ti表示第i類任務,λi表示ti任務單位時間平均到達數量,wi表示ti任務的計算量
雲計算系統模型
現有雲計算平台的硬體基礎設施通常是架構在大規模廉價伺服器集群之上,系統中的不同伺服器或計算機通常是由不同公司生產,有不同的硬體配置。這些計算機不僅有不同的功能和性能,其耗電的功率也不同,具體可表現為:功能異構、性能異構、空閑功率和峰值功率異構、執行功率異構;
雲計算系統可以定義為六元組:(C,Pbusym×n,Pidle,Ppeak,Um×n,S)
+a7+rW9tO//Ksbv6oaLPtc2z1tDL++NDQus/+1xMrHvbW1zc+1zbPUy9DQuf2zzNbQsvrJ++8wsfUxrzGy++"http://www.it165.net/uploadfile/files/2014/0508/20140508200129405.jpg" alt="\">
問題描述
根據2.1節和2.2節的分析,並結合能耗的計算公式E=P*T,則任意一個任務從進入雲計算系統到執行完成離開所產生的期望能耗可表示為
\
在給定任務類型、確定雲計算系統體系結構的條件下,只有調度概率Pij的值是根據調度策略的不同而動態變化的,雲計算系統的期望能耗與任務和計算機之間的調度策略有關
能耗優化管理
實質
根據任務的到達時間和類型、不同計算機的功率和性能、計算機實時的負載情況,對任務進行合理調度,使系統在滿足一定性能的條件下,降低雲計算系統運行過程中產生的空閑和執行能耗
假設
根據任務對計算機資源的需求特徵,可分為計算密集型、通信密集型、數據密集型和I/O密集型等。不同類型任務要處理的數據形式和問題規模一般不同。為了便於研究,本文假定同一類型任務的計算量相同
由於用戶服務請求的自主性、地域的分布性,導致不同用戶提交的任務之間通常沒有優先約束關系,即任務是獨立的
假設對於系統中的每個計算機,任務的到達間隔相互獨立,且服從同一參數的負指數分布
每個計算機對不同任務的服務時間也相互獨立,且服從同一參數的負指數分布
到達間隔時間與服務時間相互獨立
不同類計算任務以不同的概率調度到不同的計算機上
性能約束的最小期望執行能耗調度演算法ME3PC(minimum expectation execution energy with performance constraints)
調度器針對不同的情況,採用不同的調度策略,詳情請參考第3章
根據負載情況,將節點分在三個隊列:Clight、Cnormal、Chigh,
如果Clight不為空,則優先考慮集合Clight中的計算機,並採用基於大服務強度的任務調度策略,使對tCi類任務有大服務強度的計算機cCj有較大的調度概率,其中j∈Clight
Clight為空,Cnormal不通ky"http://www.it165.net/qq/" target="_blank" class="keylink">qq/+aTwvc3ViPsDgyM7O8dPQvc/Qoda00NDE3LrEtcS8xsvju/pjQzxzdWI+ajwvc3ViPtPQvc++QzxzdWI+ViPrK7zqq/1aOsvLTL+2yLW9uLrU2Nfu0KG1xLzGy+O7+snPCjxwPgo8aW1nIHNyYz0="http://www.it165.net/uploadfile/files/2014/0508/20140508200130420.jpg" alt="\">
定理滿足性能約束的最小執行能耗調度演算法ME3PC的最壞時間復雜度為O(3mn),其中,m為任務的類型數,n為雲計算系統中計算機的個數。
實驗
實驗環境的設置
為了驗證ME3PC演算法的有效性,本文使用Matlab 的離散事件模擬工具進行模擬實驗。實驗環境涉及的相關參數以及取值或取值范圍見下表。
實驗中任務分為4 類。第i類任務的到達間隔時間服從參數為1/λi的負指數分布。該間隔時間可通過負指數分布函數exprnd(1/λi)來生成,其中,λi的值在[10,15]區間隨機生成。根據任務的到達間隔,利用函數cumsum(?)可得到第i 類每個隨機任務到達系統的時刻。最終可確定所有6000個任務到達系統的時刻。計算機cj對ti類任務的服務時間服從參數為1/μij的負指數分布,同樣,服務時間也通過函數exprnd(1/μij)來生成,參數μij的值在[1,5]區間隨機生成
為了讓模擬系統的運行存在平衡狀態,需要滿足條件\
\
實驗與結果分析
為了進一步說明ME3PC演算法的有效性,本文又設計了最小執行功率調度演算法(minimum execution power,簡稱MEP),並將ME3PC與MEP、經典MIN-MIN 演算法進行比較。其中,MEP的演算法思想是:在任務調度時,將任務調度到執行功率最小的機器上,而不考慮該計算機當前的負載情況以及執行該任務的服務時間。MIN-MIN是針對獨立任務的動態調度演算法,廣泛應用於同構或異構分布式並行計算環境,有良好的調度性能。本文分別從系統執行任務的平均能耗、任務的平均響應時間、系統的平均功率、負載平衡和可擴展性這5個方面對3種演算法進行對比分析
從圖2可以看出,採用MEP演算法時系統的平均功率最小,ME3PC略大於MEP,MIN-MIN的功率最大,且遠大於ME3PC和MEP。分析原因是,MEP演算法專注於系統執行功率的優化,任務調度時只將任務調度到執行功率最小的機器上,因此系統平均功率最小,但沒有考慮調度的機器性能,因此總體性能最差。MIN-MIN演算法則相反,只專注於任務的完成時間,而不考慮能耗、負載平衡等其他因素,因此響應時間最小,但是系統平均功率最大。ME3PC演算法則同時考慮了功率和性能因素,雖然系統功率較MEP演算法平均增加了6.4%,響應時間比MIN-MIN演算法平均增加了5.7%,但是任務在系統中的所產生的能耗卻最小,如圖4所示。究其原因是:(1)由於ME3PC演算法針對空閑或輕載計算機採用了大服務強度優先的調度策略,大大降低了系統中計算機出現空閑的概率,使系統的利用率高於MEP和MIN-MIN。其中,採用ME3PC演算法時,系統產生的空閑能耗平均是MEP和MIN-MIN演算法的81%和73%,如圖5所示。(2)由於優先對空閑和輕載計算機進行調度,最大限度地避免了負載不平衡的發生。因此,ME3PC演算法保證了系統的負載平衡,如圖6(a)、圖6(b)所示。可見,只有同時考慮功率和性能因素才能真正降低雲計算系統的能耗。
從實驗結果中,我們發現了一個有趣的現象:當計算機個數為1時,3種演算法下的系統平均功率、任務平均響應時間和任務平均能耗自然都相等。但是隨著計算機個數的增加,系統執行任務的平均能耗卻呈線性下降。當計算機個數為8時,系統執行任務的平均能耗最小。隨著計算機個數的繼續增加,系統執行任務的平均能耗開始增大,且呈指數級增長。究其原因是:(1)當計算機個數從1增加到8的過程中,任務平均響應時間呈指數級減少(如圖3所示),但是系統的平均功率的增勢卻基本趨於平穩(如圖2所示),這導致系統執行任務的平均能耗在該過程中是逐漸降低的,並且由於此時系統平均功率的絕對值較小,因此降低的趨勢呈線性。(2)當計算機個數從8增加到128的過程中,任務平均響應時間下降的趨勢趨於平緩(如圖3所示),但是系統的平均功率的增勢卻呈指數級增加(如圖2所示),這導致系統執行任務的平均能耗在該過程中是逐漸增加的,並且由於此時系統平均功率的絕對值較大,因此增長的趨勢呈指數級。由此可見,在等能耗的條件下,計算機個數為8時系統有最好的擴展性。對於實際的雲計算系統,如何根據系統的體系結構、任務到達的規律確定系統中應該開啟或關閉的機器個數,以及開啟或關閉哪些機器進行能耗的優化控制,將作為下一步的研究內容。
4. 應該從哪些方面分析和評價演算法的性能
分析評價演算法性能的四個標准:
1.正確性
能正確地實現預定的功能,滿足具體問題的需要。處理數據使用的演算法是否得當,能不能得到預想的結果。
2.易讀性
易於閱讀、理解和交流,便於調試、修改和擴充。寫出的演算法,能不能讓別人看明白,能不能讓別人明白演算法的邏輯?如果通俗易懂,在系統調試和修改或者功能擴充的時候,使系統維護更為便捷。
3.健壯性
輸入非法數據,演算法也能適當地做出反應後進行處理,不會產生預料不到的運行結果。數據的形式多種多樣,演算法可能面臨著接受各種各樣的數據,當演算法接收到不適合演算法處理的數據,演算法本身該如何處理呢?如果演算法能夠處理異常數據,處理能力越強,健壯性越好。
4.時空性
演算法的時空性是該演算法的時間性能和空間性能。主要是說演算法在執行過程中的時間長短和空間佔用多少問題。
演算法處理數據過程中,不同的演算法耗費的時間和內存空間是不同的。
(4)如何對演算法耗能進行評估和優化擴展閱讀:
演算法是對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示一個或多個操作。此外,一個演算法還具有下列5個重要的特性。
(1)、有窮性
一個演算法必須總是(對任何合法的輸入值)在執行有窮步之後結束,且每一步都可在有窮時間內完成。
(2)、確定性
演算法中每一條指令必須有明確的含義,讀者理解時不會產生二義性。即對於相同的輸入只能得到相同的輸出。
(3)、可行性
一個演算法是可行的,即演算法中描述的操作都是可以通過已經實現的基本運算執行有限次來實現的。
(4)、輸入
一個演算法有零個或多個的輸入,這些輸入取自於某個特定的對象的集合。
(5)、輸出
一個演算法有一個或多個的輸出,這些輸出是同輸入有著某種特定關系的量。
5. 如何衡量一個演算法的優劣有哪些標准
如何衡量一個演算法的優劣,見人見智。一個好的演算法首先是要能夠滿足場景的需求,其次是在能夠最大限度的節省資源(最低成本原則),最後是實現邏輯簡單,比較容易理解(本質上也是最低成本原則)。但是,在現實中硬體資源不變,演算法不變情況下,演算法執行的效率提高,相對應往往是資源消耗增加。一個合格的演算法是在一個可以接受的范圍內滿足場景需求,而一個優秀的演算法則是在滿足場景需求的基礎上,最大限度的節省資源,簡化邏輯。
比如我要完成一項計算任務,要求是在5分鍾執行完成。現在有演算法1:需要執行1分鍾,消耗內存8G;演算法2需要執行3分鍾,需要消耗內存256M。那麼,我們應該如何選擇呢?首先,這兩種方案都能滿足我們的需求;其次:演算法1的需要消耗的資源是演算法2的32倍,演算法1的效率是演算法2的3倍。在這種滿足需求的情況下,往往更傾向於選擇演算法2。衡量一個演算法的優劣往往要評估多方因素,結合實踐,綜合比較最終得出結論。
衡量一個演算法的的標准主要有3個: 演算法的執行效率 , 演算法的內存消耗 和 演算法的穩定性 。