It's possible that on rare occasions Linux will have run a task that used the FPU so RTL must save FPU state when running your task. That's a very expensive operation and may account for your occasional longer run-time. You can test this by dropping some conpr's in the FPU switch code when Linux owns the fpu. Let me know what it tells you.