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

?

基于CPU 親和性的工業(yè)軟件實(shí)時(shí)性研究

2021-04-17 02:33:36何英武陳劍飛劉勝旺黃紹生
關(guān)鍵詞:親和性實(shí)時(shí)性延時(shí)

何英武, 陳劍飛, 湯 星, 劉勝旺, 黃紹生

( 廣州數(shù)控設(shè)備有限公司, 廣東 廣州 510535 )

0 引言

在中國實(shí)施2025 制造強(qiáng)國的戰(zhàn)略發(fā)展浪潮下,傳統(tǒng)制造業(yè)技術(shù)逐漸蛻變成為智能制造和自動(dòng)化工業(yè)加工體系。在工業(yè)機(jī)器人和數(shù)控系統(tǒng)領(lǐng)域中,最終的人機(jī)交互程序的非實(shí)時(shí)性可能會(huì)使工業(yè)生產(chǎn)中造成系統(tǒng)性能影響,亦會(huì)造成機(jī)械性人員傷亡事故, 因此提高工業(yè)平臺(tái)上加工軟件的實(shí)時(shí)性能在工業(yè)領(lǐng)域變得越發(fā)重要。 在GSK 實(shí)驗(yàn)平臺(tái)需要實(shí)時(shí)性能較高的OS 系統(tǒng),選擇了在LinuxRT平臺(tái)基礎(chǔ)上開發(fā)工業(yè)CPU 親和性綁定方法,LinuxRT 系統(tǒng)現(xiàn)由Ingo Molnar 維護(hù),其作為單內(nèi)核補(bǔ)丁主要目的是降低Linux 內(nèi)核的任務(wù)處理延時(shí), 以達(dá)到在工業(yè)領(lǐng)域上獲取更高的軟件調(diào)度實(shí)時(shí)性。

本文在首節(jié)探究了LinuxRT 進(jìn)程調(diào)度原理, 分析出其任務(wù)調(diào)度時(shí)的實(shí)時(shí)保障方法并提出其在工業(yè)領(lǐng)域中高實(shí)時(shí)性環(huán)境下的不足,在第二節(jié)中解析了CPU 布局綁定時(shí)對(duì)CPU 內(nèi)部Cache 命中的影響,最后在實(shí)現(xiàn)CPU 親和性綁定工業(yè)軟件后,對(duì)進(jìn)程進(jìn)行了實(shí)時(shí)性能負(fù)載模擬和測(cè)試,并獲得了CPU 親和性對(duì)改善進(jìn)程實(shí)時(shí)性能的影響比例。

1 LinuxRT 中SMP 系統(tǒng)進(jìn)程調(diào)度

在通用Linux 操作系統(tǒng)中,同一時(shí)刻能夠并行多項(xiàng)任務(wù)處理,但在CPU 內(nèi)部每個(gè)任務(wù)仍然是不斷地切換進(jìn)行,不同任務(wù)可在不同的CPU 核心上被內(nèi)核調(diào)度。 實(shí)際運(yùn)行的Linux 系統(tǒng)上默認(rèn)不添加進(jìn)程和CPU 之間的綁定關(guān)系。Linux 采納UNIX 基于時(shí)間片的可變優(yōu)先級(jí)調(diào)度方法,并且內(nèi)核調(diào)度任務(wù)為不可搶占方式,因此在Linux 操作系統(tǒng)中由于調(diào)度算法(基于最大吞吐量準(zhǔn)則)、設(shè)備驅(qū)動(dòng)、臨界區(qū)不可中斷的系統(tǒng)調(diào)用、 中斷屏蔽以及虛擬內(nèi)存的使用等因素[1],使得Linux 系統(tǒng)在響應(yīng)任務(wù)所耗費(fèi)時(shí)間上的未知性,因此也決定了Linux 為非實(shí)時(shí)系統(tǒng)。

LinuxRT 為解決Linux 的非實(shí)時(shí)性, 在Linux 基礎(chǔ)上改造了內(nèi)核中斷運(yùn)行機(jī)制,LinuxRT 將影響實(shí)時(shí)進(jìn)行的中斷體系改造為中斷線程化技術(shù), 并為中斷任務(wù)添加優(yōu)先級(jí)設(shè)置, 得以人為將中斷處理線程的優(yōu)先級(jí)比實(shí)時(shí)進(jìn)程優(yōu)先級(jí)低, 從而避免實(shí)時(shí)任務(wù)被中斷任務(wù)干擾而降低其響應(yīng)性能。 在LinuxRT 中還添加了任務(wù)搶占機(jī)制,使得優(yōu)先級(jí)更高的任務(wù)可以直接搶占運(yùn)行資源優(yōu)先運(yùn)行而不用等待時(shí)間片的調(diào)度,從而提升了進(jìn)程的實(shí)時(shí)響應(yīng)速率。

LinuxRT 系統(tǒng)上的任務(wù)搶占機(jī)制,使得當(dāng)進(jìn)程在開始運(yùn)行到運(yùn)行完成時(shí)間里, 由時(shí)間片的分割導(dǎo)致其可能運(yùn)行在任何一個(gè)CPU 核心上。 假設(shè)p1,p2,p3為系統(tǒng)運(yùn)行的進(jìn)程編號(hào),cpu1,cpu2為當(dāng)前平臺(tái)的兩個(gè)核心。當(dāng)前操作系統(tǒng)的進(jìn)程調(diào)度模型基本見圖1。

而在當(dāng)前的設(shè)計(jì)模型中,進(jìn)程調(diào)度需要指定CPU 核心運(yùn)行,在工作任務(wù)復(fù)雜度不高的工業(yè)體系中,開發(fā)者可能比Linux 內(nèi)核更了解當(dāng)前實(shí)時(shí)進(jìn)程性能需求,為避免OS 無意的調(diào)度主進(jìn)程,因此可人為設(shè)計(jì)出進(jìn)程與CPU 的調(diào)度綁定關(guān)系,見圖2。

目 前 的LinuxRT 系統(tǒng)的進(jìn)程優(yōu)先級(jí)調(diào)度基本為圖1中所示。假設(shè)當(dāng)前p1是工業(yè)系統(tǒng)中最主要的實(shí)時(shí)進(jìn)程, 在LinuxRT 中需要增強(qiáng)主進(jìn)程p1的運(yùn)行效率,需把系統(tǒng)調(diào)度架構(gòu)轉(zhuǎn)化為如圖2 所示[2],使進(jìn)程p1與cpu1核心建立對(duì)應(yīng)的依賴關(guān)系,從而使主進(jìn)程p1只運(yùn)行于cpu1上。 本文將以此探究圖2 中的綁定調(diào)度模型架構(gòu)對(duì)進(jìn)程的實(shí)時(shí)性能影響。

圖1 CPU 與進(jìn)程隨機(jī)調(diào)度

圖2 CPU 與進(jìn)程綁定調(diào)度

2 進(jìn)程調(diào)度對(duì)Cache 命中影響

Cache 作為內(nèi)存與CPU 間的緩沖介質(zhì),在SMP 系統(tǒng)中每個(gè)CPU 核心都擁有一塊獨(dú)立的Cache 緩存。 Cache內(nèi)部存儲(chǔ)著該CPU 最近訪問過的內(nèi)存單元塊,下次CPU需要再次訪問該段內(nèi)存單元時(shí), 首先從Cache 中尋找是否含有需訪問的內(nèi)存單元, 如存在則直接通過Cache 即可訪問所需數(shù)據(jù),以此提高進(jìn)程的響應(yīng)速率。

根據(jù)程序的局部性原理, 在Cache 大小確定的情況下,進(jìn)程在執(zhí)行過程中,在某一時(shí)段所訪問的指令和數(shù)據(jù)集中在同一區(qū)域時(shí), 如果程序的局部性越強(qiáng),Cache 的命中率越高[4]。 其對(duì)應(yīng)關(guān)系如圖3 所示。

通用Linux 系統(tǒng)作為支持SMP 的多任務(wù)操作系統(tǒng),在實(shí)際工業(yè)環(huán)境運(yùn)行中運(yùn)行的進(jìn)程一般都將多于系統(tǒng)的CPU 核心數(shù)。 在LinuxRT 中CPU 根據(jù)任務(wù)優(yōu)先級(jí)分配搶占每個(gè)進(jìn)程的運(yùn)行時(shí)間片。 當(dāng)運(yùn)行低優(yōu)先級(jí)任務(wù)時(shí)系統(tǒng)中產(chǎn)生一個(gè)高優(yōu)先級(jí)任務(wù)后,LinuxRT 將暫停低優(yōu)先級(jí)的進(jìn)程時(shí)間片轉(zhuǎn)而運(yùn)行高優(yōu)先級(jí)任務(wù)。 搶占進(jìn)程雖然能夠較快的響應(yīng)高優(yōu)先級(jí)任務(wù), 但是任務(wù)間的調(diào)度和還原也同樣將降低響應(yīng)性能, 同時(shí)調(diào)度也將導(dǎo)致在進(jìn)程調(diào)度間所要訪問的指令和數(shù)據(jù)局部性減弱, 進(jìn)而降低了Cache 命中,間接降低任務(wù)的實(shí)時(shí)性能[3]。

圖3 Cache 與進(jìn)程布局

在工業(yè)領(lǐng)域中, 對(duì)于一些要求實(shí)時(shí)性能特殊的進(jìn)程(機(jī)械手應(yīng)用程序或數(shù)控加工程序), 其工作過程中長期運(yùn)行,運(yùn)行期間反復(fù)調(diào)度,如能將主進(jìn)程始終運(yùn)行在一個(gè)CPU 上,將會(huì)提高核內(nèi)Cache 命中率,進(jìn)而提升系統(tǒng)的響應(yīng)效率。

3 CPU 親和性綁定實(shí)現(xiàn)與測(cè)試方法

在探究OS 層進(jìn)程調(diào)度的基本原理后,當(dāng)前AM572X實(shí)驗(yàn)平臺(tái)需運(yùn)行實(shí)時(shí)性能要求較高的工業(yè)程序, 而開發(fā)者可能比OS 更加了解程序的運(yùn)行機(jī)制, 因此人為干預(yù)OS 調(diào)度使得實(shí)時(shí)性程序盡量減少OS 調(diào)度, 從而降低進(jìn)程在核間調(diào)度的搬運(yùn)開銷從而提高軟件實(shí)時(shí)性能。 在當(dāng)前的實(shí)驗(yàn)平臺(tái)中,需首先在uboot 啟動(dòng)參數(shù)添加“isolcpus=1”參數(shù),此參數(shù)使得AM572X 雙核平臺(tái)上使CPU2 處于閑置狀態(tài),而其他任務(wù)運(yùn)行在CPU1 上運(yùn)行。 隔離CPU2 的目的是使CPU2 核心上不與其他任務(wù)產(chǎn)生依賴關(guān)系,從而避免其他任務(wù)調(diào)度而干預(yù)主工業(yè)進(jìn)程的實(shí)時(shí)性能。

3.1 CPU 親和性與進(jìn)程的綁定方法

當(dāng)前AM572X 實(shí)驗(yàn)平臺(tái)在完成核間隔離后即可開始實(shí)現(xiàn)CPU 親和性與進(jìn)程的綁定。 CPU 親和性綁定的實(shí)現(xiàn)在應(yīng)用軟件中完成,Linux 系統(tǒng)內(nèi)部提供了Affinity 屬性API 函數(shù)接口給應(yīng)用層調(diào)用,可通過sched_setaffinity 函數(shù)來獲取親和性的屬性設(shè)置,sched_setaffinity 函數(shù)實(shí)現(xiàn)調(diào)用流程見圖4。

應(yīng)用程序中通過上述流程將其封裝成函數(shù)接口以便調(diào)用,調(diào)用封裝接口即可將當(dāng)前的進(jìn)程綁定在特定的CPU 核心上運(yùn)行測(cè)試, 當(dāng)前實(shí)驗(yàn)平臺(tái)設(shè)置為主進(jìn)程運(yùn)行在CPU2核心上。

圖4 CPU_Affinity 運(yùn)行流程

3.2 進(jìn)程實(shí)時(shí)性測(cè)試方法

CPU 親和性綁定實(shí)驗(yàn)分成兩組對(duì)比, 其一為系統(tǒng)空載下在無親和性綁定與有親和性綁定來對(duì)比測(cè)試CPU核心的延時(shí)抖動(dòng)。 其二為高負(fù)載下測(cè)試CPU 親和性綁定后進(jìn)程調(diào)度時(shí)系統(tǒng)延時(shí)抖動(dòng)的影響。 兩種方式分別測(cè)試出AM572X 內(nèi)CPU0&CPU1 兩個(gè)核心的系統(tǒng)延時(shí)。 通過Cyclitest 軟件可獲取空載和模擬負(fù)載下的系統(tǒng)實(shí)時(shí)抖動(dòng)延時(shí)數(shù)據(jù),以此來判斷內(nèi)核響應(yīng)任務(wù)的實(shí)時(shí)性能。

在空載狀態(tài)下執(zhí)行應(yīng)用層CPUAffinity 綁定與非綁定親和性數(shù)據(jù)的測(cè)試程序, 后使用命令行輸入執(zhí)行cyclitest 軟件獲取兩者的的系統(tǒng)延時(shí)數(shù)據(jù):

上述命令參數(shù)表示運(yùn)行Cyclitest 軟件獲取100ms 內(nèi)的系統(tǒng)測(cè)試結(jié)果的次數(shù),(-p 表示最高優(yōu)先級(jí)線程的優(yōu)先級(jí)設(shè)置,-q 為不顯示打印信息,-h 為正態(tài)分布測(cè)量數(shù)據(jù))。 并將結(jié)果存入文件中。 后續(xù)可將測(cè)量數(shù)據(jù)導(dǎo)入GNUPLOT 作圖軟件中產(chǎn)生圖形顯示。

在第二組實(shí)驗(yàn)中需模擬工業(yè)運(yùn)行下的負(fù)載環(huán)境,通過使用stress_ng 軟件提供軟件模擬負(fù)載波形來達(dá)到測(cè)試效果。 stress_ng 軟件內(nèi)部提供了全面的負(fù)載模型,并支持指定CPU 核心添加負(fù)載,適合當(dāng)前CPU 親和性測(cè)試實(shí)驗(yàn)環(huán)境。 執(zhí)行stress_ng 命令行:

stress-ng-c2--cpu-method fft--timerfd

freq 1000000 -t 24h --taskset 0 &

上述命令參數(shù)表示運(yùn)行stress_ng 軟件并提供一個(gè)頻率為10GHz 的fft(傅里葉)算法負(fù)載模型給CPU1 核上。通過在sysfs 中安裝htop 命令可查看CPU1 核心上多出兩個(gè)stress_ng 進(jìn)程并且負(fù)載改變?yōu)?00%滿載運(yùn)行,htop界面見圖5。

圖5 htop 命令界面

實(shí)驗(yàn)中添加負(fù)載模型后, 將應(yīng)用測(cè)試軟件區(qū)分成為無綁定CPU 親和性進(jìn)程和綁定CPU 親和性進(jìn)程來進(jìn)行分別測(cè)試, 可再次通過Cyclitest 軟件獲取當(dāng)前的負(fù)載核間延時(shí)抖動(dòng)數(shù)據(jù):

./cyclictest-p99-m-i 1000 -t1-1 10000 -n -q- h

100>logcpu_noAffinity_stress

./cyclictest-p99-m-i 1000 -t1-1 10000 -n -q- h 100>logcpu_Affinity_stress

執(zhí)行完上述命令后可獲取兩份負(fù)載模式下的數(shù)據(jù)文件。

4 實(shí)驗(yàn)結(jié)論及系統(tǒng)實(shí)時(shí)性能影響

通過前文獲取的測(cè)量數(shù)據(jù)文檔, 可使用GNUPLOT作圖軟件獲取圖形數(shù)據(jù),實(shí)驗(yàn)數(shù)據(jù)從圖6 和圖7 可知,在nostress 無負(fù)載狀態(tài)下,應(yīng)用層測(cè)試軟件在綁定CPU 親和性或不綁定延時(shí)抖動(dòng)基本一致, 而在添加負(fù)載后綁定CPUAffinity 屬性的系統(tǒng)延時(shí)抖動(dòng)要小于未綁定CPUAffinity 的延時(shí)抖動(dòng),此數(shù)據(jù)基本可證明綁定CPU 親和性后系統(tǒng)響應(yīng)延時(shí)將會(huì)下降, 運(yùn)行在此系統(tǒng)下的工業(yè)程序?qū)崟r(shí)性將會(huì)有所提高,從當(dāng)前測(cè)試數(shù)據(jù)顯示,系統(tǒng)最大延時(shí)的降低比例約為33%。

本實(shí)驗(yàn)從Linux 進(jìn)程調(diào)度原理角度出發(fā),結(jié)合實(shí)際實(shí)驗(yàn)平臺(tái)AM5729 的使用環(huán)境特性,解析CPU 親和性的原理和綁定方法, 并提出在工業(yè)機(jī)械手和數(shù)控系統(tǒng)領(lǐng)域中工業(yè)軟件與CPU 親和性綁定方法,提出針對(duì)AM5729 平臺(tái)的軟件實(shí)時(shí)性能的測(cè)試手法,將CPUAffinity 數(shù)據(jù)化并證明出其對(duì)軟件實(shí)時(shí)性能的提升。

圖6 無負(fù)載下系統(tǒng)延時(shí)抖動(dòng)

圖7 模擬負(fù)載下系統(tǒng)延時(shí)抖動(dòng)

5 結(jié)束語

在工業(yè)領(lǐng)域的特定環(huán)境下設(shè)置合適的的CPU 親和性, 可以在系統(tǒng)硬件結(jié)構(gòu)和操作系統(tǒng)調(diào)度原理保持不變的情況下,更好地發(fā)揮進(jìn)程的實(shí)時(shí)響應(yīng)性能。但當(dāng)前僅對(duì)CPU 親和性對(duì)工業(yè)軟件實(shí)時(shí)性進(jìn)行了實(shí)驗(yàn)分析, 而在Linux 系統(tǒng)中還涉及中斷親和性等其他屬性對(duì)進(jìn)程調(diào)度響應(yīng)的影響, 在今后可綜合考慮其他親和性屬性設(shè)置對(duì)系統(tǒng)響應(yīng)的反饋影響,以尋求ARM 多核處理器在工業(yè)領(lǐng)域的最佳實(shí)時(shí)性能方案。

猜你喜歡
親和性實(shí)時(shí)性延時(shí)
部分薔薇與現(xiàn)代月季雜交親和性研究
園林科技(2021年1期)2022-01-19 03:13:54
基于規(guī)則實(shí)時(shí)性的端云動(dòng)態(tài)分配方法研究
基于級(jí)聯(lián)步進(jìn)延時(shí)的順序等效采樣方法及實(shí)現(xiàn)
‘富有’甜柿砧木種質(zhì)早期親和性研究
中國果樹(2020年2期)2020-07-25 02:14:22
荔枝高接品種的選擇
基于虛擬局域網(wǎng)的智能變電站通信網(wǎng)絡(luò)實(shí)時(shí)性仿真
航空電子AFDX與AVB傳輸實(shí)時(shí)性抗干擾對(duì)比
不結(jié)球白菜與西洋菜遠(yuǎn)緣雜交親和性研究
Two-dimensional Eulerian-Lagrangian Modeling of Shocks on an Electronic Package Embedded in a Projectile with Ultra-high Acceleration
一種車載Profibus總線系統(tǒng)的實(shí)時(shí)性分析
板桥市| 游戏| 壤塘县| 唐海县| 旌德县| 磴口县| 丰原市| 长沙市| 崇礼县| 新田县| 灌云县| 思茅市| 仪征市| 云安县| 博湖县| 阿城市| 洛川县| 剑川县| 庄浪县| 清苑县| 阿拉善右旗| 巴南区| 商水县| 镇江市| 西盟| 隆林| 绵竹市| 巢湖市| 巍山| 兰考县| 阜平县| 旬邑县| 正阳县| 太保市| 龙口市| 高阳县| 汕尾市| 达孜县| 轮台县| 绿春县| 神农架林区|