UIO,大頁記憶體,CPU親和性,NUMA機制等

2022-03-09 13:38:59 字數 2229 閱讀 6547

uio 使用者空間下驅動程式的支援機制。dpdk使用uio機制使網絡卡驅動程式執行在使用者態,並採用輪詢和零拷貝方式從網絡卡收取報文,提高收發報文的效能。

linux系統中一般的驅動裝置都是執行在核心空間,而在使用者空間用應用程式呼叫即可,而uio則是將驅動的很少一部分執行在核心空間,而在使用者空間實現驅動的絕大多數功能。使用uio可以避免裝置的驅動程式需要隨著核心的更新而更新的問題

編譯uio

sudo /sbin/modprobe uio
乙個物理封裝的cpu(通過physical id區分判斷)可以有多個核(通過core id區分判斷)。而每個核可以有多個邏輯cpu(通過processor區分判斷)。乙個核通過多個邏輯cpu實現這個核自己的超執行緒技術

cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
處理器核心數

processor cores,即俗稱的「cpu核心數」,也就是每個物理cpu中core的個數

例如「intel core i3-2310m」是雙核處理器,它有2個「處理器核心數」。

cat /proc/cpuinfo| grep "cpu cores"| uniq
邏輯處理器數

邏輯處理器數英文名是logical processors,即俗稱的「邏輯cpu數」,

cat /proc/cpuinfo| grep "processor"| wc -l
超執行緒

採用超執行緒即是可在同一時間裡,應用程式可以使用晶元的不同部分。雖然單執行緒晶元每秒鐘能夠處理成千上萬條指令,但是在任一時刻只能夠對一條指令進行操作。而超執行緒技術可以使晶元同時進行多執行緒處理,使晶元效能得到提公升。

雖然採用超執行緒技術能同時執行兩個執行緒,但它並不象兩個真正的cpu那樣,每個cpu都具有獨立的資源。當兩個執行緒都同時需要某乙個資源時,其中乙個要暫時停止,並讓出資源,直到這些資源閒置後才能繼續。因此超執行緒的效能並不等於兩顆cpu的效能。

如果有兩個邏輯cpu具有相同的」core id」,那麼超執行緒是開啟的。

cpu的親和性也就是cpu affinity機制,指的是程序要在指定的 cpu 上盡量長時間地執行而不被遷移到其他處理器, 通過處理器關聯可以將虛擬處理器對映到乙個物理處理器上 ,也就是說把乙個程式繫結到乙個物理cpu上。

而且在多核執行的機器上,每個cpu本身自己會有快取,快取著程序使用的資訊,而程序可能會被os排程到其他cpu上,如此,cpu cache命中率就低了。當乙個程序或執行緒繫結cpu後,程式就會一直在指定的cpu跑,不會由作業系統排程到其他cpu上,減少了cache miss,提高效能和效率。

檢視系統是否支援numa機制:

grep -i numa /var/log/dmesg
檢視輸出結果:

檢視系統numa詳細資訊:

乙個物理cpu對應乙個node,系統還會為每個node分配一定的大小的記憶體。也就是說如果伺服器只有乙個物理cpu,那麼就只有乙個node0,領取系統全部的記憶體和cpu。個人的pc好像也只有乙個cpu,所以只有node0。但是在大型的伺服器上會有多個node,這時每個node都會被分配到一定的記憶體。

numa的基本原理

cpu訪問自身直接attach記憶體(就是系統給每個node分配的記憶體)對應的實體地址時,才會有較短的響應時間,俗稱local access,如圖標識的」fast」,如果需要訪問其他cpu attach的記憶體的資料時,就需要通過inter-connect通道來訪問,相比之前的訪問速度要慢一些,俗稱remote access ,如圖標識的」slow」,那麼在dpdk的使用過程中,配置numa模式和nonuma模式是加快訪問速度的方法而已。

SylixOS設定CPU親和性

cpu親和性 affinity 就是程序要在某個給定的cpu上盡量長時間地執行而不被遷移到其他處理器的傾向性。sylixos支援對稱多處理器 symmetric multi processor 其執行緒是排程的最小單位,sylixos可以對應用層執行緒,核心執行緒以及中斷設定cpu親和性,即將不同執...

numa 與 cpu 親和性

improving performance on numa systems red hat linux numa supportfor hp proliant servers p320h performance on non uniform memory access numa systems th...

taskset設定程序CPU親和性

man手冊的解釋 retrieve or set a process s cpu affinity。由此可知,我們可以通過taskset來設定或者獲取程序的cpu親和性。基本上,我們用的最多的選項就是 a c p了。a 獲取給定程序pid的所有執行緒的cpu親和性。c 設定程序的cpu親和性 p 獲...