A Distributed Go Compiler.
This is a Lab project in Distributed Systems Course authored by Hanjun Liu and Sebastiaan Gerritsen, under the supervision of Sacheendra Talluri.
You can read more details from the report
- Master: responsible for generating all the commands required for compilation on the head node. It organizes these commands into various dependency-based groups. Within each group, commands are independent of each other and can be run simultaneously on multiple nodes on DAS-5. Once organized, the master node dispatches these groups to the asynchronous task queue named
Compile_Group
. - Coordinator: to extract groups from the
Compile_Group
task queue and break them down into single command tasks and send them to theCompile_Job
task queue. These tasks are then executed across multiple worker nodes. It manages the compilation process in a sequential manner, extracting each group one after the other. Additionally, the coordinator node is responsible for synchronizing the build result files across the worker nodes, ensuring a cohesive and efficient compilation process. - Worker: operates on a DAS-5 node. Its ongoing function is to continuously retrieve jobs from the
Compile_Job
task queue and execute them.
git clone https://github.com/badbubble/distgo && cd distgo/
make
Update all configurations in the configs/
directory for Redis and Asynq.
redis:
host: ""
port: 6379
password: ""
db: 0
pool_size: 100
asynq:
host: ""
port: 6379
password: ""
concurrency: 1
module load prun
prun -v -NUMBER_OF_WORKERS -np NUMBER_OF_NODES ./worker
Update the configs/coordinator.yaml
file to include the IP addresses of the nodes. These IP addresses can be obtained from the initial output lines in step 4.
cluster:
hosts:
- "10.141.0.54"
- "10.141.0.55"
- "10.141.0.56"
- "10.141.0.68"
- "10.141.0.59"
- "10.141.0.60"
- "10.141.0.62"
- "10.141.0.63"
./coordinator
./master -p PATH_TO_THE_PROJECT -m PATH_TO_THE_MAIN_FILE
Compilation Time | Exchange Dependencies Time | Distribute Commands Time |
---|---|---|
Compilation Time | Exchange Dependencies Time | Distribute Commands Time |
---|---|---|
Compilation Time | Exchange Dependencies Time | Distribute Commands Time |
---|---|---|
Compilation Time | Exchange Dependencies Time | Distribute Commands Time |
---|---|---|
Compilation Time | Exchange Dependencies Time | Distribute Commands Time |
---|---|---|
Compilation Time | Exchange Dependencies Time | Distribute Commands Time |
---|---|---|
Compilation Time | Exchange Dependencies Time | Distribute Commands Time |
---|---|---|
Compilation Time | Exchange Dependencies Time | Distribute Commands Time |
---|---|---|
Compilation Time | Exchange Dependencies Time | Distribute Commands Time |
---|---|---|
Compilation Time | Exchange Dependencies Time | Distribute Commands Time |
---|---|---|