-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
wdPoST worker just marks sectors as bad if this happens: remote/vanilla/single: context deadline exceeded #8957
Comments
Thanks for the issue ticket @benjaminh83! When reading through the ticket it seems like this might be fixed by #8959, which allows you to disable the PoSt pre-checks. It has just landed in master, so would need to test and confirm that this fixes the issue.
|
Very cool @rjan90 I would just really want this PoST worker setup to be resilient. Like what happens if we have 10x the power and maybe a cluster of 20 PoST workers - many workers are not worth much, if they individually gives up on proving because the SP is getting big and complex. |
I´m not sure, but maybe @magik6k can answer if that is potential issue?
Yes, these changes has landed in master now so it should be fairly easy to try out :) |
Okay, great success!
So all single vanilla proofs are done on the lotus-miner, but both wd and wnPoST has been outsourced. And I have ran this successfully (also on the full deadline that would not prove in the old setup):
Proving times (the single vanilla proof / data read) are much better so no timeout occured. |
Amazing, glad it worked! I will close this issue since it is resolved! And again, thank you so much for the detailed write up, it will be of great help to document and provide an example of this setup on a larger scale in the docs 😄 |
I was able to reproduce this on this simple setup that we are running now:
It have worked fine for days, until I have now reached a full 2349 sector deadline. It seems to be unable to get all the single_vanilla_proofs generated before a cut off. So It's possible to generate vanilla proofs for around 2000 sectors, but going above that, it gets cut off, and unproven sectors are maked as BAD. Logs from doing a Solutions:
LOGS:
|
Okay, this issues has been fixed again, but this time using other means. So by now, we have set So we could consistently regenerate about 100 BAD sectors when running the We then tried reducing the number of parallel reads out of a hypothesis about too many read queries over the network might end up with a part being left unanswered for too long time, leading to a timeout. So WindowPoST worker was then run with:
And this has done the trick. Read time for a full 2349 sector partition was around 2m, so really no slow down from reducing the parallelism. This could indicate that the number of parallel reads set at 128 might be a bit overkill and actually potentially cause issue with network query congestion which leads to unintended timeouts. |
Closing this issue since it has been resolved, and also added a feature enhanement issues for discussing if the default |
@rjan90 |
And you have |
yes, |
@rjan90
Above results I got when miner had 0 jobs. PC1 workers use NFS storages from PC2 servers and dedicated ethernet port + VLAN. So data flow between PC1 => PC2 cant have impact on storage. |
There is also one change, "FIL-0" server is used by daemon, miner, win/wd post workers, boostd |
Checklist
Latest release
, or the most recent RC(release canadiate) for the upcoming release or the dev branch(master), or have an issue updating to any of these.Lotus component
Lotus Version
Describe the Bug
PoST workers are generating wdPoSTs, but is only including a subset of sectors and marking the rest as bad.
This happens because PoST workers are asking other workers with the LongTermStorage path to do vanilla-proofs, and all proofs that does not finalize before a certain deadline/threshold, is handled as bad (corrupted/missing data).
This is a bug because the wdPoST is delivered on chain fairly fast. This proof was delivered after 4m30s into the deadline:
https://calibration.filscan.io/tipset/message-detail?cid=bafy2bzacectwfvssmw2owbcar5olmfeyw7bqldd7ebwc52sdkks4zaw2urqc2
So basically leaving 25 good minutes (that could have been used to wait for the storage to deliver the last proofs). So instead the combination of PoST workers and other workers introduces this much shorter threshold for getting data processed for windowPoSTing.
I would argue this is an undesirable side effect of running proving on a lotus-worker based setup. This would not happen if the lotus-miner was proving, as it allows for the vanilla-proofs to be slow (as they are not processed over network, but local to the process).
Errors does not show on the PoST worker logs when doing wdPoST, so instead I ran a
lotus-miner proving check --only-bad --slow 0
And it revealed these errors in the log for all the sectors marked as bad. Data is physically there, but this happened because the storage is rather slow, and not super responsive (so its a coincidence we experience what happens in this scenario). WindowPoST on the lotus-miner can take up to 15m into the deadline, so the storage is for sure not fast.
This bug is relevant to fix, as usage of PoST workers otherwise changes the requirement for wdPoSTs, so you actually don't have a full deadline to proof your partition, but only the time until the PoST workers gets tired of waiting on the remote worker, and marks the sector as BAD.
Could be related to #8362, but we do not see any breakdown of the scheduling or the wdPoST worker crashes. In this case it basically just rules out good (but slow) vanilla-proofs, because they are not presented to the wdPoST worker within a set threshold.
Logging Information
Repo Steps
Setup:
1x Lotus-miner: No LongTermStorage path
2x wdPoST worker: No LongTermStorage path
2x wnPoST worker: No LongTermStorage path
8x lotus-workers with no tasks: Holds the LongTermStorage path
14x lotus-workers with AP-C2: No LongTermStorage path
lotus-miner proving check --only-bad --slow
on deadlines with full partitions, and see that not all sectors come out as good - part of them are marked BAD.The text was updated successfully, but these errors were encountered: