Font Size: a A A

Distributed Compilation System Based On Ninja

Posted on:2016-10-25Degree:MasterType:Thesis
Country:ChinaCandidate:C B ZhangFull Text:PDF
GTID:2308330479982186Subject:Software engineering
Abstract/Summary:PDF Full Text Request
With the rapid development of information technology, the scale of the software project is increasing. For a monolithic project, the compilation process is timeconsuming. With the advantage of multi-core processors in a single host, developers can use parallel compilation technology to improve working efficiency. But there is a performance bottleneck that the compilation of a monolithic project still takes a lot of time in a powerful machine. Chromium, the Google open source project behind the Google Chrome browser, is such a typical example. Statistics in January 2015 shows that this project contains 22,186,203 lines of code totally, among which are12,829,876 lines of C++ code. Compilation of such a project will spend one to two hours in a computer with Intel Core i7 processor, 8G memory, 120 GB solid-state drive.To solve the above problem, this thesis designed and implemented a distributed compilation system, based on Ninja, a small build system with a focus on speed developed and maintained by several Google engineers. This system takes compile jobs from a build and distributes it among remote machines allowing a parallel build,and generates the same result as a local build.The main works of this thesis are as follows:1. Based on build system Ninja, implemented a distributed compilation system.With this system, we can break the bottleneck of a single machine while compiling,reduce the time waiting and improve work efficiency.2. The system supports using on Windows platform and Linux platform, while the traditional distributed compilation system only supports Linux platform.3. The system is compatible with existing toolchain. After compilation, user can still using the compatible version ninja to finish incremental compilation.Currently, basic functionalities of each component in this distributed compilation system are implemented and it can be used in compilation of real projects. This system is implemented using C++ language mainly, with about 12000 lines of effective code.
Keywords/Search Tags:Distributed Computing, Compilation, Ninja
PDF Full Text Request
Related items