Is my farm broken or am I just bad luck?

As in that post, plot check has really not much value for the end user. It looks like it was meant for devs to do regression tests in case the chia plotter was updated (or to check other plotters (MM, BB) for “purity”), and just as an afterthought was exposed in the production code.

To make it somehow better for end users, the min number of tests should be reduced to just 1 (everything else is just a waste of time, as the seed is the same, and changing the seed and/or starting position may / will produce contradictory results) to speed up the basic plot structure test.

The second change would be to disable plot checks all together, so it would not interfere with checking for dups (of course, checking for dups is also useless as it is, as it doesn’t check against the farm, but rather the local harvester).

By default, harvester will try to parallelize plot scans, and it may be (was before) that when SAS / SATA i/o will get saturated, the delay will start growing exponentially. So, maybe it would be worthwhile to play with scan parameters and to disable parallel scans. Especially, if drives are moved around (not just sending plots over the wire), there is really no reason for those scans at all, as manual rescan can be forced after adding new drives.

  plots_refresh_parameter:
    batch_size: 300
    batch_sleep_milliseconds: 1    // I would try to increase it to 10-100 (ms) or so
    interval_seconds: 300          // this can easily be increased to just once per day for a big farm
    retry_invalid_seconds: 1200

  parallel_read: True              // I would try to switch it to False, just to see whether it helps

By the way, could you post your line (from debug log):

harvester chia.harvester.harvester: INFO     _plot_refresh_callback: event done, ... duration: 0.08 seconds

That “duration: …” is the time it took harvester to scan all drives. Also, whether those lines are close to your longer lookups.