Hi @sgotti , what’s the time cost of your env with the golang demo. In my env feel long time cost in pod-setup and restore-cache.
@huapox The task setup time is related to your environment. If you’re using k8s/k3s it’s the time taken by k8s to schedule the pod. Take a look at its events to see why it’s taking so much time (image downloading?).
On our enviroments with both docker and k8s, when the image is already fetched it takes just few seconds: https://run.agola.io/org/agola/projects/agola.proj/runs/0000001ei649k-000000000008c/tasks/587f66e6-c656-4c04-94a9-9e9141bdaf67
restore_cache time is probably tied to your disk I/O speed.
Thx. I’ve viewed the code for the pod starting flow of agola: the bin-data from executor’s pod first trans to k3s-server then send to the dest exec-pod. And just my poor-vm with 110Kb/s bandwidth , and the two node(master/worker) are connected by wan. So most time costed in network transmission.
And then I tried my my local notebook, (master/worker together), this cost few time
about 10 seconds
There be data transfer between some modules of agola:
- 1.transfer agola-tollbox about 6Mb, to dest building-img container.
- 2.transfer workspace/cache between runService and building-img container.
To keep smooth buiding, one maters is to keep runService and
building-img container in same machine or in High-speed Lan env. Then In k8s seems that the transfer data flow:
runService's pod -> kube-apiserver -> building-img's pod?
Now I just use agola in dockerMode, with
executor splited with docker-compose.
The Latter I’ll consider use executor-node in k8s.
The last item I found with my agola experience is that: all-base Just cost more CPU even there be non tasks building. At about 5%~8% CPU cost (1c). at this item, Jenkins performs much better, 1%~2% or even lower.
We currently don’t see any memory (very low memory usage) or cpu impact on standard machines or any impact on services.
Many things can be improved and we are already aware on many of them. For example the cpu usage is probably due to much etcd polling in runservice and other services that can be improved. Just they need to be implemented but there’re many other high priority things to do. But every pull request is welcome.
Consider that agola is a distributed and high available system made of many services while jenkins is just a single instance system so it’s much simpler but less powerful than agola from an architectural point of view.
Sure, Great arch designed!
I can see 10% CPU usage on idle time (no tasks running) with agola too.