Results 1 to 3 of 3
Hello,
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 ...
- 02-14-2010 #1Just Joined!
- Join Date
- Feb 2010
- Posts
- 4
NUMA memory binding to core
Hello,
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.
- 02-14-2010 #2Linux Guru
- Join Date
- Apr 2009
- Location
- I can be found either 40 miles west of Chicago, or in a galaxy far, far away.
- Posts
- 8,974
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!
- 02-14-2010 #3Just Joined!
- Join Date
- Feb 2010
- Posts
- 4
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.


Reply With Quote