syzkaller icon indicating copy to clipboard operation
syzkaller copied to clipboard

prog: switch to math/rand/v2

Open dvyukov opened this issue 1 year ago • 5 comments

We extensively use math/rand, but there are some performance issues with it: https://go.dev/blog/randv2

the Go 1 generator, which is reasonably fast (about 1.8ns per number on my
M3 Mac) but maintains an internal state of almost 5 kilobytes. In contrast,
Melissa O’Neill’s PCG family of generators generates better random numbers
in about 2.1ns per number with only 16 bytes of internal state.

Perhaps if we switch all pacakges (prog, fuzzer, etc) to math/rand/v2 we can get some perf wins.

It was added in Go 1.22, so need to fix #4746 first.

dvyukov avatar May 02 '24 20:05 dvyukov

If we stick to the rule that our old-env container uses a one older Go version than env/syzbot, we'd be able to make use of this new random generator only once Go 1.23 is released.

a-nogikh avatar May 08 '24 09:05 a-nogikh

We could diverge from that rule for a short period of time. Nobody really asked us for 2 versions.

Just spotted this: https://twitter.com/val_deleplace/status/1787818710822011163

dvyukov avatar May 08 '24 09:05 dvyukov

What are the potential side effects assuming we want to remove syz-old-env?

tarasmadan avatar May 08 '24 13:05 tarasmadan

At the very least we want to make sure that newer syzkaller revisions are buildable and testable by the currently running syz-ci's in the current docker images. There's also FreeBSD (and probably something else), where we don't use docker containers at all, so we should be mindful of everything that breaks once we start using newer Go features. Otherwise, I can't think of any other benefits of the syz-old-env tests.

a-nogikh avatar May 10 '24 09:05 a-nogikh

After #5288, everything is ready for math/rand/v2

a-nogikh avatar Sep 10 '24 10:09 a-nogikh