我正在測試Linux上接口的吞吐量。我正在使用DMA來處理數據傳輸。 DMA需要連續的內存位置。但是kmalloc無法分配更多的1MB。有沒有其他方法可以創建高達100M字節的大緩衝區?Howto創建100M字節緩衝區
4
A
回答
5
我以爲kmalloc無法分配超過128kB,你是如何得到它分配1MB?
無論如何,假設您正在使用新引導的系統,則最多可以保留2048個連續頁面。頁面通常是4k,所以這使得8MB。
_get_free_pages(_GFP_DMA, get_order(2048));
不過,如果你需要更多的內存,你應該做的,在啓動時的配置。 如果您正在編寫驅動程序,則可以使用alloc_bootmem_*
功能實現此功能。 如果您正在編寫模塊,則必須將mem=
參數傳遞給您的內核,並稍後使用ioremap
。
例如,如果您有2GB,則可以通過mem=1GB
禁止內核使用高位1GB,稍後請ioremap(0x40000000, 0x40000000)
訪問高位1GB,僅供您使用。
但是你知道,你應該把你的巨大緩衝區分成許多小的緩衝區,它會更容易,更像真實的應用程序。
相關問題
- 1. 解碼字節緩衝區,
- 2. 32字節空緩衝區
- 3. 緩衝區和字節?
- 4. requirejs和字節緩衝區
- 5. Java字節緩衝區覆蓋字節
- 6. 字節緩衝區開關字節序
- 7. 「緩衝區尚未創建」 ......同時,緩衝區的建立
- 8. 如何從灰度字節緩衝區圖像創建位圖?
- 9. 字節緩衝區,字符緩衝區,字符串和字符集
- 10. 字節緩衝區,字符串
- 11. C++套接字256字節緩衝區
- 12. 字節緩衝區爲字符串GWT
- 13. 將字節從一個字節緩衝區傳輸到另一個字節緩衝區
- 14. Parquet Writer緩衝區或字節流
- 15. 將字節[]緩衝區重置爲零?
- 16. 的Java字節緩衝區爲String
- 17. 發送原始字節緩衝區後
- 18. 字節緩衝區getInt()問題
- 19. 的NullPointerException在字節緩衝區
- 20. PHP中的字節緩衝區?
- 21. allocate_shared與附加的字節緩衝區
- 22. 字節緩衝區的等於
- 23. 字節緩衝區爲String在Java中
- 24. Java NIO管道和字節緩衝區
- 25. Java中的字節緩衝區?
- 26. zeromq在節點之間創建消息緩衝區
- 27. 字節緩衝NSData
- 28. 如何創建Emacs SQL緩衝區?
- 29. 創建緩衝區類中的Android
- 30. 幀緩衝區對象創建錯誤
相關http://stackoverflow.com/questions/116343/what-is-the-difference-between-vmalloc-and-kmalloc – 2011-05-01 05:05:54