So that was in some quick benchmarks against the sequential one in the runtime: https://github.com/ocaml/ocaml/blob/trunk/runtime/skiplist.c
I haven't done a huge amount of investigation but I suspect the cost comes from the extra indirection in the lock-free one.