Google Working On Open-Sourcing Their Fibers User-Space Scheduling Framework
For a number of years Google has developed Fibers (not to be confused with Google Fiber, their fiber Internet service) as a user-space scheduling framework. While it hasn't been open-source, the few public papers and talks on Google Fibers has been quite interesting for great performance and a novel design. Finally though Google is working towards open-sourcing Fibers and hoping to get the necessary Linux kernel modifications upstreamed.
Of the limited public information on Google Fibers, one of the main resources has been this Linux Plumbers Conference from all the way back in 2013:
Google has been developing and using this user-space scheduling framework now for nearly a decade and they are finally working on open-sourcing the framework. As part of that, they are initially working on their User-Managed Concurrency Groups (UMCG) kernel patches that are the kernel-side primitives for this work.
Google actually sent out the RFC patch series for UMCG back at the end of May but happened to not notice that series until today in some follow-up discussions.
The UMCG kernel code is summed up as "User Managed Concurrency Groups is a fast context switching and in-process userspace scheduling framework. Two main use cases are security sandboxes and userspace scheduling. Security sandboxes: fast X-process context switching will open up a bunch of light-weight security tools, e.g. gVisor, or Tor Project's Shadow simulator, to more use cases. In-process userspace scheduling is used extensively at Google to provide latency control and isolation guarantees for diverse workloads while maintaining high CPU utilization."
The UMCG build switch adds, "Enable UMCG core wait/wake/swap operations as well as UMCG group/server/worker API. The core API is useful for fast IPC and context switching, while the group/server/worker API, together with the core API, form the basis for an in-process M:N userspace scheduling framework implemented in lib/umcg."
It will be interesting to see how this UMCG / Google Fibers open-source effort plays out over the months ahead... Stay tuned.
Of the limited public information on Google Fibers, one of the main resources has been this Linux Plumbers Conference from all the way back in 2013:
Google has been developing and using this user-space scheduling framework now for nearly a decade and they are finally working on open-sourcing the framework. As part of that, they are initially working on their User-Managed Concurrency Groups (UMCG) kernel patches that are the kernel-side primitives for this work.
Google actually sent out the RFC patch series for UMCG back at the end of May but happened to not notice that series until today in some follow-up discussions.
The UMCG kernel code is summed up as "User Managed Concurrency Groups is a fast context switching and in-process userspace scheduling framework. Two main use cases are security sandboxes and userspace scheduling. Security sandboxes: fast X-process context switching will open up a bunch of light-weight security tools, e.g. gVisor, or Tor Project's Shadow simulator, to more use cases. In-process userspace scheduling is used extensively at Google to provide latency control and isolation guarantees for diverse workloads while maintaining high CPU utilization."
The UMCG build switch adds, "Enable UMCG core wait/wake/swap operations as well as UMCG group/server/worker API. The core API is useful for fast IPC and context switching, while the group/server/worker API, together with the core API, form the basis for an in-process M:N userspace scheduling framework implemented in lib/umcg."
It will be interesting to see how this UMCG / Google Fibers open-source effort plays out over the months ahead... Stay tuned.
22 Comments