自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

論文學(xué)習(xí)筆記:增強(qiáng)學(xué)習(xí)應(yīng)用于OS調(diào)度

原創(chuàng)
系統(tǒng) 其他OS
CPU調(diào)度程序是影響系統(tǒng)性能的重要因素。該論文提出了STUN,這是一種使用強(qiáng)化學(xué)習(xí)優(yōu)化Linux內(nèi)核調(diào)度程序參數(shù)的優(yōu)化框架。使用STUN可以在不需要人為干預(yù)的情況下增強(qiáng)各種調(diào)度環(huán)境。

從小型物聯(lián)網(wǎng)設(shè)備到大型服務(wù)器,Linux在各個(gè)領(lǐng)域中都得到了廣泛應(yīng)用。計(jì)算吞吐量對(duì)于使用數(shù)百萬個(gè)線程來模擬人工智能和機(jī)器學(xué)習(xí)模型至關(guān)重要,但對(duì)于其他機(jī)器來說,響應(yīng)性能可能很關(guān)鍵。

CPU調(diào)度是一種確定可以執(zhí)行的下一個(gè)進(jìn)程的技術(shù)。為特定環(huán)境使用的CPU調(diào)度程序的優(yōu)化是提高性能和降低成本的重要問題。工作負(fù)載和機(jī)器的性能很大程度上取決于調(diào)度程序的配置。然而,大多數(shù)機(jī)器考慮的是Linux的通用硬件和軟件環(huán)境,使用默認(rèn)調(diào)度程序配置。有效的調(diào)度對(duì)整個(gè)Linux服務(wù)器具有顯著的性能影響,大多數(shù)調(diào)度研究都專注于減少調(diào)度開銷或修改優(yōu)先級(jí)操作以支持特定情況下的作業(yè)。

1. Linux 中的調(diào)度器

目前默認(rèn)的 Linux 調(diào)度器,即完全公平調(diào)度器 (CFS) ,使用虛擬運(yùn)行時(shí)間的概念,旨在實(shí)現(xiàn)理想和精準(zhǔn)的多任務(wù) CPU調(diào)度,以便所有任務(wù)使用相同的 CPU 時(shí)間。相比之下,F(xiàn)reeBSD 操作系統(tǒng)的默認(rèn)調(diào)度器 ULE ,專為對(duì)稱多處理 (SMP) 環(huán)境設(shè)計(jì),其中兩個(gè)或多個(gè)處理器使用一個(gè)共享內(nèi)存,并允許多個(gè)線程獨(dú)立執(zhí)行。它旨在通過獨(dú)立調(diào)整每個(gè)任務(wù)的交互能力、優(yōu)先級(jí)和片段大小,提高同步多線程 (SMT) 環(huán)境的性能。為此,Bouron 將 FreeBSD 的 ULE 調(diào)度器移植到 Linux,并將其性能與 CFS 進(jìn)行了比較。結(jié)果,確認(rèn)在大多數(shù)工作負(fù)載中兩個(gè)調(diào)度器顯示相似的性能,對(duì)于具有許多交互式任務(wù)的工作負(fù)載,ULE 顯示出了更好的性能。

Kolivas 認(rèn)為,用于在特定環(huán)境下改善性能的啟發(fā)式調(diào)整參數(shù)會(huì)降低性能。為了減少這種調(diào)度開銷,他們實(shí)現(xiàn)了一種簡單的調(diào)度算法 (BFS),該算法消除了復(fù)雜優(yōu)先級(jí)計(jì)算。BFS 提高了 Linux 桌面的響應(yīng)性,適用于少于 16 個(gè) CPU 核心的設(shè)備,并用作多個(gè) Linux 發(fā)行版(包括 PCLinuxOS 2010、Zenwalk 6.4 和 GalliumOS 2.1)的默認(rèn)調(diào)度器。

優(yōu)化調(diào)度器是一個(gè)困難的問題,需要在操作系統(tǒng)上具有廣泛的專業(yè)知識(shí)。許多因素會(huì)影響調(diào)度程序的性能,例如硬件、工作負(fù)載和網(wǎng)絡(luò),以及用戶如何操作系統(tǒng)。然而,理解這些許多因素之間的所有相關(guān)性是困難的。即使實(shí)現(xiàn)了這樣的調(diào)度程序算法,調(diào)度程序度量也會(huì)存在誤差。因此,很難確認(rèn)調(diào)度程序性能是否真正得到了改善。

2. 基于ML 的調(diào)度參數(shù)調(diào)優(yōu)

Lama 提出并開發(fā)了 AROMA,一個(gè)自動(dòng)化 Hadoop 參數(shù)配置的系統(tǒng),該平臺(tái)用于大數(shù)據(jù)分析,以提高服務(wù)質(zhì)量并降低成本。AROMA 使用支持向量機(jī) (SVM),一種機(jī)器學(xué)習(xí)模型,以優(yōu)化參數(shù),使云服務(wù)能夠有效地使用,而無需進(jìn)行低效的參數(shù)調(diào)整。

自動(dòng)優(yōu)化基于機(jī)器學(xué)習(xí)的 Apache Spark 參數(shù),可以提高其性能。Spark 內(nèi)部有超過 180 個(gè)參數(shù),其中有 14 個(gè)參數(shù)對(duì)性能有重大影響,這些參數(shù)可以采用決策樹模型算法進(jìn)行優(yōu)化。在相關(guān)論文的性能評(píng)估結(jié)果中,初始設(shè)置的平均性能改善了 36%。

此外,對(duì)于 Android 調(diào)度器的性能, Learning EAS 是一種針對(duì) Android 智能手機(jī)調(diào)度器 EAS 的策略梯度強(qiáng)化學(xué)習(xí)方法。Learning EAS 應(yīng)用于正在運(yùn)行任務(wù)的特征,并調(diào)整 TARGETLOAD 和 schedmigration_cost 以提高調(diào)度器性能。在 LG G8 ThinQ 上的評(píng)估結(jié)果表明,與默認(rèn) EAS 相比,Learning EAS 可將功耗降低最多 5.7%,并將性能提高了最多 25.5%。

服務(wù)器中很常見的是靜態(tài)工作負(fù)載,例如基因組分析軟件、大數(shù)據(jù)分析系統(tǒng)和人工智能。所讀論文旨在通過調(diào)整調(diào)度策略和參數(shù)來提高靜態(tài)工作負(fù)載的性能。在Linux內(nèi)核中,定義了5個(gè)調(diào)度策略和14個(gè)調(diào)度程序參數(shù)。通過適當(dāng)?shù)匦薷倪@些策略和參數(shù),可以提高調(diào)度程序的性能,以適應(yīng)硬件環(huán)境和工作負(fù)載的特征。但是,對(duì)于單個(gè)優(yōu)化,需要消耗大量成本,因?yàn)楸仨毧紤]每個(gè)參數(shù)之間的關(guān)系,并且需要專業(yè)的工作負(fù)載信息和硬件專業(yè)知識(shí)。

3.基于RL 的調(diào)度參數(shù)調(diào)優(yōu)

3.1關(guān)于強(qiáng)化學(xué)習(xí) RL

強(qiáng)化學(xué)習(xí)是一種機(jī)器學(xué)習(xí)算法,它建立了一個(gè)策略,以確定在當(dāng)前狀態(tài)下總補(bǔ)償值最大的行為。它由環(huán)境和代理組成,如下圖所示。代理是確定下一個(gè)執(zhí)行操作的主體,通過行動(dòng)與環(huán)境交互,環(huán)境則回應(yīng)狀態(tài)和獎(jiǎng)勵(lì)。代理不斷與環(huán)境交互以建立最優(yōu)策略。

圖片圖片

強(qiáng)化學(xué)習(xí)適用于具有權(quán)衡關(guān)系的問題。特別是,短期和長期行為的獎(jiǎng)勵(lì)值是明確的時(shí)候,RL被用于各種領(lǐng)域,如機(jī)器人控制等,例如DOTA 2 就通過深度強(qiáng)化學(xué)習(xí)進(jìn)行了良好的訓(xùn)練。

有許多算法用于實(shí)現(xiàn)強(qiáng)化學(xué)習(xí),這篇論文中采用了Q-learning算法。Q-learning的代理具有一個(gè)Q表,記錄了可以在每個(gè)狀態(tài)下執(zhí)行的所有動(dòng)作的Q值,以解決問題。當(dāng)代理首次開始學(xué)習(xí)時(shí),Q表的所有值都被初始化為0。如果每個(gè)狀態(tài)的Q值為0,則代理會(huì)隨機(jī)選擇一個(gè)操作并更新Q表中的Q值。如果Q值不為0,則代理選擇具有最大Q值的操作,以最大化獎(jiǎng)勵(lì)。代理重復(fù)執(zhí)行這些步驟,直到找到最佳策略。

Q-learning是一種無模型強(qiáng)化學(xué)習(xí),它使用貝葉斯方程來找到具有最高總獎(jiǎng)勵(lì)的行動(dòng)。在強(qiáng)化學(xué)習(xí)中,模型預(yù)測(cè)環(huán)境的狀態(tài)變化和補(bǔ)償。無模型強(qiáng)化學(xué)習(xí)具有易于實(shí)現(xiàn)或調(diào)整的優(yōu)點(diǎn)。

3.2 強(qiáng)化學(xué)習(xí)的工具

OpenAI Gym為強(qiáng)化學(xué)習(xí)提供了一個(gè)名為Env的集成環(huán)境接口。Env提供以下功能:

Render(self):此函數(shù)在環(huán)境內(nèi)呈現(xiàn)一個(gè)幀,并將其顯示為GUI。在本研究中,由于沒有需要GUI,因此未使用它。

Reset(self):此函數(shù)將環(huán)境重置為其初始狀態(tài)。此功能通常在每個(gè)學(xué)習(xí)階段結(jié)束時(shí)應(yīng)用,以進(jìn)行下一步學(xué)習(xí)。

Step(self, action):此函數(shù)逐步執(zhí)行一個(gè)動(dòng)作,并返回以下三個(gè)變量。

  • 觀測(cè)(object):該值是一個(gè)環(huán)境特定的對(duì)象,表示對(duì)環(huán)境的觀測(cè)。
  • 獎(jiǎng)勵(lì)(flfloat):該值表示通過上一次行動(dòng)獲得的補(bǔ)償金額。強(qiáng)化學(xué)習(xí)的最終目標(biāo)是最大化總獎(jiǎng)勵(lì)值的總和。
  • 完成(boolean):這是一個(gè)標(biāo)志,用于決定是重置環(huán)境還是結(jié)束學(xué)習(xí)。

OpenAI提供了各種環(huán)境的接口,論文中的實(shí)現(xiàn)基于OpenAI Gym。

3.3 Linux中的調(diào)度策略與內(nèi)核調(diào)度參數(shù)

在Linux內(nèi)核中,當(dāng)前定義了五個(gè)調(diào)度策略:NORMAL(CFS)、FIFO、RR、BATCH、IDLE ,可以使用Linux提供的schedtool工具更改這些策略,而無需重新啟動(dòng)服務(wù)器。

SCHED_NORMAL(CFS) 這是Linux內(nèi)核的默認(rèn)調(diào)度策略。CFS的目的是最大化整體CPU利用率,并為所有任務(wù)提供公平的CPU資源。CFS基于每個(gè)CPU運(yùn)行隊(duì)列,這些任務(wù)按虛擬運(yùn)行時(shí)間的順序運(yùn)行,并通過紅黑樹排序。

SCHED_FIFO 這是一個(gè)固定優(yōu)先級(jí)調(diào)度策略,每個(gè)任務(wù)以1到99的優(yōu)先級(jí)值執(zhí)行,并且是按高優(yōu)先級(jí)順序搶占并執(zhí)行CPU的策略。

SCHED_RR 這基本上與SCHED_FIFO的操作相同,但每個(gè)任務(wù)都有一個(gè)時(shí)間量子值,這是執(zhí)行的最長時(shí)間。當(dāng)時(shí)間量子過期時(shí),任務(wù)以輪詢方式切換到下一個(gè)任務(wù)。

SCHED_BATCH 此策略適用于批處理作業(yè)。通過避免被其他任務(wù)搶占,我們可以運(yùn)行一個(gè)任務(wù)更長時(shí)間,比其他策略更好地利用硬件緩存;但是,這對(duì)于交互式任務(wù)效果不佳。

SCHED_IDLE 此策略以非交互方式運(yùn)行,類似于SCHED_BATCH。但是,與SCHED_BATCH不同,當(dāng)其他進(jìn)程處于空閑狀態(tài)時(shí),可以執(zhí)行SCHED_IDLE。

Linux內(nèi)核提供了14個(gè)調(diào)度器參數(shù)進(jìn)行優(yōu)化。該論文對(duì)其中9個(gè)參數(shù)進(jìn)行了優(yōu)化,并排除了不影響性能的五個(gè)參數(shù)。下表顯示了可以更改的參數(shù)值范圍和Linux內(nèi)核的默認(rèn)值。它們可以使用Linux提供的sysctl命令在不重新啟動(dòng)機(jī)器的情況下更改。

圖片圖片

每個(gè)參數(shù)的含義如下。

sched_latency_ns: 針對(duì)CPU綁定任務(wù)的目標(biāo)搶占延遲。增加此參數(shù)會(huì)增加CPU綁定任務(wù)的時(shí)間。

sched_migration_cost_ns: 這是在遷移決策中被認(rèn)為是熱緩存的最后一次執(zhí)行后的時(shí)間。熱任務(wù)不太可能被遷移到另一個(gè)CPU,因此增加此變量會(huì)減少任務(wù)遷移。如果CPU空閑時(shí)間高于預(yù)期而有可運(yùn)行的進(jìn)程,則建議減小此值。如果任務(wù)經(jīng)常在CPU或節(jié)點(diǎn)之間反彈,則可能更好地增加它。

sched_min_granularity_ns: CPU綁定任務(wù)的最小搶占粒度。此參數(shù)與sched_latency_ns密切相關(guān)。

sched_nr_migrate: 這控制有多少個(gè)任務(wù)可跨處理器進(jìn)行負(fù)載平衡。由于負(fù)載平衡使用禁用中斷的運(yùn)行隊(duì)列(softirq)迭代,因此可能會(huì)對(duì)實(shí)時(shí)任務(wù)產(chǎn)生irq延遲懲罰。因此,增加此值可能會(huì)給大型SCHED_OTHER線程帶來性能提升,但以實(shí)時(shí)任務(wù)的irq延遲為代價(jià)。

sched_rr_timeslice_ms: 此參數(shù)可以調(diào)整SCHED_RR策略中的時(shí)間。

sched_rt_runtime_us: 這是在schedrtperiodus期間分配給實(shí)時(shí)任務(wù)的時(shí)間量子。將該值設(shè)置為* - *將禁用RT帶寬強(qiáng)制執(zhí)行。默認(rèn)情況下,RT任務(wù)每秒可以消耗CPU資源的95%,因此留給SCHED_OTHER任務(wù)5%,或0.05秒。

sched_rt_period_us: 這是測(cè)量實(shí)時(shí)任務(wù)帶寬執(zhí)行的周期。

sched_cfs_bandwidth_slice_us: 在使用CFS帶寬控制時(shí),此參數(shù)控制從任務(wù)的控制組帶寬池向運(yùn)行隊(duì)列轉(zhuǎn)移的運(yùn)行時(shí)間(帶寬)的數(shù)量。較小的值允許全局帶寬在任務(wù)之間以精細(xì)的方式共享,而較大的值會(huì)減少轉(zhuǎn)移開銷。

sched_wakeup_granularity_ns wakeup: 這是喚醒搶占的粒度。增加此變量會(huì)減少喚醒搶占,減少計(jì)算綁定任務(wù)的干擾。降低它可以提高對(duì)延遲關(guān)鍵任務(wù)的喚醒延遲和吞吐量,特別是當(dāng)短周期負(fù)載組件必須與CPU綁定組件競(jìng)爭時(shí)。

3.4 基于RL的調(diào)度器參數(shù)調(diào)整——STUN

STUN并沒有用最廣泛用于強(qiáng)化學(xué)習(xí)的深DQN,因?yàn)樗拇罅坑?jì)算能力和內(nèi)存,如果僅使用CPU而沒有GPU,則需要太長時(shí)間進(jìn)行學(xué)習(xí)。事實(shí)上,它無法在合理的時(shí)間內(nèi)搜索內(nèi)核調(diào)度程序的最優(yōu)參數(shù)。Q學(xué)習(xí)算法比深度學(xué)習(xí)輕,消耗更少的內(nèi)存。因此,STUN采用了Q學(xué)習(xí)算法,這是在Linux內(nèi)核中實(shí)現(xiàn)STUN的一種更好選擇。

體系結(jié)構(gòu)

下顯示了STUN的結(jié)構(gòu)。STUN由環(huán)境模塊和代理模塊組成。環(huán)境模塊定義了內(nèi)核參數(shù)優(yōu)化的環(huán)境,代理模塊定義了Q學(xué)習(xí)算法并執(zhí)行代理。

圖片圖片

在環(huán)境模塊中定義的reset和step函數(shù)如下。

Reset(self, f = True) 此函數(shù)初始化要優(yōu)化的參數(shù)。重置用于防止在學(xué)習(xí)過程中對(duì)特定參數(shù)值進(jìn)行過度獎(jiǎng)勵(lì)。它隨機(jī)初始化值,最多可學(xué)習(xí)次數(shù)的一半,其余值為表現(xiàn)最佳的值。

Step(self, action): STUN在更改參數(shù)值的情況下進(jìn)行測(cè)試工作負(fù)載后,返回狀態(tài)、獎(jiǎng)勵(lì)和完成。每個(gè)變量的含義如下。

Action: 這是一個(gè)值,確定每個(gè)參數(shù)的增加或減少。當(dāng)優(yōu)化n個(gè)參數(shù)時(shí),它有n + 1個(gè)值從0到n。STUN通過添加或減去預(yù)定義值α來更改優(yōu)化值。

State: 這是用于指示要學(xué)習(xí)的參數(shù)的值的元素。每個(gè)參數(shù)分為50個(gè),范圍可以修改,并且每個(gè)狀態(tài)的值為0到49,表示為(s1,s2...sn)。

Reward: 作為測(cè)試工作負(fù)載的結(jié)果,用于確定是否比先前狀態(tài)下獲得更好的性能。

Done: 這是用于提高效率的學(xué)習(xí)結(jié)束的元素?!巴瓿伞睒?biāo)志初始化為true。如果測(cè)試工作負(fù)載的結(jié)果小于默認(rèn)性能的20%,則返回false。如果連續(xù)出現(xiàn)一定數(shù)量的false值,則該執(zhí)行結(jié)束。

代理模塊定義Q表,該表記錄在每個(gè)狀態(tài)下執(zhí)行某個(gè)動(dòng)作時(shí)的動(dòng)作值。STUN使用Q學(xué)習(xí)模型和值函數(shù)Q(st,at)來更新Q表的值。從值函數(shù)獲得的值是未來可以獲得的預(yù)期值,而不是判斷當(dāng)前價(jià)值的好壞,與獎(jiǎng)勵(lì)值不同。Q-學(xué)習(xí)算法每次執(zhí)行操作時(shí)都會(huì)更新Q表中狀態(tài)的預(yù)期值,然后選擇具有最大預(yù)期值的操作。更新Q值的公式如下。

在上面的公式中,st和at分別表示當(dāng)前狀態(tài)和動(dòng)作;Rt+1是在當(dāng)前狀態(tài)下執(zhí)行的獎(jiǎng)勵(lì)值;max aQt(st+1,a)是在未來假設(shè)最有利的動(dòng)作時(shí)得到的預(yù)期值。在這里,γ是折扣率,反映了當(dāng)前獎(jiǎng)勵(lì)的價(jià)值高于未來獎(jiǎng)勵(lì)的價(jià)值。由于未來獎(jiǎng)勵(lì)的價(jià)值低于當(dāng)前獎(jiǎng)勵(lì),因此通過將其乘以0到1之間的值γ進(jìn)行反映。

在代理模塊中,學(xué)習(xí)迭代的數(shù)量由代理的事件執(zhí)行次數(shù)(N)和步驟函數(shù)執(zhí)行次數(shù)(T)確定。通過在單個(gè)事件中多次執(zhí)行步驟函數(shù),改變和學(xué)習(xí)參數(shù)值多達(dá)T次。因此,代理最多有N×T個(gè)學(xué)習(xí)迭代。

參數(shù)過濾

即使參數(shù)值根據(jù)調(diào)度程序策略或工作負(fù)載發(fā)生變化,也不是所有參數(shù)都會(huì)影響性能。過濾過程通過最小化性能改進(jìn)的不必要的訓(xùn)練來縮短訓(xùn)練時(shí)間,并減少內(nèi)存使用以更有效地執(zhí)行優(yōu)化。在Q-learning算法中使用所有五個(gè)調(diào)度程序策略和九個(gè)參數(shù)會(huì)浪費(fèi)大量內(nèi)存并增加學(xué)習(xí)時(shí)間。因此,需要找到一個(gè)顯著影響性能的參數(shù)。為了實(shí)現(xiàn)有效學(xué)習(xí),STUN通過過濾過程選擇優(yōu)化的調(diào)度程序策略和參數(shù)。

STUN將單個(gè)參數(shù)值按照最小值、最大值和默認(rèn)值依次更改為每個(gè)策略,并記錄測(cè)試工作負(fù)載中的性能變化。此時(shí),其他參數(shù)被固定為默認(rèn)值。過濾過程刪除不影響應(yīng)用程序整體性能的參數(shù)。為了確定參數(shù),過濾過程使用20%的閾值作為測(cè)量誤差。由于根據(jù)系統(tǒng)情況可能存在10-15%的誤差范圍,因此我們決定20%的性能差異是有意義的,并測(cè)試參數(shù)的最佳值。

在整個(gè)過濾過程中,已知這些策略和參數(shù)之間的關(guān)系,因此只使用最影響性能的參數(shù)作為學(xué)習(xí)變量。因此,過濾過程可以縮短學(xué)習(xí)時(shí)間并減少內(nèi)存使用,從而更有效地實(shí)現(xiàn)優(yōu)化。

獎(jiǎng)勵(lì)算法

獎(jiǎng)勵(lì)是指工作負(fù)載性能是否在改善的值。通過細(xì)分和應(yīng)用獎(jiǎng)勵(lì),STUN可以更有效地更新Q表,并縮短學(xué)習(xí)時(shí)間。

STUN獎(jiǎng)勵(lì)函數(shù)中的獎(jiǎng)勵(lì)和懲罰規(guī)則的一些想法如下:

  • 對(duì)于性能的重大改進(jìn)給予高獎(jiǎng)勵(lì)
  • 如果性能顯著下降,則給予懲罰
  • 基于以前的性能給予獎(jiǎng)勵(lì)

為了表示算法的規(guī)則,默認(rèn)值是作為性能標(biāo)準(zhǔn)使用的變量。這是在不更改參數(shù)的情況下在Linux默認(rèn)設(shè)置下的測(cè)試工作負(fù)載結(jié)果。請(qǐng)注意,結(jié)果表示測(cè)試工作負(fù)載的性能。與過濾過程一樣,根據(jù)20%以上和20%以下的結(jié)果獎(jiǎng)勵(lì)不同,以檢查性能是否受到重大影響。從default_bench提高20%以上的結(jié)果設(shè)置為upper,低于20%的結(jié)果設(shè)置為under。如果結(jié)果優(yōu)于upper,則獎(jiǎng)勵(lì)為200,是一個(gè)大獎(jiǎng)勵(lì);如果低于under,則懲罰為?50。當(dāng)性能在20%的范圍內(nèi)變化時(shí),如果性能高于以前的結(jié)果,則給予100的值;否則,返回0的值。算法1是獲得獎(jiǎng)勵(lì)的算法表示。

算法1: 獎(jiǎng)勵(lì)算法

upper : 20% greater than de f ault_bench

under : 20% less than de f ault_bench

if result_o f _testworkload > upper then

    reward = 200

else if result_o f _testworkload < under then

    reward = ?50

else if result_o f testworkload > lastresult then

    reward = 100

else

    reward = 0

end

4. 基于RL的OS調(diào)度調(diào)優(yōu)的評(píng)估方法

沒有評(píng)估體系和評(píng)估指標(biāo)的AI 都是在耍流氓,該論文評(píng)估了以下幾點(diǎn):

基于學(xué)習(xí)迭代次數(shù)的STUN性能。通過改變決定強(qiáng)化學(xué)習(xí)中總迭代次數(shù)的因素,即episode count N和Max_T的值來分析結(jié)果。

微基準(zhǔn)下的性能表現(xiàn)。為了確認(rèn)STUN的詳細(xì)性能改進(jìn),選擇了微基準(zhǔn),即hackbench,并將其在經(jīng)過優(yōu)化的STUN調(diào)度程序參數(shù)下與在默認(rèn)調(diào)度程序環(huán)境下的性能進(jìn)行比較。作為評(píng)估Linux內(nèi)核調(diào)度程序性能的基準(zhǔn),它創(chuàng)建進(jìn)程通過套接字或管道進(jìn)行通信,并測(cè)量每個(gè)對(duì)之間發(fā)送和接收數(shù)據(jù)所需的時(shí)間。對(duì)于運(yùn)行hackbench的選項(xiàng),給定了目標(biāo)機(jī)器的核心數(shù),并將核心數(shù)乘以40個(gè)任務(wù)應(yīng)用為測(cè)量執(zhí)行時(shí)間的進(jìn)程。

真實(shí)工作負(fù)載下的性能表現(xiàn)。為了評(píng)估STUN對(duì)真實(shí)工作負(fù)載的性能影響,運(yùn)行了一個(gè)使用Haar Cascades的人臉檢測(cè)應(yīng)用程序,并比較了在默認(rèn)和經(jīng)過優(yōu)化的設(shè)置下應(yīng)用程序的執(zhí)行時(shí)間和每秒幀數(shù)之間的差異。人臉檢測(cè)應(yīng)用程序使用OpenCV提供的基于機(jī)器學(xué)習(xí)的對(duì)象檢測(cè)算法之一,它從視頻文件的幀中查找人的面部和眼睛。將默認(rèn)應(yīng)用程序修改為高度并行的多線程應(yīng)用程序,以利用許多底層核心。

基于CPU核心數(shù)量的改進(jìn)。為了確認(rèn)CPU核心數(shù)是否影響STUN的性能,比較了在4核、44核和120核機(jī)器上優(yōu)化Sysbench的性能改進(jìn)率。Sysbench是一個(gè)基于LuaJIT的多線程基準(zhǔn)測(cè)試工具集。雖然它主要用于基準(zhǔn)測(cè)試數(shù)據(jù)庫,但也用于創(chuàng)建任意復(fù)雜的工作負(fù)載。在這個(gè)評(píng)估中,生成了CPU核心數(shù)× 10個(gè)線程,并將執(zhí)行的總事件數(shù)作為結(jié)果。

為驗(yàn)證在實(shí)際工作負(fù)載下的性能,在44核機(jī)器上使用STUN優(yōu)化了人臉檢測(cè)程序,并分析了視頻的人臉識(shí)別時(shí)間和默認(rèn)和優(yōu)化參數(shù)值下的每秒幀數(shù)。STUN獲取的最佳參數(shù)值如下:

  • 調(diào)度程序策略:Normal;
  • kernel.sched_rt_runtime_us = 1,000,000;
  • kernel.sched_min_granularity_ns = 680,100,000。

應(yīng)用最佳值后的人臉檢測(cè)程序的結(jié)果, 總執(zhí)行時(shí)間從58.998秒降至48.198秒,下降了18.3%,每秒幀數(shù)從16.95增加到20.748,增加了22.4%。

調(diào)度程序的性能影響在很大程度上取決于核心數(shù)量,這歸因于調(diào)度程序的功能。因此,該論文比較了在4核、44核和120核機(jī)器上通過STUN對(duì)Sysbench的性能改進(jìn)。Sysbench線程選項(xiàng)設(shè)置為每臺(tái)機(jī)器CPU核心數(shù)的10倍。此外,策略和參數(shù)設(shè)置為通過過濾過程獲得的最佳值。表3顯示了通過STUN為每個(gè)核心數(shù)優(yōu)化Sysbench的調(diào)度程序策略和參數(shù)值。

圖片

5.小結(jié)

CPU調(diào)度程序是影響系統(tǒng)性能的重要因素。該論文提出了STUN,這是一種使用強(qiáng)化學(xué)習(xí)優(yōu)化Linux內(nèi)核調(diào)度程序參數(shù)的優(yōu)化框架。使用STUN可以在不需要人為干預(yù)的情況下增強(qiáng)各種調(diào)度環(huán)境。

STUN具有有效和快速優(yōu)化的特點(diǎn)。首先,通過濾波過程選擇的參數(shù)顯著影響性能,從而實(shí)現(xiàn)有效優(yōu)化。此外,將獎(jiǎng)勵(lì)算法細(xì)分,以便強(qiáng)化學(xué)習(xí)中的代理可以有效地學(xué)習(xí)。未來可以采用另一種強(qiáng)化學(xué)習(xí)算法,例如策略梯度,以獲得更精確的優(yōu)化參數(shù)值和更并發(fā)的參數(shù)。此外,可以將STUN的邏輯與Linux內(nèi)核集成,以創(chuàng)建自適應(yīng)調(diào)度程序。

責(zé)任編輯:武曉燕 來源: 喔家ArchiSelf
相關(guān)推薦

2020-06-10 07:46:39

機(jī)器學(xué)習(xí)預(yù)測(cè)性維護(hù)工業(yè)物聯(lián)網(wǎng)

2016-02-18 10:32:39

谷歌TensorFlow 機(jī)器學(xué)習(xí)

2017-02-07 09:50:54

2023-10-30 00:14:34

Agent提示工程LLM

2022-03-15 15:17:03

開源技術(shù)HarmonyMQTT協(xié)議

2009-06-10 15:57:49

AndroidMIPS架構(gòu)

2021-09-16 15:41:59

機(jī)器學(xué)習(xí)數(shù)據(jù)科學(xué)算法

2024-03-19 15:09:07

2023-11-06 10:07:22

模型人工智能數(shù)字

2011-09-09 11:05:56

Widget

2018-07-11 11:27:26

人工智能深度學(xué)習(xí)機(jī)器學(xué)習(xí)

2020-12-21 14:40:10

Java技術(shù)開發(fā)

2022-01-27 15:33:11

區(qū)塊鏈金融技術(shù)

2022-10-24 10:20:28

物聯(lián)網(wǎng)智能計(jì)量

2009-05-06 16:54:05

firefoxseo瀏覽器

2023-05-05 14:11:12

區(qū)塊鏈航空領(lǐng)域

2014-01-22 10:04:07

技軟IBM大數(shù)據(jù)

2018-12-24 09:35:54

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2010-02-07 11:22:17

Android OS

2025-03-28 08:00:00

RAG文本檢索大模型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)