From ce5c76c6d684765a802638c2dddc3e3e7acf1c5b Mon Sep 17 00:00:00 2001 From: whyrusleeping Date: Tue, 10 Dec 2019 14:22:39 +0100 Subject: [PATCH] load sector info from pre seal file --- cmd/lotus-bench/main.go | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/cmd/lotus-bench/main.go b/cmd/lotus-bench/main.go index c6c58e8fe..0a7da254e 100644 --- a/cmd/lotus-bench/main.go +++ b/cmd/lotus-bench/main.go @@ -4,6 +4,7 @@ import ( "bytes" "context" "crypto/sha256" + "encoding/json" "fmt" "io/ioutil" "math/rand" @@ -20,6 +21,7 @@ import ( "github.com/filecoin-project/lotus/build" "github.com/filecoin-project/lotus/chain/address" + "github.com/filecoin-project/lotus/genesis" "github.com/filecoin-project/lotus/lib/sectorbuilder" ) @@ -68,6 +70,11 @@ func main() { Name: "no-gpu", Usage: "disable gpu usage for the benchmark run", }, + &cli.StringFlag{ + Name: "miner-addr", + Usage: "pass miner address (only necessary if using existing sectorbuilder)", + Value: "t0101", + }, &cli.StringFlag{ Name: "benchmark-existing-sectorbuilder", Usage: "pass a directory to run election-post timings on an existing sectorbuilder", @@ -104,7 +111,7 @@ func main() { sbdir = robench } - maddr, err := address.NewFromString("t0101") + maddr, err := address.NewFromString(c.String("miner-addr")) if err != nil { return err } @@ -224,6 +231,34 @@ func main() { var challenge [32]byte rand.Read(challenge[:]) + if robench != "" { + // TODO: this assumes we only ever benchmark a preseal + // sectorbuilder directory... we need a better way to handle + // this in other cases + + fdata, err := ioutil.ReadFile(filepath.Join(sbdir, "pre-seal-"+maddr.String()+".json")) + if err != nil { + return err + } + + var genmm map[string]genesis.GenesisMiner + if err := json.Unmarshal(fdata, &genmm); err != nil { + return err + } + + genm, ok := genmm[maddr.String()] + if !ok { + return xerrors.Errorf("preseal file didnt have expected miner in it") + } + + for _, s := range genm.Sectors { + sealedSectors = append(sealedSectors, ffi.PublicSectorInfo{ + CommR: s.CommR, + SectorID: s.SectorID, + }) + } + } + log.Info("generating election post candidates") sinfos := sectorbuilder.NewSortedPublicSectorInfo(sealedSectors) candidates, err := sb.GenerateEPostCandidates(sinfos, challenge, []uint64{})