Find the answer to your Linux question:
Results 1 to 3 of 3
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1

    NUMA memory binding to core


    i am developing an application which needs continous IO from RAM to/from hard drive. I have developed a program based on pthreads API which has 3 threads. One for fetching
    data from HD to RAM, one for processing the data and one for writing the processed data back to
    HD. I am trying to achieve overlap between computation and IO.The linux system calls give me the option of setting the affinity of each thread on any core of the CPU I like, however this feature wont give me any performance gain. I would like to know if there is a way using the numactl API or anything similar to numactl, to bind specific memory pools on each thread and as a consequence on each core( not on the entire CPU as a node) and tune the threads schedouling in order to avoid bus contention (my CPU has an external memory controller) and maximize performace.

  2. #2
    Linux Guru Rubberman's Avatar
    Join Date
    Apr 2009
    I can be found either 40 miles west of Chicago, in Chicago, or in a galaxy far, far away.
    Don't want much, do you? Honestly, I think you are going to need to do some kernel-level programming (perhaps a loadable kernal module) to enable some of these features you are looking for. Unfortunately, this is a bit over my head from the Linux systems perspective.
    Sometimes, real fast is almost as good as real time.
    Just remember, Semper Gumbi - always be flexible!

  3. #3
    Thanks a lot for your answer. No i thing its a piece of cake I thought about it myself and I also believe that a solution is something like this. Mostly I d like to know if someone has done anything similar to my program in order to benefit from the pthreads scheduling schemes SCHED_FIFO,
    SCHED_RR,etc using the memory tuning capabillities the numa API may provide them with. I mean using the existing tools. In fact the numa API provides many powerfull tools which make it possible to play with memory bindings but in CPU level, not core.The thread affinity can be set and in my program I do not share memory between threads so there are no mutex locks.Its like a pipeline and what I am looking for is a ready synchronization tool.

  4. $spacer_open

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts