From f6043a025036c1f457cfecd101eb1d20af6c3450 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Sat, 12 Jun 2021 09:57:27 -0700 Subject: [PATCH] feat(lotus-sim): measure daily power growth --- cmd/lotus-sim/info.go | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/cmd/lotus-sim/info.go b/cmd/lotus-sim/info.go index 6a37f7258..cae8c9375 100644 --- a/cmd/lotus-sim/info.go +++ b/cmd/lotus-sim/info.go @@ -38,20 +38,34 @@ func getTotalPower(ctx context.Context, sm *stmgr.StateManager, ts *types.TipSet } func printInfo(ctx context.Context, sim *simulation.Simulation, out io.Writer) error { - powerNow, err := getTotalPower(ctx, sim.StateManager, sim.GetHead()) + head := sim.GetHead() + start := sim.GetStart() + + powerNow, err := getTotalPower(ctx, sim.StateManager, head) if err != nil { return err } - powerStart, err := getTotalPower(ctx, sim.StateManager, sim.GetStart()) + powerLookbackEpoch := head.Height() - builtin.EpochsInDay + if powerLookbackEpoch < start.Height() { + powerLookbackEpoch = start.Height() + } + lookbackTs, err := sim.Chainstore.GetTipsetByHeight(ctx, powerLookbackEpoch, head, false) if err != nil { return err } - powerGrowth := big.Sub(powerNow.RawBytePower, powerStart.RawBytePower) + powerLookback, err := getTotalPower(ctx, sim.StateManager, lookbackTs) + if err != nil { + return err + } + // growth rate in size/day + growthRate := big.Div( + big.Mul(big.Sub(powerNow.RawBytePower, powerLookback.RawBytePower), + big.NewInt(builtin.EpochsInDay)), + big.NewInt(int64(head.Height()-lookbackTs.Height())), + ) tw := tabwriter.NewWriter(out, 8, 8, 1, ' ', 0) - head := sim.GetHead() - start := sim.GetStart() headEpoch := head.Height() firstEpoch := start.Height() + 1 @@ -59,12 +73,6 @@ func printInfo(ctx context.Context, sim *simulation.Simulation, out io.Writer) e startTime := time.Unix(int64(start.MinTimestamp()), 0) duration := headTime.Sub(startTime) - // growth rate in size/day - growthRate := big.Div( - big.Mul(powerGrowth, big.NewInt(int64(24*time.Hour))), - big.NewInt(int64(duration)), - ) - fmt.Fprintf(tw, "Name:\t%s\n", sim.Name()) fmt.Fprintf(tw, "Head:\t%s\n", head) fmt.Fprintf(tw, "Start Epoch:\t%d\n", firstEpoch) @@ -74,8 +82,7 @@ func printInfo(ctx context.Context, sim *simulation.Simulation, out io.Writer) e fmt.Fprintf(tw, "End Date:\t%s\n", headTime) fmt.Fprintf(tw, "Duration:\t%.2f day(s)\n", duration.Hours()/24) fmt.Fprintf(tw, "Power:\t%s\n", types.SizeStr(powerNow.RawBytePower)) - fmt.Fprintf(tw, "Power Growth:\t%s\n", types.SizeStr(powerGrowth)) - fmt.Fprintf(tw, "Power Growth Rate:\t%s/day\n", types.SizeStr(growthRate)) + fmt.Fprintf(tw, "Daily Power Growth:\t%s/day\n", types.SizeStr(growthRate)) fmt.Fprintf(tw, "Network Version:\t%d\n", sim.GetNetworkVersion()) return tw.Flush() }