我正在測試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. Java字節緩衝區覆蓋字節
- 4. 字節緩衝區開關字節序
- 5. 「緩衝區尚未創建」 ......同時,緩衝區的建立
- 6. 如何從灰度字節緩衝區圖像創建位圖?
- 7. C++套接字256字節緩衝區
- 8. 字節緩衝區,字符串
- 9. 將字節從一個字節緩衝區傳輸到另一個字節緩衝區
- 10. PHP中的字節緩衝區?
- 11. 字節緩衝區的等於
- 12. Java中的字節緩衝區?
- 13. 字節緩衝區爲String在Java中
- 14. zeromq在節點之間創建消息緩衝區
- 15. 如何創建Emacs SQL緩衝區?
- 16. 創建緩衝區類中的Android
- 17. 幀緩衝區對象創建錯誤
- 18. 在bash中創建滾動緩衝區
- 19. 如何NSLog緩衝區流中包含零的字節緩衝區(NSData/const char *)?
- 20. 一個大的字節緩衝區或幾個小的緩衝區?
- 21. 從字節緩衝區構建IP和端口
- 22. 準備讀取時,NIO字節緩衝區有空字節
- 23. 使用編年史圖和字節[]或字節緩衝區
- 24. 比較字節緩衝區中的字節
- 25. 獲取直接字節緩衝區的位置相對於原始字節緩衝區
- 26. 獲取的Java字節緩衝區內從字節低和高次半字節
- 27. Java以字節格式將字節從字節緩衝區寫入文件
- 28. 從緩衝區創建的NSData創建UIImage返回nil?
- 29. 如何在C++中創建緩衝區來創建新文件
- 30. 緩衝區溢出緩衝區長度
相關http://stackoverflow.com/questions/116343/what-is-the-difference-between-vmalloc-and-kmalloc – 2011-05-01 05:05:54