添加simulator部分

This commit is contained in:
2025-09-11 15:19:28 +08:00
parent 84e5770f97
commit aca36f4e99
22 changed files with 87 additions and 121 deletions

View File

@@ -1,5 +1,5 @@
# 分布式编译系统CloudBuild
![alt text](/public/cloudbuild/promotional-graphic-cloudbuild.jpg)
## 为什么需要分布式编译技术
- 大型项目过长的编译耗时将会给开发、测试和调试都带来延迟,所以缩短大型项目的编译时间的分布式编译系统有重要意义
- 使用分布式编译系统编译项目可以利用计算机集群提高编译效率,缩短项目编译时间
@@ -25,3 +25,55 @@ CloudBuild主程序分为三个部分Client、Server、Executor。
### 系统分层结构
![alt text](/public/cloudbuild/layered-system-architecture.png)
## 运行原理与流程
### 分布式编译原理
![alt text](/public/cloudbuild/compiler-principles.png)
### CloudBuild客户端
CloudBuild客户端基于Ninja改造有下面这些优势
- 兼容使用Ninja编译的项目
- 使用远程执行的方式提高编译时并发度
- 使用编译缓存减少需要编译的任务数量
### CloudBuild服务端
- 使用远程执行的方法提高编译时并发度,实现了任务分发至远程节点同步执行
- 使用分布式任务调度提高任务调度效率和计算节点资源利用率,避免集中式调度的任务阻塞问题
- 使用编译缓存结合内容寻址存储技术减少网络传输量、避免重复上传与重复编译
### CloudBuild优势
- 低成本组成executor的机器不需要使用专门的高性能计算型机器可使用多个平价的空闲机器
- 高效CloudBuild实现分布式编译的功能相比单机大大提升并发度
- 兼容NinjaCloudBuild客户端基于Ninja改造对于使用Ninja构建和可以转换为Ninja构建的项目不用额外修改构建清单
### CloudBuild执行流程
- 客户端: 生成远程任务->生成任务依赖->发送任务与依赖
- 服务端:检查任务缓存->检查依赖完整性->调度任务
- 编译结点:还原文件目录->还原文件目录->返回编译结果
## AOSP和LLVM上的应用
### LLVM上的应用效果
![alt text](/public/cloudbuild/table1.png)
### AOSP上的应用效果
![alt text](/public/cloudbuild/table2.png)
### CloudBuild硬件资源利用率
4核CPU利用率:
![alt text](/public/cloudbuild/CPU-utilization-4.png)
8核CPU利用率:
![alt text](/public/cloudbuild/CPU-utilization-8.png)
16核CPU利用率:
![alt text](/public/cloudbuild/CPU-utilization-16.png)
## CloudBuild使用方法
### CloudBuild安装
![alt text](/public/cloudbuild/cloudbuild-installation.png)
CloudBuild项目地址https://gitee.com/cloudbuild888/cloudbuild.git
### CloudBuild分布式编译
![alt text](/public/cloudbuild/cloudbuild-distributed-compilation.png)
LLVM项目地址https://gitee.com/mirrors/LLVM.git