►
From YouTube: 2020 05 13 GSoC Git Plugin Performance Project
Description
The Jenkins project for git plugin performance improvement met on May 13, 2020 as part of the Google Summer of Code Community Bonding period. Rishabh Budhouliya presented his results from initial benchmarks and discussed the steps he plans to take in further evolution of the project. Action items were assigned and noted.
A
B
A
We
go
actually
maybe
rishabh.
Would
it
be
better?
If
we
have
you
drive
the
agenda
and
we
will
we
will
coach
and
encourage?
Do
you
have
a
preference,
I'm
I'm
used
to
when
I
schedule
a
meeting
I
run
the
agenda,
but
typically
this
may
be
better
for
you
to
run
the
agenda.
You
tell
us
what
you
want
to
do
and
we'll
let
you
guide
us
so.
B
A
B
So
I'm
going
to
discuss
my
strategy
implemented
for
the
proposal
in
a
little
experiment,
on
benchmarking
and
I
did
that
for
git
fetch
I
chose
that
as
I
get
as
in
the
gate,
operation
and
I
use
gmh
as
it
is
advised
on
the
project.
So
what
is
the
edge
Java
harness?
It's
used
for
building
analyzing
micro
benchmarks?
Basically
it's
written
in
Java
and
there
are
two
ways
to
run
it
standalone
and
from
the
IDE.
B
But
I
think
we
in
the
previous
G
saw
one
of
the
student
they
that
person
implemented
integrated
jmh
in
the
Jenkins
test,
harness
so
right
now
so
for
the
project
and
for
my
reason,
for
my
experiment,
I
did
both
I
created
a
standalone
project
and
I
also
ran
it
from
the
ID
I
created
a
module
under
the
test.
Modeling
the
git
client
tool
and
the
experiment
and
I'll
be
sharing
the
code
shortly.
B
A
So
when
you're
saying
standalone
project
or
from
IDE
I
was
assuming
that
was
just
the
runtime,
whether
I
invoke
the
thing
with
a
maven
command
or
some
other
command
or
if
I
use.
My
IDE
click
and
I
could
understand
why
it
would
be
more
reliable
from
a
command
line,
knowing
no
interaction
with
the
IDE,
but
but
that
seemed
different
than
what
you
were
describing
with
yeah.
B
B
Okay,
good,
okay,
so
then
how
do
create
a
reliable
benchmark?
So
this
is
something
I
just
know.
The
first
things
I
had
to
learn
trust
the
numbers
which
I
received,
because
it's
very
easy
to
have
preconceived
notion.
Then
they
just
you,
get
the
numbers
in
and
think
that
yeah,
maybe
TL
I
get
is
better
than
jagged
and
I
shortly
show
how
I
was
crab
in
one
of
the
experiments.
I
ran
because
I
thought
that
JMS
should
be
a
reliable
framework
yeah.
So
some
of
the
pitfalls
I
want
to
discuss
before
explaining
my
strategies.
B
Second,
is
dead
code
elimination,
so
if
I
don't
return
any
if
I'm,
if
I'm
testing
operation
I'm,
not
returning
anything
in
that
benchmark,
JVM
my
optimize
it
and
that
might
give
us
this
false
perception
that
a
code
is
run,
it's
it's
running
faster
but
so
use.
There's
this
concept
of
using
a
blackhole
gmh
provides
that
if
base
is
you
object
whatever
you
are?
B
Returning
and
that
tricks
the
JVM
into
thinking
that
there
is
there
is
an
object
which
is
being
returned
from
the
fungsten
and
constant
folding
is
basically
when
declaring
constants
and
it
replaces
the
calculation
with
the
result.
So
I
don't
want
that
as
well.
So
there's
this
another
another
feature
with
Jamis
provides
for
that
and
that
is
called
a
steep
static,
class
and
I'll
describe
that
with
the
code
I
have
so
configuring
our
benchmarks
I
like
so
there
are
things
like
benchmark
mode
warm-up
before
we
run
the
test.
B
B
I
can
add
my
options
whatever
I
want,
however,
the
para
because
I
won't
put
in
the
benchmarks
and
also,
if
I
I,
what
I
have
to
do
is
I
just
have
to
create
a
class
I
have
to
annotate
it
with
jmh
benchmark,
and
this
is
under
will
identify
those
asses
and
run
the
benchmarks.
So
this
is
what
a
pinch
mark
is
for
then
I'll,
okay,
so
the
mood
the
mode
is
the
first
thing
we'd
like
to
discuss
it's.
Basically,
the
benchmark
motion
is
the
performance
we
want.
B
So
if
we
see
here,
we
have
throughput
operations
per
unit
time,
so
we
want
at
execution
time.
So
it's
basically
inverse
of
that.
So
I
took
average
time
per
operation
in
milliseconds
and
we
also
have
sample
time
single
short
time
and
we
can
test
each
of
the
performs
metrics.
As
well
all
includes
that
as
well
then
form
of
iterations.
How
how
many
times
do
we
want
to
warm
over
JVM
before
we
left
the
benchmark
tests?
B
B
Maybe
five
basically
JVM
child
processes
you
want,
and
so,
when
I
run
a
benchmark
test,
I
have
created,
it's
called
a
trial.
So
what
happens
is
if
I
have
two
folks,
it's
going
to
test
it.
It's
going
to
first
run
it
in
the
beam
and
then
it's
going
to
another,
create
another
jaeyun
and
going
to
done
under
trial.
On
that
separate,
JVM
and
and
and
from
the
documentation.
They've
said
that
then,
as
much
as
we
increase
the
folks,
it's
going
to
increase
the
precision
of
our
results.
B
That's
what
they've
said:
I
I
couldn't
test
it
with
five
folks,
because
practically
in
my
local
machine
running
the
benchmark,
it
takes
almost
30
minutes
to
do
that,
which
is
also
I.
Think
it's
concerned
and
the
result
I
wanted
in
the
format
of
JSON.
That's
that's
yeah!
So
now,
I'll
show
what
are
the
benchmarks
have
written
and
then,
if,
if
you
guys
want
the
results
as
well,
so
the
first
thing
is
the
state
I
was
talking
about.
B
This
is
basically
jmh
handling,
all
the
all
the
arguments
or
the
objects
you
want
for
your
operations
to
run.
So
it's
going
to
instantiate
any
tool
to
handle
the
instantiation
and
sharing
of
the
object.
So
you
don't
want
to
declare
objects
and
instantiate
them
in
your
backpack,
because
you
want
just
your
isolate
your
operty
inside
the
benchmark.
So
we
declare
whatever
variables
we
want
to
intestate,
and
then
we
can
pass
this
state
the
objects
as
an
argument
inside
the
benchmark
method.
B
B
Rule
I
changed
it
to
folder
for
benchmark
this
guy
I
didn't
change
a
lot
of
things
there
and
I've
used
that
too,
to
create
a
local
git
repository
now
after
that,
so
what
I
have
here
is
is
basically
before
and
after
just
as
we
have
in
J
unit,
so
so
the
level
what
it
means
is
that
for
each
iteration
of
the
benchmark,
it
is
going
to
take
these
things
up
and
then
it's
going
to
basically
tear
them
down.
That
is
what
is
going
to
happen
when
I-
and
this
is
the
scope
we're
mentioning
here.
B
This
could
be
the
levels
we
can
share.
We
can
set
our
trap,
nation
and
invocations
of
what
I
wanted
was
for
each
iteration
I
want
a
new
local
Gator
Kozik
that
is
whatever
and
I
run
five
iterations
in
just
one
trial,
so
I
wouldn't
want
to
share
my
repositories,
ace
in
the
hole
for
the
whole
trial
right.
That
is
why
I
chose
the
scope
iteration,
and
so
what
I'm
doing
is
I'm
and
also
the
repository
URL
so
chosen,
it's
basically
the
local.
They
will
get
repositories
so
that
we
we
are
not.
B
So
the
ref
specs
I
have
basically
faced
all
the
branches
right
now
and
I
initialized
I
also
put
as
soon
as
I
nei.
I
created
the
client.
I
initialize
the
repository
before
before
performing
git
fetch,
and
this
was
done
before
before
the
benchmark,
so
that
this
doesn't
get
included
in
the
benchmark.
I
want
to
test
now.
B
Benchmark
is
pretty
simple.
I
basically,
if
I
have
the
Jenkins
state,
have
a
black
hole
which
basically
consumes
the
object
I've
created
here,
so
that
the
JVM
doesn't
optimizes
it
and
reduces
the
time
and
I
have
any
unintended
results.
I
don't
want
so
the
fetch
command,
it's
pretty
simple,
it's
the
it's!
What
we
do
and
I
execute
it
and
I
then
consume
the
fetch,
object,
fetch
command
object,
which
it
returns
so
Biff
and
I
also
created.
B
Another
class
called
fetch,
vanilla
benchmark,
which
was
basically
making
the
same
thing,
but
with
system
dot
nano
time
to
see
how
jamot
is
working
on
the
benchmarks
and
how
much
difference
do
we
have
in
time
and
how
accurate
nano
time
is.
We
want
to
casually
benchmark
operations.
Is
nano
time
a
good
option
or
not?
That's
also
I.
Think
I
wanted
to
see
so
I'll
show
the
results.
I
I
had
four
get
fetch.
Those
are
the
results.
I
had
four
get
vanilla
bean
shot,
which
basically
means
perform
bench
marking
them
with
system
nano
time.
B
A
B
B
And
the
normal
behavior
I
saw
here
was
that
Jake
it
was
performing
better
than
she
liked
it
for
the
repository
size
less
than
5
MB,
if
I
had
400
KB
and
one
for
almost
five.
So
this
was
something
I
wanted
to
test,
because
I
was
not
I
had
no
idea.
Why
would
this
happen
so
to
check?
Why
would
this
happen?
B
I
tried
one
more
thing:
I
the
only
suspicion
I
had
was
that
maybe
because
JBM
is
warming
up,
J
get
my
performed
better
because
of
that,
but
I
was
not
sure
that
that
assumption
is
right
or
not
so
I
tried
another
thing:
J
Mitch,
it
gives
us
a
different
benchmark,
boat,
called
single-shot
mode
where
we
run
the
benchmark
test
without
warming
up
the
JVM.
So
I
wanted
to
see
if
I
want
to
confirm
that
it
is
performing
better
than
gear,
because
the
JVM
is
warmed
enough.
So
it
is,
it
was
correct.
B
B
Benchmark
get
operation
and
I
think
this
is
that
I
am
you'd
like
to
ask
questions
about
the
coup
methodology
or
anything
and
yeah
and
I.
Also
I
have
some
questions
in
the
questions
for
discussion
in
the
design
document,
but
I
would
want
to
discuss
that
after
you.
If
you
have
some
questions
feedback
or
anything
for
the
for
this
presentation,
then
if
there's
none,
then
I
would
like
to
proceed
to
the
design
document.
C
B
A
Good,
all
right
so
that
that
we
know
that
you're
using
native
the
platform
that
is
native
forget,
so
that
is
good
all
right,
just
knowing
which
one
that
is
that's
a
good
choice.
I've
got
plenty
of
Windows
access
for
myself,
so
I
can
run.
I
could
run
conceivably
these
kinds
of
tests
and
see
how
it
do
you
have
access
to
a
Windows
machine
at
all,
or
is
your
your
only
machine
that
you've
got
access
to
a
Linux
computer.
B
A
C
A
B
B
A
C
Just
gonna
stay
like
to
like
take
their
variables
out
of
like
anything
else,
running
on
your
machine
and
stuff
like
that,
perhaps
the
like.
Like
more
final
benchmarks,
you
know
if
we're
gonna
have
remote,
Windows
or
Linux,
maybe
I
guess
maybe
not
a
remote
Mac,
but
that's
gonna
be
a
little
harder
because
of
the
licensing
stuff,
but
it
would
be
nice
to
run
on
clean
machines
for
like
the
likes
and
backbencher
Linux
and
Windows
benchmarks,
at
least.
C
A
And
Welland,
and
even
better
good
good
point
to
shove
me
we
may
want
to
give
you
yeah.
Why
don't
we
that's
a
that's
a
very
good
idea.
Justin
I
think
we
should
answer
question
number
one
rishabh
by
having
you
submit,
pull
requests
to
the
git
client
plug-in
or
get
plugin,
whichever
one
is
the
more
crucial
for
your
benchmarks,
which
provo,
which
actually
executes
the
tests
in
the
multiple
environments,
because
the
the
executors
on
jexy
Ida
Jenkins
that
IO
right
now
are
single
single
executors
per
agent.
Therefore
we
don't
have
collisions
with
other
agents.
A
Now
they
are,
they
are
still
virtual
machines.
You
don't
get
access
to
a
physical
machine,
so
the
variability
is
still
probably
quite
high,
but
having
you
be
able
to
use
that
environment
would
avoid
you
having
to
get
a
local
Linux
computer
get
a
local
Windows
computer.
Instead,
you
could
use
CIO
Jenkins
dot
IO.
We
admit
that
it's
wildly
variable
and
we
accept
that
variability
as
part
of
the
exploration
and
the
learning
that
you're
doing.
B
A
B
A
A
Okay,
great
so
so,
Rishabh
I
think
we've
got
an
answer
on
number
one,
and
the
answer
is
a
good
thing
to
do
during
this
community
bonding
period,
because
you've
already
submitted
pull
requests,
but
this
is
a
different
kind
of
pull
request
right,
because
the
current
pull
requests
are
running
in
running
J
unit
tests.
Jmh
is
not
quite
J
unit
right,
it's
a
different
thing
and
so
you'll
have
to
figure
out
some
infrastructure
and
how
to
make
it
work
differently.
So
this
will
be
a
very
interesting
thing
in
community.
C
A
A
There
is
a
facility
which
he
could
use
and
the
azure
as
your
container
infrastructure
ACI,
which
would
give
him
absolutely
non
pre-heated,
but
that's
not
the
default
and
that's
certainly
not
what
they
get.
The
baguette
project
uses
the
git
projects
use
this
the
the
stable
they
say
stay
for
a
long
time.
I
have
to
clean
their
disk
space,
periodically
all
sorts
of
challenges.
Okay,.
C
A
And-
and
it
is
rishabh,
you
should
not
publish
results
from
CI
Jenkins
that
IO
is
definitive
right.
We
would
certainly
be
better
off
ultimately
before
we
get
to
results,
that
we
run
it
in
an
environment
where
we
have
better
control
than
than
those
wildly
variable
agents.
But
those
agents
can
give
us
comparative
numbers
to
help
guide
your
your
development
and
your
shaping
of
the
of
the
tests.
A
B
So
the
next
thing
I
wanted
to
discuss
was:
how
would
we
choose
operations
that
you
want
to
test
like
right
now,
I
just
thought
that
operations
which
involve
network
or
I/o
operations,
I
would
I
would
test
them,
but
do
we
want
to
make
a
start?
Do
you
wanna
make
you
want
to
prioritize
these
operations?
You
know
in
some
way,
or
do
we
just
want
to
list
out
the
operations
we
have
which
in
which
we
use
in
our
tagging
and
then
just
tests
them
manage
them?
How
would
we
go
about
it
so.
A
I
think
we
absolutely
should
prioritize
them,
at
least
for
me,
I
think
there
are
enough
operations.
Some
of
them
are
corner
case
operations,
which
is
probably
not
relevant
how
long
it
takes.
For
instance,
there
is
an
operation
in
the
plug-in
that
will
apply
a
tag,
and
we
can
predictably
say
we
just
don't
care
how
long
that
operation
takes
it's
not
going
to
dramatically
affect
one
thing
or
the
other.
It
is
done
so
infrequently,
whereas
fetch
or
checkout.
We
do
all
the
time
and
therefore
is
quite
important.
A
Another
one
I
would
for
me:
I
would
put
top
of
my
list,
I
would
suggest,
and
and
maybe
we
should
propose
a
process-
you
use
to
choose
the
things
and
bring
a
recommendation
to
us.
It
might
be
that
what
you
do
is
look
at
or
instrument
the
bigoted
client
to
give
you
a
report
of
counts,
which
things
got
called.
B
A
That's
those
are
predictable.
Absolutely
the
question
for
me
would
be:
is
yet
LS
remote
a
high,
a
high
profile
one
because
of
its
use
in
scanning
for
brant
multi
branch
repositories,
its
use
in
detecting
changes,
FET
fetch
in
it
and
LS
remote
were
the
three
on
my
list
of
probably
those
and
those
likely
already
are
80
or
90
percent
of
the
benefit.
If
you
find
a
way
to
improve
fetch,
you've
already
done
dramatic
improvements.
A
B
Okay,
okay
I've
shown
the
presentation
and
then
another
immediate
discussion
topic
I
had,
in
my
mind,
was:
how
are
you
going
to
use
gmh
if
we
integrated
in
a
it,
has
a
test
module
takes
considerable
time.
Why,
first
of
all,
why
would
you
want
it
after
we
benchmark
it
for
once
in
different
environments,
and
we
have
consolidated
results?
Why
would
we
want
to
integrate
this
module
inside
gate,
client
plug-in
well.
A
So,
for
me,
I
would
want
to
integrate
it
because
I
love
having
the
results
now,
but
I
want
to
know
if
new
versions
of
command
line
get
change
the
characteristic
or
a
new
version.
New
platforms
change
the
characteristic.
So,
for
example,
the
platform
cig
is
evaluating
PowerPC,
64-bit
Linux
and
evaluating
IBM
system/370
X
note
system
390x.
A
Those
two
are
places
where
this
would
help
or
in
my
environment
I
may
want
to
run
it
on
FreeBSD,
but
but
I
don't
think
we
want
to
run
it
every
time
on
CI
de
Jenkins
that
IO
but
I
think
we
at
least
for
me
I,
would
prefer
it
be
readily
available,
so
anyone
could
run
it
anytime.
They
wish
comments
from
from
other
mentors
I.
B
B
A
A
So,
oh
and
in
fact
there
is
a
there,
a
history
of
doing
that,
rishabh.
If
you
would
like
to
refer
to
someone
else's
work,
who
had
done
that
in
the
get
plugin
Jenkins
file
history,
you
will
find
so
in
there
in
the
history
and
get
of
the
Jenkins
file.
You
will
find
code
that
was
added
to
run
the
platform.
A
The
oh
dear
plugin,
compatibility,
tester
and
the
acceptance
test,
harness
I
turned
them
off
because
they
were
too
heavy
weight
and
I
finally
deleted
them,
but
they
are
there
and
they
give
you
an
example
of
how
to
do
it.
Just
look
in
the
the
git
log
for
the
exact
change
file,
Jenkins
file,
and
it
will
show
you
when
I,
when
I
made
that
change,
and
you
can
then
use
that
as
a
pattern.
A
Now,
I
apologize.
Obviously
it
feels
like
I
made
a
mistake
here:
I
only
allow
30
minutes
for
this
I
suspect
we
need
an
hour.
The
other
proposal
was
we
would
like
to
meet
as
much
as
twice
a
week
to
be
sure
that
Rishabh
gets
feedback.
Fran
justin.
Is
there
a
time
which
I'll
send
you
a
doodle
poll
to
see
if
we
could
get
each
other
connected
for
another
time
during
the
week
network.
A
B
Think
what
I
work
on
is
the
first
thing
is
adding
things
to
the
design
document,
because
I've
just
added
the
benchmark
strategy
I
have
any
other
things
related
to
the
fixes
performance
fixes
we
wanted
to
do
see
already
existing
bugs.
We
have
particularly
redundant
fetch
and
the
second
thing
is
maybe
week
I
can
test
another
gate.
Operation
I
can
try
to
test
it.
Maybe
check
out
I
can
do
that
so
yeah
I
know.
Maybe
we
could
discuss
the
implementation.
B
A
Now
would
you
also
be
willing
to
share
and
give
a
five-minute
brief
summary,
and
it
really
will
have
to
be
very
brief,
high-level
to
the
platform
special
interest
group
a
week
from
tomorrow,
so
the
platform
special
interest
group
will
meet
a
week
from
yeah
next
it'll
be
the
17.
Oh,
and
you
know
the
date
I
think
I'd
shared
with
you
I'll,
send
you
it
right
21st.
Would
that
be
okay
for
you,
yeah.
B
A
Choose
what
you
think
would
be
interesting
to
the
people
in
the
platform
sig
the
this
is
a
chance
to
do
a
status
report
to
a
group
of
people
who,
let's
see
one
of
the
people
there
is
from
IBM
and
other
one
is
from
Broadcom
and
and
these
are
people
who
think
about
platforms
all
the
time,
and
so
you
just
presenting
hey
we're
trying
this
we're
doing
this
benchmarking
technique
will
cause
them
to
be.
Oh
what
about
this,
and
what
about
that
would
be
a
good
dialogue.
B
B
There
was
things
which
we
also
identify:
ggressive
milestones
for
the
project
plan.
So
right
now,
when
I,
when
I
created
the
proposal,
I
I
had
the
key
deliverables
I
just
wanted
to
discuss.
We
discuss
it
at
this
time.
The
things
I
mentioned
as
stretch
goals.
Where
do
we
want
to
shift
them
into
the
key
deliverables
we
were
trying
to
achieve
so
that's
something
after
which
I
can
identify
that
progress
in
milestones
correctly.
Okay,.
A
B
A
Excellent,
thank
you
so
I'll
send
the
Google
that
are
the
doodle
poll
and
we'll
plan
to
meet
again.
We
will
between
now
and
next
Wednesday
I'll,
try
to
find
another
time
when
we
could
meet
for
30
minutes.
You'll
keep
going
on
on
the
evaluation
on
the
document
on
the
design
document
and
get
yourself
ready
for
a
presentation
of
the
platform
sake
as
well.