[dpdk-dev] [PATCH v4 0/5] Pseudo-random number generation improvements
Mattias Rönnblom
mattias.ronnblom at ericsson.com
Fri Jun 28 11:01:19 CEST 2019
Fix bugs in DPDK pseudo-random number generation, make it multi-thread
safe, go faster and produce better-quality pseudo-random numbers.
Thanks to Stephen Hemminger, Bruce Richardson, Keith Wiles and Neil
Horman for valuable feedback.
PATCH v4:
* Fold the MAINTAINERS update and release notes commit into the other
commits.
* Add rte_rand() performance test to the meson build.
PATCH v3:
* Rebase
PATCH v2:
* Introduce the x86 rdseed machine instruction as a first fallback, in case
getentropy() is unavailable
* Use meson to detect getentropy() and rdseed
PATCH v1:
* Added performance tests
* Added __experimental to rte_rand_max() declaration
* Introduced a PRNG section in the MAINTAINERS file
* Added missing <rte_memory.h> include
* Use getentropy() instead of rdtsc for seeding the internal LCG
RFC v3:
* Since rte_rand() and rte_srand() have been a part of the API since long,
the experimental attribute was removed and the symbols were moved out
of the experimental section of the version.map file.
* rte_rand_max() performance improvements:
* Avoid repeated rte_lcore_id() calls.
* Handle a power-of-2 upper bound as a special case.
* Added a Bugzilla reference to the rte_rand() MT safety bug.
RFC v2:
* Removed 32-bit version of rte_rand() and rte_rand_max().
* Switched from a four-sequence LFSR (producing a 32-bit number)
to a five-sequence LFSR (producing a 64-bit number).
* Added a note on generator not being cryptographically secure.
Mattias Rönnblom (5):
eal: replace libc-based random number generation with LFSR
eal: add pseudo-random number generation performance test
eal: improve entropy for initial PRNG seed
eal: introduce random generator function with upper bound
eal: add bounded PRNG performance tests
MAINTAINERS | 6 +
app/test/Makefile | 1 +
app/test/meson.build | 2 +
app/test/test_rand_perf.c | 92 +++++++++
doc/guides/rel_notes/release_19_08.rst | 14 +-
lib/librte_eal/common/include/rte_random.h | 47 +++--
lib/librte_eal/common/meson.build | 1 +
lib/librte_eal/common/rte_random.c | 212 +++++++++++++++++++++
lib/librte_eal/freebsd/eal/Makefile | 1 +
lib/librte_eal/freebsd/eal/eal.c | 2 -
lib/librte_eal/linux/eal/Makefile | 1 +
lib/librte_eal/linux/eal/eal.c | 2 -
lib/librte_eal/meson.build | 3 +
lib/librte_eal/rte_eal_version.map | 3 +
14 files changed, 364 insertions(+), 23 deletions(-)
create mode 100644 app/test/test_rand_perf.c
create mode 100644 lib/librte_eal/common/rte_random.c
--
2.17.1
More information about the dev
mailing list