亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

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

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

        0 引言

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

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

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

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

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

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

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

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

        圖1 CPU 與進程隨機調(diào)度

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

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

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

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

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

        圖3 Cache 與進程布局

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

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

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

        3.1 CPU 親和性與進程的綁定方法

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

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

        圖4 CPU_Affinity 運行流程

        3.2 進程實時性測試方法

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

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

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

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

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

        freq 1000000 -t 24h --taskset 0 &

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

        圖5 htop 命令界面

        實驗中添加負載模型后, 將應用測試軟件區(qū)分成為無綁定CPU 親和性進程和綁定CPU 親和性進程來進行分別測試, 可再次通過Cyclitest 軟件獲取當前的負載核間延時抖動數(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í)行完上述命令后可獲取兩份負載模式下的數(shù)據(jù)文件。

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

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

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

        圖6 無負載下系統(tǒng)延時抖動

        圖7 模擬負載下系統(tǒng)延時抖動

        5 結(jié)束語

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

        猜你喜歡
        親和性實時性延時
        部分薔薇與現(xiàn)代月季雜交親和性研究
        園林科技(2021年1期)2022-01-19 03:13:54
        基于規(guī)則實時性的端云動態(tài)分配方法研究
        基于級聯(lián)步進延時的順序等效采樣方法及實現(xiàn)
        ‘富有’甜柿砧木種質(zhì)早期親和性研究
        中國果樹(2020年2期)2020-07-25 02:14:22
        荔枝高接品種的選擇
        基于虛擬局域網(wǎng)的智能變電站通信網(wǎng)絡(luò)實時性仿真
        航空電子AFDX與AVB傳輸實時性抗干擾對比
        不結(jié)球白菜與西洋菜遠緣雜交親和性研究
        Two-dimensional Eulerian-Lagrangian Modeling of Shocks on an Electronic Package Embedded in a Projectile with Ultra-high Acceleration
        船舶力學(2015年6期)2015-12-12 08:52:20
        一種車載Profibus總線系統(tǒng)的實時性分析
        久久精品一区午夜视频| 中文字幕一区二区三区人妻精品| 在线天堂中文字幕| 亚洲AV无码精品一区二区三区l| 亚洲国产字幕| 成人免费毛片在线播放| 国产美女高潮流白浆视频| 少妇一区二区三区久久| 中文字幕无线码一区二区| 亚洲欧美成人一区二区在线电影| 奇米影视久久777中文字幕| 久久久久欧洲AV成人无码国产| 国产精彩刺激对白视频| 国产白浆流出一区二区| 国产99一区二区三区四区| 性欧美老人牲交xxxxx视频| 男女18禁啪啪无遮挡| 国产午夜精品一区二区三区不| 91精品国产综合久久久蜜臀九色| 亚洲天堂av一区二区| 香港三级午夜理论三级| 中文字幕av一区中文字幕天堂| 国产欧美精品在线一区二区三区| 日本岛国精品中文字幕| 国产熟女白浆精品视频二| 欧美性猛交aaaa片黑人| 日韩精品久久久肉伦网站| 久久精品夜夜夜夜夜久久| baoyu网址国产最新| 亚洲av无一区二区三区综合| 在线观看日本一区二区三区四区| 中文无码日韩欧| 人妻无码中文专区久久综合| 日韩女优在线一区二区| 国产一区二区三区四色av| 国产精品嫩草99av在线 | 亚洲视频一区二区免费看| 18禁免费无码无遮挡不卡网站| 亚洲熟女综合一区二区三区| 久99久精品免费视频热77| 国产又湿又爽又猛的视频|