public inbox for gentoo-user@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-user] Jenkins
@ 2015-06-20 19:03 James
  2015-06-20 19:36 ` Alec Ten Harmsel
  0 siblings, 1 reply; 3+ messages in thread
From: James @ 2015-06-20 19:03 UTC (permalink / raw
  To: gentoo-user

Hello one and all,


I want to first install Jenkins on a single multicore amd system, so
I found this brief guide (which seems simple enough):

https://code.google.com/p/godin-gentoo-repository/wiki/Jenkins


What I also need is an example collection of code to run Jenkins-CI scripts
on, sort of as a benchmark. I figure it would be best to learn about
Jenkins by merely trying to follow/duplicate an existing (hopefully small)
Jenkins CI project. Basically a monkey-see-monkey-duplicate sort of endeavour.


This will  also allow me to then duplicate the Jenkins-CI onto the gentoo
mesos clusters (small right now) I have built to debug problems or issues
with Jenkins running on a gentoo-mesos-cluster. Ideas on how to perform
comparison (benchmarks) between the single multi-processor Jenkins-CI and
the one on top of a cluster, would be warmly received too.


After that is completed and stable, then I'm going to attempt to move
other codes to this gentoo-mesos-jenkins-CI framework.


Any suggestions are most welcome.

James



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [gentoo-user] Jenkins
  2015-06-20 19:03 [gentoo-user] Jenkins James
@ 2015-06-20 19:36 ` Alec Ten Harmsel
  2015-06-20 20:18   ` [gentoo-user] Jenkins James
  0 siblings, 1 reply; 3+ messages in thread
From: Alec Ten Harmsel @ 2015-06-20 19:36 UTC (permalink / raw
  To: gentoo-user

On Sat, Jun 20, 2015 at 07:03:18PM +0000, James wrote:
> Hello one and all,
> 
> 
> I want to first install Jenkins on a single multicore amd system, so
> I found this brief guide (which seems simple enough):
> 
> https://code.google.com/p/godin-gentoo-repository/wiki/Jenkins
> 

I highly recommend playing with the Jenkins docker container to get a
feel for using the web UI:

    docker run -p 8080:8080 -d jenkins

The official jenkins image comes with the bare minimum of libraries so
good luck building any C/C++ project, but it is helpful just to point
and click around (if you already have docker, that is).

> 
> What I also need is an example collection of code to run Jenkins-CI scripts
> on, sort of as a benchmark. I figure it would be best to learn about
> Jenkins by merely trying to follow/duplicate an existing (hopefully small)
> Jenkins CI project. Basically a monkey-see-monkey-duplicate sort of endeavour.
> 
> 
> This will  also allow me to then duplicate the Jenkins-CI onto the gentoo
> mesos clusters (small right now) I have built to debug problems or issues
> with Jenkins running on a gentoo-mesos-cluster. Ideas on how to perform
> comparison (benchmarks) between the single multi-processor Jenkins-CI and
> the one on top of a cluster, would be warmly received too.
> 

This is not really a fair comparison. Jenkins has no concept of cores,
only "executors". Each executor can run one build at a time. Jenkins was
written with Java in mind (AFAIK), and Java build tools are the reason
for this. `javac` by default launches some number of threads (not sure
how many on other systems, but on my laptop it's usually 3) and compiles
in parallel. I'm not sure it's possible to control this (someone feel
free to correct me if I'm wrong), hence Jenkins does not care about
cores and only about how many builds are allowed to run in parallel at
once.

This is different than make and just other build tools in general that
I've worked with for other languages.

So, to the point; when you add more build slaves with more executors,
you will be able to run more builds in parallel and it will therefore be
faster. This gets even more complicated since you can constrain builds
to only run on certain hosts and various other complicated setups, but
in general more executors means more builds in parallel means faster.

> 
> After that is completed and stable, then I'm going to attempt to move
> other codes to this gentoo-mesos-jenkins-CI framework.
> 
> 
> Any suggestions are most welcome.
> 
> James
> 
> 

My main suggestion is to not bother running a Jenkins cluster and stick
with a single host setup unless:

* You are building so many things that utilization is near 100%
* You are targeting multiple platforms and therefore need multiple build
  hosts

Alec

P.S. I could not find any reference to parallel, threads, processes or
anything else on javac's man page that makes me think it is easy to set
the number of threads it uses.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [gentoo-user] Re: Jenkins
  2015-06-20 19:36 ` Alec Ten Harmsel
@ 2015-06-20 20:18   ` James
  0 siblings, 0 replies; 3+ messages in thread
From: James @ 2015-06-20 20:18 UTC (permalink / raw
  To: gentoo-user

Alec Ten Harmsel <alec <at> alectenharmsel.com> writes:


> On Sat, Jun 20, 2015 at 07:03:18PM +0000, James wrote:
> > Hello one and all,

> > I want to first install Jenkins on a single multicore amd system, so
> > I found this brief guide (which seems simple enough):
 
> > https://code.google.com/p/godin-gentoo-repository/wiki/Jenkins

> I highly recommend playing with the Jenkins docker container to get a
> feel for using the web UI:

>     docker run -p 8080:8080 -d jenkins

> The official jenkins image comes with the bare minimum of libraries so
> good luck building any C/C++ project, but it is helpful just to point
> and click around (if you already have docker, that is).

Yes, I've used Docker on gentoo before. NO, it's currently un-installed
and using docker for what I am after only complicates things at this point.


> This is not really a fair comparison. Jenkins has no concept of cores,
> only "executors". Each executor can run one build at a time. Jenkins was
> written with Java in mind (AFAIK), and Java build tools are the reason
> for this. `javac` by default launches some number of threads (not sure
> how many on other systems, but on my laptop it's usually 3) and compiles
> in parallel. I'm not sure it's possible to control this (someone feel
> free to correct me if I'm wrong), hence Jenkins does not care about
> cores and only about how many builds are allowed to run in parallel at
> once.

I'll have to drill into javac a bit more, it seems.

There is jenkins-bin on gentoo; it should (?) be a quick install and config.
I'll keep in mind what you are saying, but my main goal is to find (CI)
codes that I can run on gentoo-mesos clusters. Nothing about Jenkins is
a critical need for me. Although, as a consultant I do routinely get
asked about Jenkins experience, so just noodling around with it a bit
is a good idea for me.


> So, to the point; when you add more build slaves with more executors,
> you will be able to run more builds in parallel and it will therefore be
> faster. This gets even more complicated since you can constrain builds
> to only run on certain hosts and various other complicated setups, but
> in general more executors means more builds in parallel means faster.

AT some point, on a single multiprocessor system, Jenkins will slow down
even it more resources are configured for it (overall system load, if
nothing else)? AT that point, I can note the resources and apply those
limits to the cluster and note the performance differences. Surely, a
cluster with more resources will be able to do more (CI_Jenkins) work; so
discovering those details is a primary goal of this endeavour.



> My main suggestion is to not bother running a Jenkins cluster and stick
> with a single host setup unless:

Sorry, the cluster, is the main_goal, not Jenkins or CI. Buds at cisco
are all very braggadocios about CI (Jenkins and others) on their mesos
clusters.....

> * You are building so many things that utilization is near 100%
> * You are targeting multiple platforms and therefore need multiple build
>   hosts

YES, that is exactly the ultimate goal. A CI cluster, open to friends, pals
and customers (maybe). It's all about the mesos cluster, you should know that.

> P.S. I could not find any reference to parallel, threads, processes or
> anything else on javac's man page that makes me think it is easy to set
> the number of threads it uses.


No surprise there. Configuring threads, cgroups, and memory resources
is a hotly contested area of the cluster codes I have (am) working with.
Forget bikeshedding, it Blood_shedding....... especially now that RDMA
is hotly being pursued by the many.

Thanks for your insights,

James





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-06-20 20:18 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-06-20 19:03 [gentoo-user] Jenkins James
2015-06-20 19:36 ` Alec Ten Harmsel
2015-06-20 20:18   ` [gentoo-user] Jenkins James

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox