What you may see is the Haskell GC kicking in every so often and halting the world for long stretches of time (i.e. several seconds). You will likely not see this in the first few hours after restart. Have you experimented with the non moving GC?
Check this as well Solution to zero Missed Slots: GC and other little known enhancements — LIBRA Pool
It also includes the non moving GC as tomdx suggested but i don’t know if 16GB is enough for this.
I tried a lot different options and this seem to be the most stable one(0 missed slots every epoch except epoch change ones) but it’s also the one that consumes the most resources, especially on RAM.