Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
  • VILLASnode VILLASnode
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 28
    • Issues 28
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 6
    • Merge requests 6
  • Deployments
    • Deployments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • ACS
  • Public
  • VILLASframework
  • VILLASnodeVILLASnode
  • Issues
  • #153

Closed
Open
Created Jun 30, 2018 by Dennis Potter@dennis.potter

Implement real zero-copy

Right now, two pools are initialized within the Infiniband node. When a Receive Work Request is placed into the Receive Queue, the node gets a buffer out of the pool, and places the address into the Receive Queue. So, if the HCA receives a packet, it writes it into this buffer and generates a Work Completion with that address.

Then, when the nodes' read function ib_read is called, the function takes the address out of the Work Completion and copies the content of the buffer into a second buffer outside of the node.

A solution to this problem is to directly submit the addresses which are passed to ib_read to the Receive Queue. Pseudo code of this solution is:

ib_read(*sample) {
  ret = poll_cq()
  if(ret > 0) {
    //get sample from queue
    //change address of *sample
    return 
  } else if(receive queue not full) {
    //Add address of *sample to Receive Queue
  }
  return 0;
}

A problem is that the sample buffers which are passed to ib_read have to be registered to the protection domain of the IB node. This can be solved with a special memory type, as introduced in c01393bc

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking