►
From YouTube: Benchmarking IPLD in IPFS
Description
Hannah Howard demos a benchmarking framework for measuring data transfers.
A
So
I
want
to,
I
want
to
show
you
some
of
the
benchmarking
that
we've
been
doing
over
in
ipld
in
ipfs
land
hold
on
just
give
me
a
sec.
I
want
to
just
set
this
up
all
right.
Everyone.
A
Yes,
maybe
maybe
not
awesome
cool
so
today,
so
so
this
is
actually
a
story
of
how
something
that
you
start
working
on
in
protocol
labs
in
one
area
could
turn
out
to
be
super
useful
to
other
people
and
the
person
the
protagonist
at
the
center
of
the
story
is
actually
not
me.
A
It
is
alfonso
who
maybe,
like
I
guess
six
months
ago
for
research,
work
related
to
transfer
speeds
in
bitswap,
started
working
on
this
beyond
bitswap
framework,
which
essentially
became
a
generalized
benchmarking
framework
for
measuring
transfers
of
data
of
almost
any
kind
in
almost
any
platform.
A
So
this
began
as
a
bit
swap
benchmark
later
it
added
graph
sync
later
it
added
a
version
that
ran
the
entire
ipfs
stack
and
then
just
a
couple
days
ago.
It
got
essentially
all
a
whole
bunch
of
live
p2p
protocols
added
it
has
http.
It
has
http
overlimp.
B
A
All
kinds
of
we
all
stream
all
kinds
of
like
non-ipfs
protocols
in
here,
and
we
in
this
this
this
repository
also
has
like
mechanisms
for
like
generating
files
transferring
real
data
transferring
directories.
So
it's
a
really
cool
way
to
to
to
do
these
sorts
of
bed
benchmarks
and
it.
A
You
know
it
has
sort
of
like
all
of
the
major
steps
and
like
and
like
a
traditional
transfer
workflow
in
our
system,
so
there's
the
process
of
adding
the
files
into
the
system
which,
in
the
case
of
like
ipfs,
means
converting
them
to
unix,
fs,
converting
them
to
you,
know
to
ipld
data
and
then
transferring
and
then
serializing
them
back
out
to
flat
files.
So
this
is
a
really
it's
a
really
cool
suite
of
tools.
A
A
More
recently
we
wanted.
So
you
know
the
data
systems
team
has
been
we've.
Basically
been
trying
to
take
ipld,
prime,
which
is
our
brands,
fake
and
new.
I
was
not
brand
spanking
new
at
this
point,
but
it's
our
it's
our
new
and
super
awesome
new
hotness,
a
version
of
ipld
as
opposed
to
the
old,
the
old
and
busted
libraries
and
we've
been
trying
to
get
them
all
throughout
ipfs,
so
that
we
have
all
the
capabilities
of
ipld
in
ipfs.
A
But
this
entails
a
whole
bunch
of
changes
to
our
stack
and
we
want
to
make
sure
that
when
we
ship
this
thing,
we
don't
break
ipfs.
So
we've
been
using
this
benchmark
and
what
we've
done
is
we've
set
up
essentially
this
benchmark
to
run
a
version
of
our
current
master
version
of
ipfs.
Our
current
released
version
of
ipfs.
A
It,
you
know
essentially
add
files
transfer
them
to
another
node
and
then
and
then
put
them
back
out
as
a
regular
file,
and
then
we
set
up
a
version
that
runs
in
that
runs
with
our
branches
in
ipl
g,
prime
and
ipfs,
and
these
these
early
versions
are
really
just
compatibility
versions.
We
found
ways
to
share
to
shim
in
ipld,
prime,
without
really
taking
advantage
of
its
capabilities
or
optimizing
around
it,
but
we
ran
these
benchmarks
and
we've
gotten
some
results.
A
The
the
benchmarks
are
test
ground
benchmarks
so
like
essentially,
if
I
want
to
run
them,
I'm
going
to
all
I
can.
I
have
like
we've
got
some
compositions
now
and
we
have
this
directory
called
ipld
and
ipfs.
We
have
a
baseline
and
we
have
a
composition
for
the
new
version.
A
One
of
the
super
cool
things
about
test
ground
is
that
you
can
sorry
if
I'm
going
super
fast
here,
but
is
that
you
can
like
basically
build
a
a
benchmark
where,
with
these
these
composition
files,
where
I
don't
know,
if
you
all,
can
see
this,
this
might
not
mean
anything
to
the
to
the
folks
who
aren't
who
don't
work
with
testron,
but
right
here.
What
I'm
doing
in
this
is.
I
am
actually
replacing
ipfs
with
a
different
commit
shell,
which
allows
me
to.
A
For
ipld,
prime
and
ipfs
and
there's
even
this
other
little
thing,
that's
like
selectors
thing,
which
allows
us
to
pass
in
essentially
a
build
tag
to
go,
which
is
super
cool.
I
just
learned
how
to
use
it
this
morning
because
it
allows
you
to
use
build
tags
and
go
to
like
work
with
different
versions
that
have
breaking
changes
in
their
interfaces,
which
actually
we
the
latest
thing
we
ship
we
had
to
do
with
graphics.
So
that's
like
I
don't
know.
I
I
I
feel
like
tesla.
A
Well,
I
I
could
sing
test
grounds
braces
all
day.
I
feel
like
it's
one
of
the
coolest
products.
Protocol
cuts
is
built
not
related
to
the
distributed
web
per
se,
but
still
an
amazing
product
anyway,
so
yeah.
So
if
I
wanted
to
run
this,
I
would
you
know,
run
my
composition
here
and
let's
go
test.
Ground
run
composition.
A
Oh
my
god.
Apparently
I
I
lose
my
ability
to
type
what
people
are
watching
yeah
and
so,
like
that's
gonna
start
and
then
I
over
here
I
have
my
test
brown
damon.
It's
actually
handling
the
request
and
starting
up.
However,
I
was
not
so
foolhardy
as
to
attempt
to
run
a
test
crown
test
while
on
a
zoom
call
up
and
make
you
all
wait.
So
don't
worry.
These
have
all
been
run
already
anyway.
A
So
once
we
got
the
results
yesterday
I
put
together
a
an
observable
repos.
I
don't
know
what
you
call
these
repositories
pages
and
we
were
able
to
compare
some
benchmarks
of
the
old
version
and
the
new
version.
A
Now
you
can
see
what
we
have
here
is
we
have
time
to
add
time
to
fetch
and
type
the
output,
and
you
can
see
we're
not
quite
there
in
terms
of
everything
being
the
same
but,
for
example,
on
time
to
add
we're
doing
really
well
and
time
to
fetch
in
time
to
output.
We
need
a
little
bit
of
work.
A
Fortunately,
we
did
a
little
bit
of
looking
into
what's
going
on
with
like
why
those
things
might
be
a
little
bit
slower
and
I
have
a
hunch
as
to
what
those
are
well.
Okay,
I
already
know,
but
in
any
case
you
can
see
here
that
this
is
loaded
with
some
initial
files,
but
you
can
upload
your
own
results
to.
A
Basically,
automatically
update
this
graph,
so
I've
gone
ahead
and
run
this
earlier,
and
I
have
a
separate
run
here,
which
is,
I
believe
this
is
it.
Oh
goodness.
I
hope
this
is
the
right
version.
Let's
find
out,
I
can't
remember
what
my
last
run
was
called.
I
should
have
called.
I
should
have
named
it
something
more
there.
We
are
yes
yeah,
so
it
turns
out
that
now
we
saw
some
unusual
results
here
in
the
fetch.
A
We're
pretty
sure
this
is
just
garbage
collection
running
because
we're
transferring
a
bunch
of
data
by
the
way.
What
we're
transferring
here
is
a
100
megabyte
directory.
It's
the
like
xkcd
archive
that
I
just
like
got
off
github
as
like
a
demo.
This
is
probably
just
garbage
collection
running,
so
we
are
seeing
some
unusual
results
where,
like
suddenly,
we
under
we
like
outperform
the
normal
version
on
one
run,
but
then
we
underperform
it
on
others.
I'm
pretty
sure
this
is
garbage
collection
related,
but
you
can
see.
A
Meanwhile,
our
our
time
to
output
to
a
flat
file
has
gotten
way
better,
and
the
difference
here
is
this
actually
has
to
do
with.
Basically,
there's
an
extra
hashing
of
the
blocks
in
the.
A
Ipld,
prime,
so
we're
we're
basically
when
we
read
blocks
out
of
the
block
store
we
have
with
the
without
this
sort
of
like
extra
thing.
Without
this
thing,
we
added
we
were
doing
an
extra
rehash
of
the
block
to
verify
the
cid,
which
is
really
wonderful.
A
If
you
care
about
trusting
your
data,
but
in
the
case
where
we're
loading
off
our
own
hard
drive
that
we
wrote
previously,
we
probably
do
trust
that
data
anyway,
so
we
don't
need
to
rehash
the
cids,
so
it
makes
a
big
difference
when
you're
transferring
big
chunks
of
data.
So
you
can
see
that
you
know
we
made
it.
A
A
Because
we've
we've
been
playing
around
with
different
protobuf
libraries
for
our
nodes
and
we
wanna
use
one:
that's
really
compatible
and
really
well
tuned
to
the
spec,
but
it
looks
like
we
have
some
optimization
work
to
do
there.
So
in
any
case,
it's
kind
of
cool,
though,
to
be
able
to
like
run
these
benchmarks
and
like
get
these
immediate,
you
know
get
these
really
awesome.
Like
immediate
comparisons,
and
you
know
across
all
kinds
of
different
stuff
and
we've
run.
You
know
we
wrote
the
one
day.
A
B
B
A
Yeah,
yes,
so
this
was
originally,
I
mean
it
was
originally
designed
as
a
repository
to
run
research,
experiments
on
basically
changes
to
bitswap,
right
or
changes
to
the
general
transfer
stack
of
ipfs
and
and,
like
you,
can
see,
there's
actually
still
this
rfc
directory
with
all
these
ideas
for
improving,
bitswap
and-
and
you
can
even
there's
even
some
like
have
implementations
and
there's
a
way
to
like
run
these
experiments.
A
So
it's
super
cool,
but
we
found
that
like
like
that's
what
he
built
and
then
like
over
the
last
like
few
months
when
I
was
doing
ipfs
work,
we
ended
up
doing
a
bunch
of
refactor
work
to
enable
it
to
support
almost
any
transport
in
any
scenario,
and
right
now
we're
just
doing
a
one-to-one
transfer
there,
but,
like
you,
can
mess
with
all
of
things
you
can
mess
with
latency,
you
can
mess
with
bandwidth.
You
can
mess
with.
You
know
whether
your
disk
store
is
in
memory
or
like
badger.
A
You
can
mess
with
how
many
transfers
you're
doing
between
how
many
transfer
nodes
it's
like
it's
pretty
cool.
Like
I
mean,
I
don't
know,
it's
it's
become
quite
a
resource
for
a
number
of
teams.
Currently
so
yeah.
B
Yeah
very
cool,
very
cool,
I'm
going
to
ask
questions.
B
Test
run
in
general
is
fantastic.
I
think
everyone.
That's
that's
touched.
It
finds
it
very
useful.
So
that's
great
yeah,
so
our
last.