溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

編程語言中任務(wù)調(diào)度的并行算法是什么

發(fā)布時(shí)間:2022-01-11 09:17:18 來源:億速云 閱讀:107 作者:柒染 欄目:編程語言

編程語言中任務(wù)調(diào)度的并行算法是什么,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

如果給定一批任務(wù),比如有500個(gè)任務(wù),需要在盡可能快的時(shí)間內(nèi)做完。

如果串行是肯定不行的。我們可以考慮并行策略,但是開了并行,怎么能夠充分利用資源比較好呢。

這個(gè)問題在多年前做數(shù)據(jù)遷移的時(shí)候,逼得沒辦法,當(dāng)時(shí)用shell寫了一個(gè)算法,可以參考這一篇。

海量數(shù)據(jù)遷移之使用shell啟用多個(gè)動態(tài)并行(r2筆記81天)

但是在自動化運(yùn)維平臺中,我希望這個(gè)操作能夠更加通用,所以在程序端實(shí)現(xiàn)是極好的。

我先打算用Java來實(shí)現(xiàn),然后轉(zhuǎn)義為Python版本,已經(jīng)寫了大半部分,還沒有調(diào)試好,就先不放出來了,我把我的思路說一下。

假設(shè)有下面的一些任務(wù),第一位是序號,第二位是任務(wù)需要花費(fèi)的時(shí)間。

假設(shè)分為4個(gè)并行,即4組執(zhí)行任務(wù),每組執(zhí)行任務(wù)該如何分配呢。

(1, 10),

(2, 30),

(3, 20),

(4, 50),

(5, 60),

(6, 30),

(7, 20),

(8, 10),

(9, 20),

(10,50),

所以放眼任務(wù)調(diào)度的方向上,我們都希望并行,但是絕大多數(shù)情況下,并行的效果其實(shí)不好,一種最重建的情況就是前半段在并行,后半段基本在等待。

假設(shè)我們按照如下的思路來完成,前四個(gè)元素是每組的一個(gè)元素,然后每組查看累計(jì)值的最小值,然后依次加入后續(xù)的元素。按照這種方法,得到的任務(wù)安排如下:

1 10 60 70

2 30 20 20 70

3 20 30 50 100

4 50 10 60

明顯這種方法有缺點(diǎn),因?yàn)槲覀儫o法預(yù)知后續(xù)元素的大小,所以任務(wù)分配很不均勻。

所以我們需要排序,按照最大值,最小值的方式排序。

這樣一來,最大的4個(gè)元素分別位列每組的第一個(gè)元素。然后依次取得每組累計(jì)值的最小值,加入后續(xù)的元素。

分配情況如下:

1 50 20 70

2 60 20 80

3 50 20 10 80

4 30 30 10 70

明顯好很多。

關(guān)于編程語言中任務(wù)調(diào)度的并行算法是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI