Memory channels

Problem (background):

I am aiming for a machine with four memory channels and a pcie card, from which I want to transfer data as quickly as possible. Given that a card could theoretically transfer approximately 8 GB / s (7.88 GB / s) in each case, this would result in a throughput of about 15.8 GB / s. Looking at this I know that the maximum data transfer rate is 12.8 GB / s. Even without considering the actual installed memory, it becomes apparent that the PCIe bandwidth exceeds what a single memory channel can do.

To get around this, I would like to make sure that the memory block stream I end up on the device on a different channel than the one I receive.

Question

  • Is it possible to allocate memory on certain channels in the linux kernel, and if so, which interface will be used?
  • In any case, in order to get information about mapping physical memory on different channels (which addresses / page frames are on which channel)?
  • Is there an interface for requesting a page to be moved to / highlighted on a specific frame?
  • How can I guarantee that the page will be linked before it is replaced / moved? (Assuming what I need to do magic_allocate_page_on_channel(); get_user_pages(...), I will have a short moment when the page can (theoretically) be replaced again and can be replaced with a differnet frame by get_user_pages)
+4
source share

No one has answered this question yet.

Source: https://habr.com/ru/post/1570342/


All Articles