GSoC 2020 idea: Use JMH to improve git plugin performance

80 views
Skip to first unread message

Mark Waite

unread,
Dec 26, 2019, 3:39:13 PM12/26/19
to jenkinsci-gsoc-all-public
The Jenkins git plugin provides two implementations that connect Jenkins to a git repository.  One implementation uses command line git (CLI git).  The other implementation uses JGit from the Eclipse project.

Users choose the implementation (CLI git or JGit) to be used by a  specific job. However, there are expected to be cases where one implementation is much faster than the other implementation. For example, since command line git always executes a new command line git process, it may be significantly faster to use JGit for some of the operations in the CLI git implementation.

The idea is to create tests based on Java Microbenchmark Harness which compare the performance of the two implementations in the Jenkins git plugin and Jenkins git client plugin.  Based on the results of those tests, changes will be made to selectively use faster implementations where appropriate.

Buddhika Chathuranga

unread,
Jan 13, 2020, 6:39:50 AM1/13/20
to jenkinsci-gsoc-all-public
Hi, 

I'm Buddhika Chathuranga final year under graduate of University of Moratuwa, Sri Lanka. I'm interested in Jenkins project and I would like to contribute Jenkins in GSoC 2020. So I would like to get familiar with the code base before submit the proposal.Could you please help me with that. I'm appreciate that if you can provide me some link to a documentation how I can setup the environment and get familiar with the code base.

Regards.

Sumit Sarin

unread,
Jan 13, 2020, 6:44:37 AM1/13/20
to Buddhika Chathuranga, jenkinsci-gsoc-all-public
Hi Buddhika,

Regards,
Sumit

--
You received this message because you are subscribed to the Google Groups "jenkinsci-gsoc-all-public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-gsoc-all...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-gsoc-all-public/6682391c-6ebb-48ff-a897-43dfd7b5cc1e%40googlegroups.com.

Buddhika Chathuranga

unread,
Jan 13, 2020, 6:51:32 AM1/13/20
to jenkinsci-gsoc-all-public
Hi Sumit,

Thank you very much.I will follow that.

Regards,
Buddhika 
 

Marky Jackson

unread,
Jan 13, 2020, 7:44:35 AM1/13/20
to Buddhika Chathuranga, jenkinsci-gsoc-all-public
Welcome,
Do take a look at the list of projects that are currently being proposed here: https://jenkins.io/projects/gsoc/2020/project-ideas/.
If you have a new idea, here is how to propose it: https://jenkins.io/projects/gsoc/proposing-project-ideas/
For general ways to participate: https://jenkins.io/participate/
If you have more questions do not hesitate to drop a note in the gitter google summer of code channel (jenkinsci/gsoc). 
Thank you and good luck 🙂

Marky Jackson Dec 29 2019 15:13


On Jan 13, 2020, at 3:39 AM, Buddhika Chathuranga <vmbck...@gmail.com> wrote:


--

rishabhb...@gmail.com

unread,
Mar 3, 2020, 4:49:42 PM3/3/20
to jenkinsci-gsoc-all-public
I have a doubt related to the project: Do we want to micro-benchmark each git-operation and create an exhaustive list with the execution times of each implementation, because for that scenario, we could simply time the git-operations and get a compromised but rough estimate of faster execution time.


On Friday, December 27, 2019 at 2:09:13 AM UTC+5:30, Mark Waite wrote:

Mark Waite

unread,
Mar 3, 2020, 9:18:24 PM3/3/20
to rishabhb...@gmail.com, jenkinsci-gsoc-all-public
I assumed (possibly incorrectly) that there is non-zero overhead associated with creating a process, reading the value from the process, and terminating the process.  If that assumption is correct, then a performance comparison of JGit and command line git would miss the overhead of process creation, communication, and termination.

I don't think there is a compelling case to micro-benchmark each git operation because some of them are likely to be dominated by network traffic (git fetch).  My assumption was that if a git operation is dominated by network traffic, then the differences between the CLI git implementation and the JGit implementation will probably be hidden by the time spent in networking.

--
You received this message because you are subscribed to the Google Groups "jenkinsci-gsoc-all-public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-gsoc-all...@googlegroups.com.

rishabhb...@gmail.com

unread,
Mar 4, 2020, 6:23:36 AM3/4/20
to jenkinsci-gsoc-all-public
I understand, by using a benchmark framework like JMH, we would ideally want to isolate the implementations from the hidden time of non-zero overheads (related to JVM and JTI) and get a good comparative estimation of execution times for both the implementation. 

For the network isolation part, while cgit works well with a ssh-connection remote URL, I am facing issues with the jgit git-client. Would you suggest a need to provide credentials (Credential Provider) to run jgit client? (Something you have done in the CredentialsTest.java)
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-gsoc-all-public+unsub...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages