Instead of giving the entire dataset to the model (which in this case already identifies a performance limit visually), give a partial set and then see if these algorithms can predict the remaining known values. That should be the real test of whether prediction works.
Here's what I found last time I did it: https://github.com/brendangregg/PerfModels/blob/master/scale...
ie, I'm splitting the dataset into "model input" and "extra measurements". USL was not really working.