Software Archive
Read-only legacy content
17061 Discussions

DMA memory allocation; 64GByte from virtual zone under Linux.

Imran_K_1
Beginner
612 Views

Hi Forum,

I am looking for a subtle way to allocate a large size of memory to the DMA for the bus mastering for the very high performance of network adapter on the server; which has 256/128 G Byte RAM. Due to the restriction imposed by the Linux kernel within its architecture as follow

                                Memory_map_0.jpg

1/ An approach or fix at the OS boot stage to allocate cma=64gb it is not a correct an example or rather crude fix to get started, but in such state OS become unstable.

2/ A kernel space driver which initialise PCIex card allocate a memory to DMA is only 4MB, along with physical and virtual address

3/ If to allocate large memory 64GB under user space driver, we need to remap the memory map and hence we tend to loose out on physical address of the firmware bank on the PCIe card. 

4/ Within kernel space driver; repeated call to the dma_alloc_coherent() does allocate memory default pages (ie 4mb) each but non-contiguous memory which simply not an usable.

5/ Intel's infiniBand only gives 20G bit low latency transmission rate on the single kernel space driver over the an Ethernet cable, and driver accumulate memory on the fly as transmission bandwidth throughput grow, hence the scatter /gather process multiply as max bandwidth hit the boundary of 20G.

6/ In this case an initial frame rate is set higher bandwidth 1024 Gb min. (4096/8192 Gb max)

I wonder if any one has an idea could please shed light, greatly appreciated. Thank you,

IK

0 Kudos
0 Replies
Reply