►
From YouTube: 2020 07 10 GSoC Git Plugin Performance Project
Description
Jenkins Git plugin performance improvement project office hours July 10, 2020 for Google Summer of Code.
B
C
A
You
are,
you
are
welcome
to
use
that
Jenkins
instance
in
any.
What
I
would
call
reasonable
way?
I
would
appreciate
it
if
you
would
not
reverse
engineer
all
of
the
credentials
that
are
inside
of
it
and
take
those
away
all
right.
That
would
be
really
that
would
be
bad
behavior,
but
I'm
entrusting
you,
then
that
this
is
a
it
uses,
Jenkins
credentials
and
therefore
there
are
techniques
that
would
let
you
get
get
them
back
out.
Please
don't
steal
my
credentials
other
than
that.
You
are
welcome
to
do
it.
A
It
is
a
destructible
instance
I
reconstruct
them
all
the
time.
I
reserve
the
right
to
reconstruct
them
at
any
time,
I,
destroy
them
and
restart
them
very
frequently.
So
don't
be
surprised
if
sometime,
you
were
doing
something
and
all
of
the
history
of
the
thing
gets
destroyed
so
but
but
you
are
welcome
to
do
your.
You
are
welcome
to
use
the
resources
that
are
here
there
you're
welcome
to
define
new
jobs.
A
If
you
would
like
the
job
to
persist
over,
you
know
over
a
potential
restart,
let
me
know,
and
I
will
archive
it
into
the
definition
so
that
then
the
next
time
I
restarted.
There
are
also
multiple
copies
of
that.
If
you
need
access
to
a
separate
copy,
if
you'd,
like
a
fresh
copy,
I
run
fresh
copies
on
other
machines
and
I
could
give
you
access
to
those
other
machines
as
well.
I.
C
C
So
we
were
thinking
of
adding
that
to
that
Jenkins,
and
so
so
my
question
was
that
I
would
have
to
I
would
have
to
what
I
would
have
to
do
is
to
access
the
Jenkins
directly,
the
home,
changing
the
directory
of
this
instance
and
add
the
HPI
JPI
to
the
replace,
add
the
JPI
to
the
plugins
directory
key
in
the
in
the
instance
to
integrate
this
time
again
inside
the
Jenkins.
That's.
A
A
B
A
Installing
so
you
can
use
it,
I
think
it's
actually
already
there,
but
if
it's
not
go
ahead
and
install
it,
and
you
are
welcome
to
install
any
other
plugins,
you
need,
if
you
install
a
plug-in
and
it
it
disrupts
the
instance.
Okay,
no
problem,
if
you
install
a
plug-in
and
I
strongly
disagree,
I'll,
let
you
know.
C
A
C
The
next
thing
on
the
agenda
so
I
need
to
pee.
I
belong
back
for
the
two
or
three
benchmarks
and
I.
What
I
assumed
was
when
I
raise
that
P
at
the
benchmarks
will
run
on
DCI
Jenkins
IO,
because
the
branch
was
G
saw
hi,
something
G
image
so,
but
the
benchmark
that
stage
is
not
being
run
by
on
this
yeah
Jenkins
retired
I
was
not
sure.
Why
is
that
happening?
I
actually
have
the
PR
open.
There,
I
was
looking
in
the
Jenkins
file.
C
C
C
A
C
A
A
B
A
B
A
B
Cps
is
like
its
own
generally
groovy,
but
caveats:
okay,.
C
C
This
is
more
of
not
something
discussing
about
yeah,
so
I
was
I
was
thinking.
I
I
did
say
that
I
would
create
last
utility
in
the
benchmarks
model,
which
would
validate
those
benchmarks
functionally
so
so
I've
created
a
class
which,
right
now
it
offers
two
kind
of
validation.
The
first
is
to
check
the
number
of
references.
If
we
are
running
some,
an
operation
which
is
related
to
the
fences
we
basically
compare,
number
of
references
are
correct
or
not,
or
a
particular
repository.
C
The
second
one
is
the
size
of
the
repository,
that
is,
the
dog
gate
site,
so
so
so
what
I
noticed
was
that
I
was
actually
using
the
file
utility
to
calculate
the
size
of
a
for
the
tree
directory
and,
and
it
was
if
that
operation
moving
jingling
the
benchmark
itself.
So
I
was
a
little
then
I
thought
of
benchmarking.
The
files
util
dot.
C
The
file
you
to
start
estimating
the
size
of
the
directory
API
actually
check
what
kind
of
contribution
is
it?
What
kind
of
overhead
is
it
added
to
the
whole
benchmark
and
and
I?
Think
it's
not
a
surprise
that
it's
just
adding
a
mini
error.
So
the
benchmark
results.
It
said
that
it's
adding
a
millisecond
to
the
the
operation
is
taking
of
milliseconds
or
I,
actually
checked
it
for
300
MB
size
repository
dot
get
directly.
So
it's
just
taking
a
mini
seconds.
I
am
results
wise.
C
It
wouldn't
make
a
difference
if
it's
a
if
it's
a
gate
fetch,
maybe
but
all
the
small
operation
it
might
I
think
it
just
is
just
an
observation
for
myself.
That
I
should
not
include
anything
even
if
I
have
to
validate
I
would
have
to
find
a
way
where
I
do
not
use
the
benchmark
itself
to
validate
in
a
parameter.
A
And
that
seems
fair.
The
a
micro
for
the
goal
is
to
have
it
be
as
smaller
unit
as
you
can
possibly
test
right.
It's
so
so
I
think
I
think
you're
right.
It's
the
concept
seems
to
assume
that
the
the
thing
the
benchmark
has
written
is
doing
valid
things
and
we
have
to
do
it
by
inspection
or
by
observation.
That
seems
fair
to
me.
C
So
the
last
topic
today
is
the
abstract,
colesium.
Suppose
I've
been
exploring
the
ACMA
place,
so
actually
it
was
for
the
size
estimated
class
I
was
looking
at
I.
Think
I'm,
something
in
question.
I
was
looking
at
how
the
mighty
branch
projects
they
they
were
working.
How
is
it
ketching
the
branches
so
so
first
I
want
to
confirm
something.
C
This
branches
yeah
so
I'll,
actually
talk
about
the
locking
of
the
cache
after
this,
because
this
is
this
is
what
I
can
find
right
down
at
this
first.
So
what
I
can
see
is
that
we
use
a
functionality
provided
by
Jacob
Rev
book,
which
is
basically
blocking
the
commit
three
to
two.
Actually,
we
want
the
branches
and
we
want
other
references.
So
if
we
have,
if
someone
is
building
up
scanning,
the
P
R,
then
building
the
project
so
a
mighty
ranch
project.
According
to
my
understanding,
it
works
like
if
I
have.
C
They
commit
one
of
the
things.
I
could
see,
that's
passing
the
commit
while
walking.
We
can
do
this
so
and
then
I
then
I
saw
that
we
have
a
functionality
in
CLI.
Get
called
get
REM
pass
come
on,
which
would
do
the
same
thing,
so
the
question
I
have
is:
why
are
we
using
a
book?
Is
it
because
this
is
the
gate?
It's
providing
all
these
functionalities,
but
we
don't
have
a
class
to
do
it
like
we
don't
have.
We
would
have
to
add
similar
functionalities
into
a
particular
place,
and
that
is
Jake.
A
I
think
it's
again,
it's
it's
Jake.
Its
interfaces
are
designed
for
and
very
well
thought
out
for
the
way
that
Java
programmers
want
to
interact
with
things
and
so
I
think
that
when
when
this
was
implemented,
it
was
detected
that
hey
the
jagged
interfaces
are
just
cleaner
and
easier
to
use
than
they
get
client
plug-in
interfaces.
So
let's
use
Jake
it
and
and
I
think
it
was
a
good
choice.
It
was
a
very
wise
and
sensible
choice.
A
C
C
So
I
think
my
main
miles.
The
main
thing
I
have
was
thinking
about
was
that,
if
we're
using
something
like
this,
do
we
want
to
benchmark
the
operations
with
almond
hair?
Then
we
have
considerable
amount
of
references.
This
is
because
I
think
we
have
seen
how
data
less
the
more
books
or
the
number
of
reference
leaves
in
the
equation
between
the
number
of
references
and
size
of
the
repository.
It's
not
it's
not,
of
course
it's
linear
in
the
sense
that
it
increases
the
size
of
the
repository.
The
number
of
references
increase,
the.
B
C
He
like
it
works,
although
just
what
you've
said
I
think
it's
not
needed,
but
is
it
something
we
should
explore
because
since
this
is
something
jagged
is
providing
and
with
whatever
experience,
I've
had
I
just
I
thought
that,
okay,
if
this
is
provided
by
Jake
it
and
same
thing,
can
be
provided
by
get.
How
is
it
possible
that
it
would
perform
see
like
it
would
performative
in
in
areas
which
we
haven't
explored
yet
good.
A
A
C
A
I
think
particularly
if
you
can
see
a
way
to
do
it
with
without
a
lot
of
effort,
I
think
that
would
be
a
real
positive,
another
place
to
say:
hey
I'm
gonna,
try
a
benchmark
of
something,
that's
a
higher
level
than
just
fetch.
This
is
this
is
an
and
this
spot
is
a
this.
This
particular
area
is
a
place
where
we've
got
potential
for
cache
contention,
so
you
might
even
be
at
a
higher
level
where
you
say:
I'm
gonna,
try
yeah!
So
yes,
interesting.
If
you
can
do
a
benchmark
without
a
lot
of
cost.
C
So
when
you,
when
you're
talking
about
the
cache
contention,
earmark
you
what
you
saying
is
that
or
a
multi
branch
project
when
we
created
first,
the
first
thing
we
do
is
we
try
to
find
the
cache?
If
we
find
that,
then
we
we
create
a
client
and
then
do
all
of
this
work
and
if
we
don't
find
it,
we
fetch
the
repository
and
then
create
a
time.
Then
do
that,
so
why
we
have
a
assuming
that
we
have
a
cache.
A
C
A
Least
the
cache
contention
claims
that
I've
heard
were
were
in
the
operating
case,
where
the
clone
already
exists.
There's
been
a
change
on
the
remote
repository
and
now
each
of
the
branches
of
that
remote
repository
are
being
evaluated.
Are
there
changes
there
and
they
tend
to
build
a
stack
of
of
people
who
all
want
to
access
the
cache
cache
copy?
They
each
want
to
get
their
own
lock
on
the
cache
copy.
They
lock
it
update
it
unlock
it.
Locket
updated,
unlock
it,
and
at
least
that's
what
I
thought
was
was
had
been
in.
C
B
A
And
in
terms
of
in
terms
of
your
project,
I-
wouldn't
I'm,
not
I'm,
not
personally
concerned
about
this
layer.
If
you
want
to
shift
your
focus
back
to
the
lower
layers
that
you
initially
described,
that's
fine
too
there
is.
There
isn't
a
requirement
that
we
have
to
improve
this
piece,
we're
looking
for
way
looking
for
things
to
improve,
and
if
you
find
that
this
could
use
improvement
great.
But
if
not
okay,.
C
Okay,
that's
okay,
I,
just
read
about
it
and
I'll,
possibly
try
to
I'm,
not
sure
how
to
reproduce
it.
Is
it
something
reproducible
have
you
or
is
it?
Is
it
a
random?
Eventually,
it's
not
it's
not
like
it's
going
to
happen
every
time.
So
is
it
like
if
I
have
150
branches,
it
is
going
to
happen
for
sure
or
or
is
there
something
that
happens
randomly,
and
you
know.
A
A
C
A
A
This
one,
okay,
so
I,
have
a
thing
called
bugs
pipeline
checks.
Let's
make
this
so
that
it's
actually
readable
on
the
screen.
Sighs
there
is
that
easier,
bugs
pipeline
checks
in
bugs
pipeline
checks,
I
have
a
repository
named
Jenkins
bugs
and
then
it's
represented
by
different
protocols
that
access
the
same
repository
any
one
of
those.
A
If
you
look
here
and
we
look
at
the
scan
repository
log,
it
scans
a
hundred
and
fifty
or
so
branches
looking
for
changes
and
and
I
have
scripts
that
cause
changes
in
many
of
these
repositories
in
in
roughly
linear
time
it
just
it
causes
a
change
and
then
sleeps
and
it
causes
another
change.
And
what
I
will
see
is
that
when
I
look
at
one
of
these
jobs
running,
it
will
show
a
long
pause
and
the
console
output
where
it
says
this
branch
indexing.
A
And
that
branch,
indexing
and
I
think
it's
this
branch
indexing
plus
this
and
I
have
a
suspicion
that
there's
a
long
pause
between
this
and
this,
but
again
I'm,
not
sure
that
this
is
in
scope
for
your
for
the
project.
You're
working
on
Rishabh,
I'm,
I
show
it
to
you.
Your
goal,
I
think,
is
to
find
areas
to
improve
plug-in
performance.
I'm,
not
sure
that
this
should
be
your
first
priority.
Yet.
C
Okay,
I
get
that
I
get,
and
this
is
not
ever
just
I
was
interested
in
how
what
the
issue
was
like
actually
they're,
not
quite
understand
it
and
land
right
now,
I
understand
of
an
issue
okay,
so
so
so
what
I'm
going
to
do
is
after
I
think
I've
read
enough
I'm
going
to
start
reading
a
pro
dry
for
the
estimator
space
task.
I
knew
that
the
first
stars
pudding
to
us.
The
second
is
I
paid
benchmarks
or
to
compare
the
walking
commit
just
walking
functionality,
the
being
both
delegate
and
jagged.
D
C
Wish
I
miss
checking,
so
there
are
couple
commands
with
multiple
commands
which
would
provide
the
same
functionality.
I
haven't
taken
it
each
one
of
them,
but
I
am
sure
that
we
have
commands,
which
would
there's
a
command
which
would
print
the
current
graph
there's
a
commands
which
would
walk
the
commit
history
and
it's
the
gate.
C
Rev
book
come
on
so
yeah,
so
so
I
see
I
think
more
into
the
code
where
what
operations
I
would
need
to
bench
would
be
useful
to
benchmark
then
address
yeah,
and
the
first
thing
I'm
going
to
do
is
to
raise
the
PR
for
to
correct
D
junk
inside
as
a
great
expression,
yeah,
so
I
think
that's
it
Tom
I
say:
okay,
do
anything
you
guys
already
cut.
Yes,
I
will.
So
you
could
just
end.
A
C
D
C
We
actually
yeah.
This
is
one
potential
discussion
we
actually
amazed.
So
so
what
you're
talking
I
think
we
should
explain.
The
topic
first
topic
is
that
we
so
for
the
bench
benchmarking
strategy.
We
will
more
focus
on
the
size
of
the
repository,
and
now
we
want
to
move
on
to
parameters
like
the
number
of
branches,
commit
history
and,
and
so
what
home
care
is
proposing
is
to
create
some
repositories
with
the
constant
size
but
different
number
of
branches,
so
in
depth.
C
So
so
that
would
be
I
think
that's
an
interesting
thing
we
could
do
and
car
if
you
could,
if
you're,
if
you're,
creating
the
repositories,
I
sure
as
I
remember,
you
have
created
a
repository
with
with
5000
branches,
yep,
so
I
think
what
would
be
I
think
what
we
could
do
is
that
we
could
have
the
repository
with
maybe
ten
branches.
Then
then
we
go
to
50,
then
500
and
then
5,000
yeah.