Flexible I/O Tester development
 help / color / mirror / Atom feed
* [PATCH 0/2] Proposed LFSR implementation
@ 2013-03-08 12:37 Alex Pyrgiotis
  2013-03-08 12:37 ` [PATCH 1/2] Improve " Alex Pyrgiotis
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Alex Pyrgiotis @ 2013-03-08 12:37 UTC (permalink / raw)
  To: fio; +Cc: synnefo-devel

Hi Jens and list,

Due to the open-source nature of fio, I figured I'd share with you
something I've created while working on Archipelago[1], a storage
backend for synnefo[2] VMs.

We wanted to have an entity that can do random permutations fast, so
we've created an XNOR Galois LFSR (more details about the implementation
in the following patches) that should perform "better" than the generic
one for I/O related tasks.

By "better", I don't mean only in terms of speed - since by definition
LFSRs are insanely fast - but also in terms of their properties as
PRNGs. The main issue with LFSRs that can't make them a serious
candidate for I/O tasks is that due to their shifting nature, they
cannot produce a sequence of numbers that differs widely from one to the
next. This implementation should tackle this problem and should make
LFSRs promising candidates at least for randrepeat jobs.

I actually went one step further and tested this implementation against
the TESTU01 suite. A generic LFSR fails all the tests as expected, but
this LFSR passes 3 to 5 out the 10 entry level tests of the suite. This
shows that they are far from suitable as stand-alone PRNGs for
cryptography, but should be pretty decent for I/O tasks.

Anyways, hopefully you will find this patch set interesting for
inclusion in your code. If you have any questions, feel free to ask.

Thanks,
Alex

[1] http://synnefo-software.blogspot.gr/2013/02/we-are-happy-to-announce-that-synnefo_11.html
[2] http://www.synnefo.org/
[3] http://www.iro.umontreal.ca/~simardr/testu01/tu01.html



Alex Pyrgiotis (2):
  Improve LFSR implementation
  Add a simple test for LFSR generator

 Makefile      |   9 ++
 filesetup.c   |   2 +-
 lib/lfsr.c    | 421 ++++++++++++++++++++++++++--------------------------------
 lib/lfsr.h    |  12 +-
 t/axmap.c     |   2 +-
 t/lfsr-test.c | 127 ++++++++++++++++++
 6 files changed, 334 insertions(+), 239 deletions(-)
 create mode 100644 t/lfsr-test.c

-- 
1.8.1.4


^ permalink raw reply	[flat|nested] 7+ messages in thread
* [PATCH 0/2] Proposed LFSR implementation
@ 2013-03-08 18:30 Alex Pyrgiotis
  2013-03-08 18:30 ` [PATCH 2/2] Add a simple test for LFSR generator Alex Pyrgiotis
  0 siblings, 1 reply; 7+ messages in thread
From: Alex Pyrgiotis @ 2013-03-08 18:30 UTC (permalink / raw)
  To: fio

Hi Jens and list,

Due to the open-source nature of fio, I figured I'd share with you
something I've created while working on Archipelago[1], a storage
backend for synnefo[2] VMs.

We wanted to have an entity that can do random permutations fast, so
we've created an XNOR Galois LFSR (more details about the implementation
in the following patches) that should perform "better" than the generic
one for I/O related tasks.

By "better", I don't mean only in terms of speed - since by definition
LFSRs are insanely fast - but also in terms of their properties as
PRNGs. The main issue with LFSRs that can't make them a serious
candidate for I/O tasks is that due to their shifting nature, they
cannot produce a sequence of numbers that differs widely from one to the
next. This implementation should tackle this problem and should make
LFSRs promising candidates at least for randrepeat jobs.

I actually went one step further and tested this implementation against
the TESTU01 suite. A generic LFSR fails all the tests as expected, but
this LFSR passes 3 to 5 out the 10 entry level tests of the suite. This
shows that they are far from suitable as stand-alone PRNGs for
cryptography, but should be pretty decent for I/O tasks.

Anyways, hopefully you will find this patch set interesting for
inclusion in your code. If you have any questions, feel free to ask.

Thanks,
Alex

[1] http://synnefo-software.blogspot.gr/2013/02/we-are-happy-to-announce-that-synnefo_11.html
[2] http://www.synnefo.org/
[3] http://www.iro.umontreal.ca/~simardr/testu01/tu01.html



Alex Pyrgiotis (2):
  Improve LFSR implementation
  Add a simple test for LFSR generator

 Makefile      |   9 ++
 filesetup.c   |   2 +-
 lib/lfsr.c    | 421 ++++++++++++++++++++++++++--------------------------------
 lib/lfsr.h    |  12 +-
 t/axmap.c     |   2 +-
 t/lfsr-test.c | 127 ++++++++++++++++++
 6 files changed, 334 insertions(+), 239 deletions(-)
 create mode 100644 t/lfsr-test.c

-- 
1.8.1.4


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

end of thread, other threads:[~2013-03-12  6:44 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-08 12:37 [PATCH 0/2] Proposed LFSR implementation Alex Pyrgiotis
2013-03-08 12:37 ` [PATCH 1/2] Improve " Alex Pyrgiotis
2013-03-08 12:37 ` [PATCH 2/2] Add a simple test for LFSR generator Alex Pyrgiotis
2013-03-11 15:51   ` Jiri Horky
2013-03-12  6:45     ` Alex Pyrgiotis
2013-03-11 11:27 ` [PATCH 0/2] Proposed LFSR implementation Jens Axboe
  -- strict thread matches above, loose matches on Subject: below --
2013-03-08 18:30 Alex Pyrgiotis
2013-03-08 18:30 ` [PATCH 2/2] Add a simple test for LFSR generator Alex Pyrgiotis

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