1 |
On Sat, Jun 20, 2015 at 07:03:18PM +0000, James wrote: |
2 |
> Hello one and all, |
3 |
> |
4 |
> |
5 |
> I want to first install Jenkins on a single multicore amd system, so |
6 |
> I found this brief guide (which seems simple enough): |
7 |
> |
8 |
> https://code.google.com/p/godin-gentoo-repository/wiki/Jenkins |
9 |
> |
10 |
|
11 |
I highly recommend playing with the Jenkins docker container to get a |
12 |
feel for using the web UI: |
13 |
|
14 |
docker run -p 8080:8080 -d jenkins |
15 |
|
16 |
The official jenkins image comes with the bare minimum of libraries so |
17 |
good luck building any C/C++ project, but it is helpful just to point |
18 |
and click around (if you already have docker, that is). |
19 |
|
20 |
> |
21 |
> What I also need is an example collection of code to run Jenkins-CI scripts |
22 |
> on, sort of as a benchmark. I figure it would be best to learn about |
23 |
> Jenkins by merely trying to follow/duplicate an existing (hopefully small) |
24 |
> Jenkins CI project. Basically a monkey-see-monkey-duplicate sort of endeavour. |
25 |
> |
26 |
> |
27 |
> This will also allow me to then duplicate the Jenkins-CI onto the gentoo |
28 |
> mesos clusters (small right now) I have built to debug problems or issues |
29 |
> with Jenkins running on a gentoo-mesos-cluster. Ideas on how to perform |
30 |
> comparison (benchmarks) between the single multi-processor Jenkins-CI and |
31 |
> the one on top of a cluster, would be warmly received too. |
32 |
> |
33 |
|
34 |
This is not really a fair comparison. Jenkins has no concept of cores, |
35 |
only "executors". Each executor can run one build at a time. Jenkins was |
36 |
written with Java in mind (AFAIK), and Java build tools are the reason |
37 |
for this. `javac` by default launches some number of threads (not sure |
38 |
how many on other systems, but on my laptop it's usually 3) and compiles |
39 |
in parallel. I'm not sure it's possible to control this (someone feel |
40 |
free to correct me if I'm wrong), hence Jenkins does not care about |
41 |
cores and only about how many builds are allowed to run in parallel at |
42 |
once. |
43 |
|
44 |
This is different than make and just other build tools in general that |
45 |
I've worked with for other languages. |
46 |
|
47 |
So, to the point; when you add more build slaves with more executors, |
48 |
you will be able to run more builds in parallel and it will therefore be |
49 |
faster. This gets even more complicated since you can constrain builds |
50 |
to only run on certain hosts and various other complicated setups, but |
51 |
in general more executors means more builds in parallel means faster. |
52 |
|
53 |
> |
54 |
> After that is completed and stable, then I'm going to attempt to move |
55 |
> other codes to this gentoo-mesos-jenkins-CI framework. |
56 |
> |
57 |
> |
58 |
> Any suggestions are most welcome. |
59 |
> |
60 |
> James |
61 |
> |
62 |
> |
63 |
|
64 |
My main suggestion is to not bother running a Jenkins cluster and stick |
65 |
with a single host setup unless: |
66 |
|
67 |
* You are building so many things that utilization is near 100% |
68 |
* You are targeting multiple platforms and therefore need multiple build |
69 |
hosts |
70 |
|
71 |
Alec |
72 |
|
73 |
P.S. I could not find any reference to parallel, threads, processes or |
74 |
anything else on javac's man page that makes me think it is easy to set |
75 |
the number of threads it uses. |