Extends:
Whole System Optimization
Description:
During 2006 and half 2007, the members of the cluster met in all the cluster meetings and also at the summer school. Continuing the work done in the previous research clusters the achieved goals include:
- Improvement and reshaping of the X86/ARM/IA64 Diablo framework
- Port of Diablo to the Power PC architecture, including 32 and 64 bits.
- Port to Cell BE processor.
- Support added for dynamically linked executables.
- Support added to start using DWARF debug information.
- Linux kernel optimizations for reducing memory and code footprint.
- Proposal on a whole system control flow graph reconstruction formalization.
- Diablo framework promotion: Tutorial session on PLDI'06, Ottawa, June 2006
- Publication of papers in conferences and journals:
- "Building a Global System View for Optimization Purposes", Ramon Bertran, Marisa Gil, Javier Cabezas, Victor Jimenez, Lluis Vilanova, Enric Morancho, Nacho Navarro, Workshop on the Interaction between Operating Systems and Computer Architecture (WIOSCA). Boston, June 2006
-"Automated reduction of the memory footprint of the linux kernel" Chanet, D., De Sutter, B., De Bus, B., Van Put, L., De Bosschere, K.: ACM Transactions on Embedded Computing Systems (TECS) 6(1) (February 2007) 1–48
“Linux Kernel Compaction through Cold Code Swapping”, Dominique Chanet, Javier Cabezas, Enric Morancho, Nacho Navarro, Koen De Bosschere, manuscript under review.
In this current proposal, we want to continue the research done on Whole System Optimization using the Diablo framework.
In previous work[1], we have shown that it is useful to apply link-time optimization techniques to a general-purpose operating system kernel (e.g. Linux) to specialize it for use in an embedded system. While the results thus far have been encouraging, the full potential of these techniques has not yet been reached because OS kernel code exhibits some peculiarities that limit the effectiveness of the optimizations that can be applied.
A first peculiarity is that a lot of the kernel functionality, e.g. the different supported file systems, is pluggable, and this functionality is called through pointer tables that are stored in memory. As alias analysis at link-time is a hard problem, most link-time optimization frameworks treat memory as a black box. Consequently, it is impossible to analyse these indirect calls: important analyses and optimizations like liveness analysis and constant propagation have to assume worst-case behaviour over indirect calls, and unreachable code elimination cannot determine whether the procedures in the pointer tables can be eliminated from the kernel.
A second problem is that a lot of procedures in an OS kernel do not abide by the platform’s calling conventions. This is in part due to the large amount of hand-written assembler code in OS kernels, and partly due to the fact that the programmers optimize performance-critical code for speed. They do this by instructing the compiler to break the calling conventions and, for example, pass function arguments in registers instead of over the stack. Again, this hampers link-time optimization, as analyses and optimizations can make more aggressive assumptions about procedures that abide by the calling conventions than about those that don’t.
However, there is a major source of information available that can alleviate the aforementioned problems, but that has been largely ignored until now: the compiler-generated debug information. This information, which is stored in the object files and thus available to the linker (and link-time optimizer) can tell, amongst others, where procedures can be found in the code, what their original signature was, and whether they abide by the calling conventions. Furthermore, it provides type information on local and global variables and it provides a means of associating the compiled code to the exact source code file and line number it was generated from.
[1] Chanet, D.; De Sutter, B.; De Bus, B.; Van Put, L.; De Bosschere, K. System-Wide Compaction and Specialization of the Linux Kernel. Proceedings of the 2005 ACM SIGPLAN/SIGBED Conference on Languages, Compilers and Tools for Embedded Systems (LCTES’05). 2005. pp. 95-104
Our work plan include:
- We will finish the support for the DWARF debugging format to the Diablo link-time binary rewriting framework.
- We will investigate how the newly available information can be used to alleviate the aforementioned problems and in which way it gives rise to new optimization opportunities.
- We will investigate how the compiled code to source code mapping feature of the debug information can be used to provide developer feedback in two ways related to the kernel configuration. Almost all OS kernels offer a means of compile-time configuration to select which features (drivers, file systems, etc.) should be included in the kernel. Firstly, the kernel developers may benefit from knowing which unreachable code is linked into the kernel in certain configurations to fine-tune the kernel configuration infrastructure. Secondly, system integrators (the people that configure and build the kernel for use in a specific system) can guide the kernel configuration process by combining the results of a code coverage analysis at link time with the debugging information to find out which parts of the code are unexecuted in practice. This is a strong indication that there are still features that should be excluded from the kernel configuration.
- Based on the debugging information
* we will explore and exploit the opportunities to perform architecture specific optimizations for the PowerPC and Cell BE architectures.
* we will continue working on Whole System Optimizations across layers in multi-ISA environments
* continue the post-link optimization of the Linux kernel, covering also the new architectures as the PowerPC, Cell BE, and reconfigurable cores.
* demonstrate the benefits of using post-link optimizations at different software layers for different goals like power consumption, binary size, hardware re-utilization (reconfigurable) and performance.
- Continue promoting the Diablo framework to the community in order to stimulate the usage of the toolset, via publications, courses or tutorials in related conferences.
Nature:
Research cluster
Total funding:
Requested: € 68400Granted: € 32400
Including fellowship funding:
Requested: € 51600Granted: € 15600
Description of how the funding will be used:
Travel:
We plan to have meetings every 3 months, possibly in conjunction with other HiPEAC events:
- 7 people travelling x 4 meetings/years x 600 euros/trip = 16.800 euros /year
Fellowship:
- One Fellowship for a researcher in Ghent (Dominique Chanet) for 6 months (March-August 2007) to complete the Diablo framework to support DWARF debugging information in order to the post-link optimization benefit from symbols, types and variables size information. Fellowship 6 months. Cost 36.000 euros (this is the regular cost for a researcher with 5 years of experience, including overhead).
- Extension of one fellowship for a PhD student already working on the topic at UPC. He will follow up the work done at Ghent from September 2007 to August 2008, using the new information to complete the whole system optimization goal : Fellowship 12 months: 1300 euros/month = 15.600 euros /year
Duration of the funding:
Requested: 18 month(s)Granted: 18 month(s), starting on: Sun, November 30, 1980
Participating members:
GIL Marisa (UPC) (--member--)O'BOYLE Michael (Edinburgh University) (--member--)NAVARRO Nacho (UPC) (--member--)DE BOSSCHERE Koen (Ghent University) (--member--)BERNSTEIN David (IBM) (--member--)DE BUS Bruno (Ghent University) (--colleague--)MORANCHO Enric (UPC) (--member--)MENDELSON Bilha (IBM) (--member--)DE SUTTER Bjorn (IMEC) (--member--)VAN PUT Ludo (Ghent University) (--phd student--)BERTRAN MONFORT Ramon (UPC) (--phd student--)
Other people collaborating:
Javier Cabezas (UPC), Lluis Vilanova (UPC), Isaac Gelado(UPC), Carlos Villavieja(UPC), Anne-Marie Fouillart(Thales), Dominique Ragot(Thales), Philippe Kajfask(Thales), Gad Haber (IBM), Bjorn Francke (UEdin), Dominique Chanet (UGent)