/proc/sys/kernel/printk方法二:禁止內(nèi)存過度使用,輸入以下命令: ... 迅為RK3588開發(fā)板實時系統(tǒng)-提高實時方法 " />
為了提高實時性,我們可以采用以下的方式 方法一: 抑制串口終端打印,輸入以下以下命令: echo 1 > /proc/sys/kernel/printk 方法二:禁止內(nèi)存過度使用,輸入以下命令: echo 2 > /proc/sys/vm/overcommit_memory /proc/sys/vm/overcommit_memory內(nèi)核參數(shù)接受三種取值。 0 - 意思是內(nèi)核利用某種算法猜測內(nèi)存申請是否合理,如果認(rèn)為不合理就會拒絕 1- 意思是對于內(nèi)存申請來者不拒,使用這個設(shè)置會增加內(nèi)存超載的可能性 2- 意思是內(nèi)存拒絕等于或者大于總可用交換內(nèi)存 方法三:使用輕量級窗口管理器代替桌面或者不使用桌面 我們建議使用輕量級窗口管理器代替桌面或者使用不帶桌面的系統(tǒng),這樣可以有效降低 系統(tǒng)的CPU負(fù)擔(dān),并提高系統(tǒng)的響應(yīng)速度。相比與傳統(tǒng)的桌面環(huán)境,輕量級窗口管理器通常 具有更少的特效和圖形處理要求,因此可以減小CPU的延遲。 方法四: 綁定核心 綁定核心就是設(shè)定某個線程或進程與某個CPU核的親和力。設(shè)定以后,Linux調(diào)度器就會讓 這個線程或者進程只在所綁定的核上面去運行,但并不是這個進程或線程獨占這個CPU核, 其他進程和線程還是可以在這個核上面運行的。如果想要實現(xiàn)某個進程或線程獨占某個核, 需要使用cpuset命令去實現(xiàn)。 實時rt應(yīng)用可以由特定的核心進行處理,比如說我們將rt_test應(yīng)用綁定到cpu2,輸入以下 命令: taskset -c 2 rt_test taskset是一個可以將某進程任務(wù)指定到某個CPU上運行的命令,命令格式如下所示: 語法格式:taskset [options] -p [mask] pid 參數(shù)選項: -a, --all-tasks 操作所有的任務(wù)線程 -p, --pid 操作已存在的pid -c, --cpu-list 通過列表顯示方式設(shè)置CPU(逗號相隔) -V, --version 輸出版本信息 為了優(yōu)化系統(tǒng)性能和分散負(fù)載,對于ARM64架構(gòu)的系統(tǒng),在系統(tǒng)啟動時,所有的外設(shè)中斷通常是由CPU0處理。然而,對于關(guān)鍵的中斷,可以在系統(tǒng)啟動之后將它們綁定到其他核心上。舉個例子,可以將eth0(以太網(wǎng)接口)的中斷綁定到CPU3上。可以通過以下步驟來實現(xiàn) ![]() 查看中斷號為86的中斷的CPU親和性列表。輸入以下命令: cat /proc/irq/86/smp_affinity_list ![]() 將中斷號為86的中斷的CPU親和性設(shè)置為3,輸入以下命令: echo 3 > /proc/irq/86/smp_affinity_list cat /proc/irq/86/smp_affinity_list cat /proc/interrupts | grep eth0 ![]() 方法五: 使用smp+amp方案 目前支持多核處理器的實時操作系統(tǒng)體系結(jié)構(gòu)有倆種。一種是對稱多處理SMP構(gòu)架,一種是非對稱多處理AMP構(gòu)架。 AMP模式是在各個CPU核心上均運行一個操作系統(tǒng)(操作系統(tǒng)不一定完全相同),各個操作系統(tǒng)擁有自己專有的內(nèi)存,相互之間通過訪問受限的共享內(nèi)存進行通信。而SMP模式由一個操作系統(tǒng)實例控制所有CPU核心,所有CPU核心共享內(nèi)存和外設(shè)資源。相對比AMP模式,SMP模式的操作系統(tǒng)具有可共享內(nèi)存,較高的性能和功耗比,以及易實現(xiàn)負(fù)載均衡等優(yōu)點,更能發(fā)揮多核處理器的硬件優(yōu)勢。 |