# poc-urandom **Repository Path**: mirrors_mcmilk/poc-urandom ## Basic Information - **Project Name**: poc-urandom - **Description**: Linux kernel module meant to demonstrate the speed of the PRNG in OpenZFS - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-10-24 - **Last Updated**: 2026-10-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README This is a simple kernel module written to demonstrate different speeds of PRNG and CSPRNG implementations for or within OpenZFS's Linux SPL. The module was firstly written by Richard Yao on Gentoo Linux and compiled against Linux 5.16.14-gentoo-x86_64, but should build against any recent x86_64 kernel on any distribution with the kernel toolchain, headers and build system installed. The BLAKE3 code uses SSE41 instructions. Sample Session on this system: ``` [mcmilk@debian-x64 ~/src/poc-urandom.tr]$ make make -C /lib/modules/5.10.0-18-amd64/build M=/home/sva/src/poc-urandom.tr modules make[1]: Entering directory '/usr/src/linux-headers-5.10.0-18-amd64' CC [M] /home/sva/src/poc-urandom.tr/mod_cs128p.o LD [M] /home/sva/src/poc-urandom.tr/poc_cs128p.o CC [M] /home/sva/src/poc-urandom.tr/mod_cs256pp.o LD [M] /home/sva/src/poc-urandom.tr/poc_cs256pp.o CC [M] /home/sva/src/poc-urandom.tr/blake3.o CC [M] /home/sva/src/poc-urandom.tr/blake3_generic.o CC [M] /home/sva/src/poc-urandom.tr/blake3_impl.o CC [M] /home/sva/src/poc-urandom.tr/blake3_x86-64.o AS [M] /home/sva/src/poc-urandom.tr/blake3_sse41.o AS [M] /home/sva/src/poc-urandom.tr/blake3_avx2.o CC [M] /home/sva/src/poc-urandom.tr/mod_blake3.o LD [M] /home/sva/src/poc-urandom.tr/poc_blake3.o MODPOST /home/sva/src/poc-urandom.tr/Module.symvers CC [M] /home/sva/src/poc-urandom.tr/poc_blake3.mod.o LD [M] /home/sva/src/poc-urandom.tr/poc_blake3.ko CC [M] /home/sva/src/poc-urandom.tr/poc_cs128p.mod.o LD [M] /home/sva/src/poc-urandom.tr/poc_cs128p.ko CC [M] /home/sva/src/poc-urandom.tr/poc_cs256pp.mod.o LD [M] /home/sva/src/poc-urandom.tr/poc_cs256pp.ko make[1]: Leaving directory '/usr/src/linux-headers-5.10.0-18-amd64' ``` Linux debian-x64 5.10.0-18-amd64 #1 SMP Debian 5.10.140-1 (Ryzen 7 5800X) FreeBSD 13.1-RELEASE (Ryzen 7 5800X) -> for the bsd line ``` [mcmilk@debian-x64 ~/src/poc-urandom.tr]$ ./test-it.sh cs128p 32: 1.00MiB 0:00:00 [19.1MiB/s] [===================>] 100% cs256pp 32: 1.00MiB 0:00:00 [19.2MiB/s] [===================>] 100% blake3 32: 1.00MiB 0:00:00 [26.9MiB/s] [===================>] 100% linux 32: 1.00MiB 0:00:00 [24.6MiB/s] [===================>] 100% bsd 32: 1.00MiB 0:00:00 [22.6MiB/s] [===================>] 100% cs128p 128: 8.00MiB 0:00:00 [75.6MiB/s] [===================>] 100% cs256pp 128: 8.00MiB 0:00:00 [75.8MiB/s] [===================>] 100% blake3 128: 8.00MiB 0:00:00 [97.3MiB/s] [===================>] 100% linux 128: 8.00MiB 0:00:00 [81.4MiB/s] [===================>] 100% bsd 128: 8.00MiB 0:00:00 [83.7MiB/s] [===================>] 100% cs128p 512: 64.0MiB 0:00:00 [ 294MiB/s] [===================>] 100% cs256pp 512: 64.0MiB 0:00:00 [ 283MiB/s] [===================>] 100% blake3 512: 64.0MiB 0:00:00 [ 292MiB/s] [===================>] 100% linux 512: 64.0MiB 0:00:00 [ 219MiB/s] [===================>] 100% bsd 512: 64.0MiB 0:00:00 [ 223MiB/s] [===================>] 100% cs128p 2048: 512MiB 0:00:00 [1.01GiB/s] [===================>] 100% cs256pp 2048: 512MiB 0:00:00 [1.01GiB/s] [===================>] 100% blake3 2048: 512MiB 0:00:00 [ 586MiB/s] [===================>] 100% linux 2048: 512MiB 0:00:01 [ 374MiB/s] [===================>] 100% bsd 2048: 512MiB 0:00:01 [ 388MiB/s] [===================>] 100% cs128p 8192: 4.00GiB 0:00:01 [2.64GiB/s] [===================>] 100% cs256pp 8192: 4.00GiB 0:00:01 [2.51GiB/s] [===================>] 100% blake3 8192: 4.00GiB 0:00:05 [ 779MiB/s] [===================>] 100% linux 8192: 4.00GiB 0:00:09 [ 454MiB/s] [===================>] 100% bsd 8192: 4.00GiB 0:00:08 [ 479MiB/s] [===================>] 100% ``` Linux debian-x64 5.10.0-13-amd64 #1 SMP Debian 5.10.106-1 (i3-1005G1) FreeBSD 13.0-RELEASE (i3-1005G1) -> for the bsd line ``` cs128p 32: 1,00MiB 0:00:00 [11,7MiB/s] [===================>] 100% cs256pp 32: 1,00MiB 0:00:00 [11,8MiB/s] [===================>] 100% blake3 32: 1,00MiB 0:00:00 [16,2MiB/s] [===================>] 100% linux 32: 1,00MiB 0:00:00 [12,0MiB/s] [===================>] 100% bsd 32: 1.00MiB 0:00:01 [ 877KiB/s] [===================>] 100% cs128p 128: 8,00MiB 0:00:00 [45,3MiB/s] [===================>] 100% cs256pp 128: 8,00MiB 0:00:00 [46,6MiB/s] [===================>] 100% blake3 128: 8,00MiB 0:00:00 [58,5MiB/s] [===================>] 100% linux 128: 8,00MiB 0:00:00 [31,0MiB/s] [===================>] 100% bsd 128: 8.00MiB 0:00:02 [3.44MiB/s] [===================>] 100% cs128p 512: 64,0MiB 0:00:00 [ 173MiB/s] [===================>] 100% cs256pp 512: 64,0MiB 0:00:00 [ 178MiB/s] [===================>] 100% blake3 512: 64,0MiB 0:00:00 [ 180MiB/s] [===================>] 100% linux 512: 64,0MiB 0:00:00 [65,9MiB/s] [===================>] 100% bsd 512: 64.0MiB 0:00:04 [13.3MiB/s] [===================>] 100% cs128p 2048: 512MiB 0:00:00 [ 642MiB/s] [===================>] 100% cs256pp 2048: 512MiB 0:00:00 [ 646MiB/s] [===================>] 100% blake3 2048: 512MiB 0:00:01 [ 388MiB/s] [===================>] 100% linux 2048: 512MiB 0:00:05 [86,8MiB/s] [===================>] 100% bsd 2048: 512MiB 0:00:10 [48.9MiB/s] [===================>] 100% cs128p 8192: 4,00GiB 0:00:02 [1,84GiB/s] [===================>] 100% cs256pp 8192: 4,00GiB 0:00:02 [1,75GiB/s] [===================>] 100% blake3 8192: 4,00GiB 0:00:07 [ 540MiB/s] [===================>] 100% linux 8192: 4,00GiB 0:00:42 [96,2MiB/s] [===================>] 100% bsd 8192: 4.00GiB 0:00:27 [ 147MiB/s] [===================>] 100% ```