下面是我遇到的問題:如何在mips32上啓用hugetlb
rx/tx數據包在內核驅動程序中。用戶空間程序需要訪問每個數據包。所以,內核和用戶空間之間有大量的數據傳輸。 (數據流:內核RX - >用戶空間過程 - >內核TX)
吞吐量的KPI。
我決定使用共享內存/ mmap將避免數據複製。雖然我還沒有測試過,其他人告訴我tlb缺少將是一個問題。
我使用的系統是一個
- MIPS32系統(mips74kc,單核)
- 默認頁面大小4KB。
- 內核2.6.32
它只能適合一個數據包。在數據轉換過程中,會有很多tlb錯過了影響吞吐量。
我發現巨大的頁面可能是一個解決方案。但是,似乎只有mips64目前支持hugetlbfs。
https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt https://www.linux-mips.org/archives/linux-mips/2009-05/msg00429.html
所以,我的問題是:我怎麼可以使用MIPS32 hugetlbfs的。或者是有其他的方式來解決能力的問題。(我必須做在用戶空間數據處理部分)
根據ddaney的補丁,
目前該補丁僅適用於64位內核,因爲在32位內核中, PTRS_PER_PTE的值是這樣的,所以不可能有 有效的PageMask。據認爲,通過調整頁面分配 方案,將來可以支持32位內核。
這似乎可能。有人能給我一個提示,需要修改什麼,以啓用hugetlb。
謝謝!
如果你想「使用共享內存/ MMAP以避免數據複製」,然後使用它。您沒有TLB缺失問題,並且在此階段可能不需要大量頁面。 – osgx