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