Several recent studies show that we waste roughly 50% of the hardware resources of our cloud infrastructures. This waste comes from our virtualization systems, which are only able to virtualize the hardware resources at the scale of a single server. As a result, as soon as one of the hardware resources is exhausted (e.g., the memory), all the other remaining resources are wasted (e.g., the CPUs, the GPUs, the network, etc.). With the ultra-fast networks at the micro-second scale, it becomes possible to mutualize the hardware resources at the scale of a rack of about ten servers. If we consider such a rack as a single machine, we totally avoid the waste: even if one of the hardware resources located in one server is exhausted, its other resources remain usable by the other servers since they can be accessed through a fast network.
In this project, the student will study how we could design a garbage collector for a disaggregated memory. A garbage collector is a system component that automatically and transparently reclaims the unused memory of an application. Garbage collectors are used in many languages because they help to increase productivity. In a disaggregated memory setting, collecting the memory is challenging because of non-uniform memory access (NUMA) effects. In handle these effects, the garbage collector will have to try to place the objects where they are used, which will enforce locality and thus increase memory access latency.
The student should have a good background in C and system programming.
Gaël Thomas, Adam Chader, Mathieu Bacou, Yohan Pipereau