workers: WorkerType mehdod on SealTask

This commit is contained in:
Łukasz Magiera 2022-03-24 18:28:45 -04:00
parent 56b97e1386
commit a53dc5a7c7
3 changed files with 46 additions and 23 deletions

View File

@ -352,7 +352,11 @@ func handleMiningInfo(ctx context.Context, cctx *cli.Context, fullapi v0api.Full
return xerrors.Errorf("getting worker stats: %w", err)
}
var nseal, nwdpost, nwinpost int
workersByType := map[string]int{
sealtasks.WorkerSealing: 0,
sealtasks.WorkerWindowPoSt: 0,
sealtasks.WorkerWinningPoSt: 0,
}
wloop:
for _, st := range ws {
@ -361,19 +365,18 @@ func handleMiningInfo(ctx context.Context, cctx *cli.Context, fullapi v0api.Full
}
for _, task := range st.Tasks {
if task == sealtasks.TTGenerateWindowPoSt {
nwdpost++
continue wloop
}
if task == sealtasks.TTGenerateWinningPoSt {
nwinpost++
if task.WorkerType() != sealtasks.WorkerSealing {
workersByType[task.WorkerType()]++
continue wloop
}
}
nseal++
workersByType[sealtasks.WorkerSealing]++
}
fmt.Printf("Workers: Seal(%d) WdPoSt(%d) WinPoSt(%d)\n", nseal, nwdpost, nwinpost)
fmt.Printf("Workers: Seal(%d) WdPoSt(%d) WinPoSt(%d)\n",
workersByType[sealtasks.WorkerSealing],
workersByType[sealtasks.WorkerWindowPoSt],
workersByType[sealtasks.WorkerWinningPoSt])
}
if cctx.IsSet("blocks") {

View File

@ -274,51 +274,54 @@ var runCmd = &cli.Command{
}
var taskTypes []sealtasks.TaskType
var workerType string
exclusiveSet := false
if cctx.Bool("windowpost") {
exclusiveSet = true
workerType = sealtasks.WorkerWindowPoSt
taskTypes = append(taskTypes, sealtasks.TTGenerateWindowPoSt)
}
if cctx.Bool("winningpost") {
exclusiveSet = true
workerType = sealtasks.WorkerWinningPoSt
taskTypes = append(taskTypes, sealtasks.TTGenerateWinningPoSt)
}
if !exclusiveSet {
if workerType == "" {
workerType = sealtasks.WorkerSealing
taskTypes = append(taskTypes, sealtasks.TTFetch, sealtasks.TTCommit1, sealtasks.TTProveReplicaUpdate1, sealtasks.TTFinalize, sealtasks.TTFinalizeReplicaUpdate)
}
if (!exclusiveSet || cctx.IsSet("addpiece")) && cctx.Bool("addpiece") {
if (workerType != sealtasks.WorkerSealing || cctx.IsSet("addpiece")) && cctx.Bool("addpiece") {
taskTypes = append(taskTypes, sealtasks.TTAddPiece)
}
if (!exclusiveSet || cctx.IsSet("precommit1")) && cctx.Bool("precommit1") {
if (workerType != sealtasks.WorkerSealing || cctx.IsSet("precommit1")) && cctx.Bool("precommit1") {
taskTypes = append(taskTypes, sealtasks.TTPreCommit1)
}
if (!exclusiveSet || cctx.IsSet("unseal")) && cctx.Bool("unseal") {
if (workerType != sealtasks.WorkerSealing || cctx.IsSet("unseal")) && cctx.Bool("unseal") {
taskTypes = append(taskTypes, sealtasks.TTUnseal)
}
if (!exclusiveSet || cctx.IsSet("precommit2")) && cctx.Bool("precommit2") {
if (workerType != sealtasks.WorkerSealing || cctx.IsSet("precommit2")) && cctx.Bool("precommit2") {
taskTypes = append(taskTypes, sealtasks.TTPreCommit2)
}
if (!exclusiveSet || cctx.IsSet("commit")) && cctx.Bool("commit") {
if (workerType != sealtasks.WorkerSealing || cctx.IsSet("commit")) && cctx.Bool("commit") {
taskTypes = append(taskTypes, sealtasks.TTCommit2)
}
if (!exclusiveSet || cctx.IsSet("replica-update")) && cctx.Bool("replica-update") {
if (workerType != sealtasks.WorkerSealing || cctx.IsSet("replica-update")) && cctx.Bool("replica-update") {
taskTypes = append(taskTypes, sealtasks.TTReplicaUpdate)
}
if (!exclusiveSet || cctx.IsSet("prove-replica-update2")) && cctx.Bool("prove-replica-update2") {
if (workerType != sealtasks.WorkerSealing || cctx.IsSet("prove-replica-update2")) && cctx.Bool("prove-replica-update2") {
taskTypes = append(taskTypes, sealtasks.TTProveReplicaUpdate2)
}
if (!exclusiveSet || cctx.IsSet("regen-sector-key")) && cctx.Bool("regen-sector-key") {
if (workerType != sealtasks.WorkerSealing || cctx.IsSet("regen-sector-key")) && cctx.Bool("regen-sector-key") {
taskTypes = append(taskTypes, sealtasks.TTRegenSectorKey)
}
if len(taskTypes) == 0 {
return xerrors.Errorf("no task types specified")
}
if exclusiveSet && len(taskTypes) != 1 {
return xerrors.Errorf("PoSt workers only support a single task type; have %v", taskTypes)
for _, taskType := range taskTypes {
if taskType.WorkerType() != workerType {
return xerrors.Errorf("expected all task types to be for %s worker, but task %s is for %s worker", workerType, taskType, taskType.WorkerType())
}
}
// Open repo

View File

@ -66,6 +66,23 @@ var shortNames = map[TaskType]string{
TTGenerateWinningPoSt: "WNP",
}
const (
WorkerSealing = "Sealing"
WorkerWinningPoSt = "WinPost"
WorkerWindowPoSt = "WdPoSt"
)
func (a TaskType) WorkerType() string {
switch a {
case TTGenerateWindowPoSt:
return WorkerWinningPoSt
case WorkerWinningPoSt:
return WorkerWindowPoSt
default:
return WorkerSealing
}
}
func (a TaskType) MuchLess(b TaskType) (bool, bool) {
oa, ob := order[a], order[b]
oneNegative := oa^ob < 0