Working on NUMA support
Chad J. Milios
milios at ccsys.com
Wed Jan 8 12:51:10 UTC 2014
I'm very interested and excited to watch the progress you are making. Many thank yous for grappling this task on FreeBSD!
Are you designing/implementing a fully hierarchy-aware approach (nested domains) or is each memory domain separate (not nested, simply "mine" or "not mine" in respect to a particular thread context)?
> On Jan 8, 2014, at 3:23 AM, Andrew Bates <andrewbates09 at gmail.com> wrote:
>
> Hey Adrian,
>
> We spent the last few months on research/design and plan on spending the
> next few months preparing tests, building the physical server(s) to test
> on, and finishing the prototype'd functions.
>
> There is some white-board and pen/paper design that hasn't yet made it to
> the github repo, but the prototypes online are hopefully a solid base for
> what we intend to complete. In the meantime, we are excited to hear who
> else is interested in NUMA and if anyone has suggestions or concerns about
> our approach.
>
>
>> On Wed, Jan 8, 2014 at 12:03 AM, Adrian Chadd <adrian at freebsd.org> wrote:
>>
>> Cool! Do you have any working code to implement the API, or is this
>> just in the design phase right now?
>>
>>
>> -a
>>
>>
>>> On 6 January 2014 12:11, Andrew Bates <andrewbates09 at gmail.com> wrote:
>>> Hey all,
>>>
>>> My name is Andrew Bates, and I would like to take a bit of your time to
>>> talk about NUMA support.
>>>
>>> Supporting Non-Uniform Memory Access in FreeBSD is something that has
>> been
>>> brought up in the past <
>> http://freebsd.1045724.n5.nabble.com/NUMA-Support-is-there-in-FreeBSD-td4865200.html
>>> .
>>> This is becoming increasingly important now that multiprocessor
>>> systems
>>> are an expanding technology, thus performance is scaling in terms of cpu
>>> count, rather than just clock rate.
>>>
>>> There is a great opportunity here to optimize performance. After being
>>> asked to look into this by the EMC Isilon Storage Division, myself and a
>>> few colleagues advised by Andrew Pilloud and Jeff Roberson would like to
>>> propose APIs to handle basic memory allocation/management to specific
>> NUMA
>>> domains.
>>>
>>> What we have devised so far consists of two levels. First there are the
>>> KPIs, to expose NUMA functionality at a thread level of domain affinity.
>>> Secondly, there would be a userspace/interface to take advantage of the
>>> proposed APIs, thus giving users the capability to make their
>> applications
>>> NUMA-aware.
>>>
>>> We took the time to look into how many other systems (Linux, Macintosh,
>>> Solaris, Windows) already approach this problem, so there are some
>> aspects
>>> of our solution that are similar to how Linux and Solaris handle NUMA.
>>> Unlike Linux libnuma, we are only proposing a few additions and a minimal
>>> library that can easily be expanded later to suit users’ needs.
>>>
>>>
>>> KISS in mind, we came up with the following KPI prototypes
>> (freebsdnuma.h)
>>> to uncover NUMA in a usable fashion:
>>>
>>>
>>> -
>>>
>>> cpuset_get_memory_affinity()
>>> -
>>>
>>> cpuset_set_memory_affinity()
>>> -
>>>
>>> move_pages()
>>> -
>>>
>>> migrate_pages()
>>> -
>>>
>>> get_numa_cpus()
>>> -
>>>
>>> get_numa_weights()
>>>
>>>
>>> Then to the second part, we have the following userspace API prototypes
>>> (numanor.h) for our interface and testing purposes:
>>>
>>>
>>> -
>>>
>>> is_numa_available()
>>> -
>>>
>>> set_thread_on_domain()
>>> -
>>>
>>> set_memory_policy()
>>> -
>>>
>>> move_thread()
>>>
>>>
>>> In much much more detail, you can learn more about these prototypes, this
>>> project, view our progress, track along, and give input on our github
>> repo
>>> < https://github.com/andrewbates09/freebsd-numa > or simply via email.
>> This
>>> repo currently includes fully commented prototypes (like a mini man page)
>>> and will later include additions to the project.
>>>
>>> If anyone has any comments, suggestions, concerns, quandaries, or just
>>> general thoughts please feel free to contact us, as we would love to hear
>>> your input!
>>>
>>> The Leaders: Sakire Arslan Ay, Andrew Pilloud, Jeff Roberson
>>> The Team: Andrew Bates, Joshua Clark, Alex Schuldberg, Dustin Walker
>>>
>>> --
>>> V/Respectfully,
>>> Andrew M Bates
>>> _______________________________________________
>>> freebsd-hackers at freebsd.org mailing list
>>> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>>> To unsubscribe, send any mail to "
>> freebsd-hackers-unsubscribe at freebsd.org"
>
>
>
> --
> V/Respectfully,
> Andrew M Bates
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
More information about the freebsd-hackers
mailing list