iotune: improve recommendation in case we timeout
iotune: improve recommendation in case we timeout

In cases in which we timeout, we currently call update_best_result with the
current result, whichever it is, and return. This is very fragile, because we
can be in the middle of a region that is completely unrelated to the critical
region we are looking for.

The best way to do that, would be to run a scan over all the points we have so
far and return the best. It is fair to ask why don't we always do such scan at
the end, and that is addressed in a comment.

In the description of Issue #115, there is a core dump that indicates that we
have left the evaluation with a recommended concurrency of 0. This can only
happen if _best_critical_concurrency == 0. Although it is not clear why that
ended up being the case, by guaranteeing we will scan our current options, this
patch should fix that too.

Signed-off-by: Glauber Costa <7ba9037b0dd006f9408bd45b94707becd5cd4e87@scylladb.com>

syuu1228/seastar,scylladb/seastar,dreamsxin/seastar,syuu1228/seastar,syuu1228/seastar,dreamsxin/seastar,cloudius-systems/seastar,cloudius-systems/seastar,cloudius-systems/seastar,kjniemi/seastar,avikivity/seastar,avikivity/seastar,kjniemi/seastar,scylladb/seastar,dreamsxin/seastar,kjniemi/seastar,scylladb/seastar,avikivity/seastar