1. System Support for Big Data Analytics and Machine Learning Applications
Big data analytics and machine learning applications are affecting the life of everyone. We are planning to work on the following aspects: (1) Improving the performance for these applications, since they may have different access patterns and different requirements. (2) Improving the debuggability of these applications, which will leverage our extensive experience of debugging. (3) Improving the adaptiveness, such as adapting to resource-limited environment.
2. Automatic Failure Diagnosis and Prevention
We are designing systems that can automatically identify root causes of program failures, such as program crashes or program hangs. The designed systems will require no human involvement during the diagnosis, and no need for further confirmation (without false positives and presenting all relevant information). After that, some timing-related or spatial-related failures will be automatically prevented without restarting the faulty system. Therefore, there is no need to worry about the loss of data or security explots of faulty software.
3. Software Security
We will improve the software security by providing prevensive systems for in-production software. One example of this is buffer overflows. Currently, there is still no efficient mechanisms that could detect and prevent buffer overflows, and stop all security attacks caused by these vulnerabilities.
4. Full-stack Scalability Analysis
Modern computers leverage multi-core or many-core processors to accelerate parallel applications. Unfortunately, the speedup of these applications is typically far from ideal, due to some hidden scalability issues. Previous research mainly focuses on application code to identify scalability bottlenecks, neglecting the fact that the application code interacts with numerous external components, including memory allocator, third-party runtime libraries, and the operating system. Understanding and fixing scalability problems should hence go beyond application code and consider the whole software stack.
5. System Support for Heterogeneous Architecture
We are planning to provide system support for emerging hardware, such as Non-Uniform Memory Access (NUMA) architecture or the co-existence of DRAM and NVRAM (Non-Volatile Memory). For instance, we would like to reduce remote accesses for NUMA architecture, and we are working on improving the performance and wear-leveling of DRAM-NVRAM systems.
6. Mobile Computing and IoT Systems
We will work on the combination of mobile computing and IoT systems.
7. Other Topics
We are also working on other occasional projects, such as profilers, hang detection, identifying performance issues across many commits.