specs-actors v0.6
This commit is contained in:
parent
41f6d62a51
commit
f67bbbc457
2
extern/filecoin-ffi
vendored
2
extern/filecoin-ffi
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 61c02f6bea8d69bb79c70daa1d62f26c486643aa
|
Subproject commit 1bff7f4563370ada590a605b5459b91e1662ebaa
|
@ -13,11 +13,11 @@ import (
|
|||||||
|
|
||||||
// TODO: Track things more actively
|
// TODO: Track things more actively
|
||||||
type FaultTracker interface {
|
type FaultTracker interface {
|
||||||
CheckProvable(ctx context.Context, spt abi.RegisteredProof, sectors []abi.SectorID) ([]abi.SectorID, error)
|
CheckProvable(ctx context.Context, spt abi.RegisteredSealProof, sectors []abi.SectorID) ([]abi.SectorID, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns unprovable sectors
|
// Returns unprovable sectors
|
||||||
func (m *Manager) CheckProvable(ctx context.Context, spt abi.RegisteredProof, sectors []abi.SectorID) ([]abi.SectorID, error) {
|
func (m *Manager) CheckProvable(ctx context.Context, spt abi.RegisteredSealProof, sectors []abi.SectorID) ([]abi.SectorID, error) {
|
||||||
var bad []abi.SectorID
|
var bad []abi.SectorID
|
||||||
|
|
||||||
// TODO: More better checks
|
// TODO: More better checks
|
||||||
|
@ -7,31 +7,27 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
SealProofType abi.RegisteredProof
|
SealProofType abi.RegisteredSealProof
|
||||||
|
|
||||||
_ struct{} // guard against nameless init
|
_ struct{} // guard against nameless init
|
||||||
}
|
}
|
||||||
|
|
||||||
func sizeFromConfig(cfg Config) (abi.SectorSize, error) {
|
func sizeFromConfig(cfg Config) (abi.SectorSize, error) {
|
||||||
if cfg.SealProofType == abi.RegisteredProof(0) {
|
|
||||||
return abi.SectorSize(0), xerrors.New("must specify a seal proof type from abi.RegisteredProof")
|
|
||||||
}
|
|
||||||
|
|
||||||
return cfg.SealProofType.SectorSize()
|
return cfg.SealProofType.SectorSize()
|
||||||
}
|
}
|
||||||
|
|
||||||
func SealProofTypeFromSectorSize(ssize abi.SectorSize) (abi.RegisteredProof, error) {
|
func SealProofTypeFromSectorSize(ssize abi.SectorSize) (abi.RegisteredSealProof, error) {
|
||||||
switch ssize {
|
switch ssize {
|
||||||
case 2 << 10:
|
case 2 << 10:
|
||||||
return abi.RegisteredProof_StackedDRG2KiBSeal, nil
|
return abi.RegisteredSealProof_StackedDrg2KiBV1, nil
|
||||||
case 8 << 20:
|
case 8 << 20:
|
||||||
return abi.RegisteredProof_StackedDRG8MiBSeal, nil
|
return abi.RegisteredSealProof_StackedDrg8MiBV1, nil
|
||||||
case 512 << 20:
|
case 512 << 20:
|
||||||
return abi.RegisteredProof_StackedDRG512MiBSeal, nil
|
return abi.RegisteredSealProof_StackedDrg512MiBV1, nil
|
||||||
case 32 << 30:
|
case 32 << 30:
|
||||||
return abi.RegisteredProof_StackedDRG32GiBSeal, nil
|
return abi.RegisteredSealProof_StackedDrg32GiBV1, nil
|
||||||
case 64 << 30:
|
case 64 << 30:
|
||||||
return abi.RegisteredProof_StackedDRG64GiBSeal, nil
|
return abi.RegisteredSealProof_StackedDrg64GiBV1, nil
|
||||||
default:
|
default:
|
||||||
return 0, xerrors.Errorf("unsupported sector size for miner: %v", ssize)
|
return 0, xerrors.Errorf("unsupported sector size for miner: %v", ssize)
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ import (
|
|||||||
var log = logging.Logger("ffiwrapper")
|
var log = logging.Logger("ffiwrapper")
|
||||||
|
|
||||||
type Sealer struct {
|
type Sealer struct {
|
||||||
sealProofType abi.RegisteredProof
|
sealProofType abi.RegisteredSealProof
|
||||||
ssize abi.SectorSize // a function of sealProofType and postProofType
|
ssize abi.SectorSize // a function of sealProofType and postProofType
|
||||||
|
|
||||||
sectors SectorProvider
|
sectors SectorProvider
|
||||||
@ -23,6 +23,6 @@ func (sb *Sealer) SectorSize() abi.SectorSize {
|
|||||||
return sb.ssize
|
return sb.ssize
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sb *Sealer) SealProofType() abi.RegisteredProof {
|
func (sb *Sealer) SealProofType() abi.RegisteredSealProof {
|
||||||
return sb.sealProofType
|
return sb.sealProofType
|
||||||
}
|
}
|
||||||
|
@ -510,7 +510,7 @@ func (sb *Sealer) FinalizeSector(ctx context.Context, sector abi.SectorID) error
|
|||||||
return ffi.ClearCache(uint64(sb.ssize), paths.Cache)
|
return ffi.ClearCache(uint64(sb.ssize), paths.Cache)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GeneratePieceCIDFromFile(proofType abi.RegisteredProof, piece io.Reader, pieceSize abi.UnpaddedPieceSize) (cid.Cid, error) {
|
func GeneratePieceCIDFromFile(proofType abi.RegisteredSealProof, piece io.Reader, pieceSize abi.UnpaddedPieceSize) (cid.Cid, error) {
|
||||||
f, werr, err := ToReadableFile(piece, int64(pieceSize))
|
f, werr, err := ToReadableFile(piece, int64(pieceSize))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cid.Undef, err
|
return cid.Undef, err
|
||||||
@ -524,7 +524,7 @@ func GeneratePieceCIDFromFile(proofType abi.RegisteredProof, piece io.Reader, pi
|
|||||||
return pieceCID, werr()
|
return pieceCID, werr()
|
||||||
}
|
}
|
||||||
|
|
||||||
func GenerateUnsealedCID(proofType abi.RegisteredProof, pieces []abi.PieceInfo) (cid.Cid, error) {
|
func GenerateUnsealedCID(proofType abi.RegisteredSealProof, pieces []abi.PieceInfo) (cid.Cid, error) {
|
||||||
var sum abi.PaddedPieceSize
|
var sum abi.PaddedPieceSize
|
||||||
for _, p := range pieces {
|
for _, p := range pieces {
|
||||||
sum += p.Size
|
sum += p.Size
|
||||||
|
@ -32,7 +32,7 @@ func init() {
|
|||||||
logging.SetLogLevel("*", "DEBUG") //nolint: errcheck
|
logging.SetLogLevel("*", "DEBUG") //nolint: errcheck
|
||||||
}
|
}
|
||||||
|
|
||||||
var sealProofType = abi.RegisteredProof_StackedDRG2KiBSeal
|
var sealProofType = abi.RegisteredSealProof_StackedDrg2KiBV1
|
||||||
var sectorSize, _ = sealProofType.SectorSize()
|
var sectorSize, _ = sealProofType.SectorSize()
|
||||||
|
|
||||||
var sealRand = abi.SealRandomness{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2}
|
var sealRand = abi.SealRandomness{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2}
|
||||||
@ -91,7 +91,7 @@ func (s *seal) commit(t *testing.T, sb *Sealer, done func()) {
|
|||||||
ok, err := ProofVerifier.VerifySeal(abi.SealVerifyInfo{
|
ok, err := ProofVerifier.VerifySeal(abi.SealVerifyInfo{
|
||||||
SectorID: s.id,
|
SectorID: s.id,
|
||||||
SealedCID: s.cids.Sealed,
|
SealedCID: s.cids.Sealed,
|
||||||
RegisteredProof: sealProofType,
|
SealProof: sealProofType,
|
||||||
Proof: proof,
|
Proof: proof,
|
||||||
Randomness: s.ticket,
|
Randomness: s.ticket,
|
||||||
InteractiveRandomness: seed,
|
InteractiveRandomness: seed,
|
||||||
@ -439,7 +439,7 @@ func BenchmarkWriteWithAlignment(b *testing.B) {
|
|||||||
tf, _ := ioutil.TempFile("/tmp/", "scrb-")
|
tf, _ := ioutil.TempFile("/tmp/", "scrb-")
|
||||||
b.StartTimer()
|
b.StartTimer()
|
||||||
|
|
||||||
ffi.WriteWithAlignment(abi.RegisteredProof_StackedDRG2KiBSeal, rf, bt, tf, nil)
|
ffi.WriteWithAlignment(abi.RegisteredSealProof_StackedDrg2KiBV1, rf, bt, tf, nil)
|
||||||
w()
|
w()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ type Verifier interface {
|
|||||||
VerifyWinningPoSt(ctx context.Context, info abi.WinningPoStVerifyInfo) (bool, error)
|
VerifyWinningPoSt(ctx context.Context, info abi.WinningPoStVerifyInfo) (bool, error)
|
||||||
VerifyWindowPoSt(ctx context.Context, info abi.WindowPoStVerifyInfo) (bool, error)
|
VerifyWindowPoSt(ctx context.Context, info abi.WindowPoStVerifyInfo) (bool, error)
|
||||||
|
|
||||||
GenerateWinningPoStSectorChallenge(context.Context, abi.RegisteredProof, abi.ActorID, abi.PoStRandomness, uint64) ([]uint64, error)
|
GenerateWinningPoStSectorChallenge(context.Context, abi.RegisteredPoStProof, abi.ActorID, abi.PoStRandomness, uint64) ([]uint64, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type SectorProvider interface {
|
type SectorProvider interface {
|
||||||
|
@ -16,7 +16,7 @@ import (
|
|||||||
|
|
||||||
func (sb *Sealer) GenerateWinningPoSt(ctx context.Context, minerID abi.ActorID, sectorInfo []abi.SectorInfo, randomness abi.PoStRandomness) ([]abi.PoStProof, error) {
|
func (sb *Sealer) GenerateWinningPoSt(ctx context.Context, minerID abi.ActorID, sectorInfo []abi.SectorInfo, randomness abi.PoStRandomness) ([]abi.PoStProof, error) {
|
||||||
randomness[31] = 0 // TODO: Not correct, fixme
|
randomness[31] = 0 // TODO: Not correct, fixme
|
||||||
privsectors, skipped, done, err := sb.pubSectorToPriv(ctx, minerID, sectorInfo, nil, abi.RegisteredProof.RegisteredWinningPoStProof) // TODO: FAULTS?
|
privsectors, skipped, done, err := sb.pubSectorToPriv(ctx, minerID, sectorInfo, nil, abi.RegisteredSealProof.RegisteredWinningPoStProof) // TODO: FAULTS?
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -30,7 +30,7 @@ func (sb *Sealer) GenerateWinningPoSt(ctx context.Context, minerID abi.ActorID,
|
|||||||
|
|
||||||
func (sb *Sealer) GenerateWindowPoSt(ctx context.Context, minerID abi.ActorID, sectorInfo []abi.SectorInfo, randomness abi.PoStRandomness) ([]abi.PoStProof, []abi.SectorID, error) {
|
func (sb *Sealer) GenerateWindowPoSt(ctx context.Context, minerID abi.ActorID, sectorInfo []abi.SectorInfo, randomness abi.PoStRandomness) ([]abi.PoStProof, []abi.SectorID, error) {
|
||||||
randomness[31] = 0 // TODO: Not correct, fixme
|
randomness[31] = 0 // TODO: Not correct, fixme
|
||||||
privsectors, skipped, done, err := sb.pubSectorToPriv(ctx, minerID, sectorInfo, nil, abi.RegisteredProof.RegisteredWindowPoStProof)
|
privsectors, skipped, done, err := sb.pubSectorToPriv(ctx, minerID, sectorInfo, nil, abi.RegisteredSealProof.RegisteredWindowPoStProof)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, xerrors.Errorf("gathering sector info: %w", err)
|
return nil, nil, xerrors.Errorf("gathering sector info: %w", err)
|
||||||
}
|
}
|
||||||
@ -40,7 +40,7 @@ func (sb *Sealer) GenerateWindowPoSt(ctx context.Context, minerID abi.ActorID, s
|
|||||||
return proof, skipped, err
|
return proof, skipped, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sb *Sealer) pubSectorToPriv(ctx context.Context, mid abi.ActorID, sectorInfo []abi.SectorInfo, faults []abi.SectorNumber, rpt func(abi.RegisteredProof) (abi.RegisteredProof, error)) (ffi.SortedPrivateSectorInfo, []abi.SectorID, func(), error) {
|
func (sb *Sealer) pubSectorToPriv(ctx context.Context, mid abi.ActorID, sectorInfo []abi.SectorInfo, faults []abi.SectorNumber, rpt func(abi.RegisteredSealProof) (abi.RegisteredPoStProof, error)) (ffi.SortedPrivateSectorInfo, []abi.SectorID, func(), error) {
|
||||||
fmap := map[abi.SectorNumber]struct{}{}
|
fmap := map[abi.SectorNumber]struct{}{}
|
||||||
for _, fault := range faults {
|
for _, fault := range faults {
|
||||||
fmap[fault] = struct{}{}
|
fmap[fault] = struct{}{}
|
||||||
@ -70,7 +70,7 @@ func (sb *Sealer) pubSectorToPriv(ctx context.Context, mid abi.ActorID, sectorIn
|
|||||||
}
|
}
|
||||||
doneFuncs = append(doneFuncs, d)
|
doneFuncs = append(doneFuncs, d)
|
||||||
|
|
||||||
postProofType, err := rpt(s.RegisteredProof)
|
postProofType, err := rpt(s.SealProof)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
done()
|
done()
|
||||||
return ffi.SortedPrivateSectorInfo{}, nil, nil, xerrors.Errorf("acquiring registered PoSt proof from sector info %+v: %w", s, err)
|
return ffi.SortedPrivateSectorInfo{}, nil, nil, xerrors.Errorf("acquiring registered PoSt proof from sector info %+v: %w", s, err)
|
||||||
@ -113,7 +113,7 @@ func (proofVerifier) VerifyWindowPoSt(ctx context.Context, info abi.WindowPoStVe
|
|||||||
return ffi.VerifyWindowPoSt(info)
|
return ffi.VerifyWindowPoSt(info)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (proofVerifier) GenerateWinningPoStSectorChallenge(ctx context.Context, proofType abi.RegisteredProof, minerID abi.ActorID, randomness abi.PoStRandomness, eligibleSectorCount uint64) ([]uint64, error) {
|
func (proofVerifier) GenerateWinningPoStSectorChallenge(ctx context.Context, proofType abi.RegisteredPoStProof, minerID abi.ActorID, randomness abi.PoStRandomness, eligibleSectorCount uint64) ([]uint64, error) {
|
||||||
randomness[31] = 0 // TODO: Not correct, fixme
|
randomness[31] = 0 // TODO: Not correct, fixme
|
||||||
return ffi.GenerateWinningPoStSectorChallenge(proofType, minerID, randomness, eligibleSectorCount)
|
return ffi.GenerateWinningPoStSectorChallenge(proofType, minerID, randomness, eligibleSectorCount)
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,7 @@ func TestWriteTwoPcs(t *testing.T) {
|
|||||||
|
|
||||||
rf, w, _ := ffiwrapper.ToReadableFile(bytes.NewReader(buf), int64(len(buf)))
|
rf, w, _ := ffiwrapper.ToReadableFile(bytes.NewReader(buf), int64(len(buf)))
|
||||||
|
|
||||||
_, _, _, err := ffi.WriteWithAlignment(abi.RegisteredProof_StackedDRG32GiBSeal, rf, abi.UnpaddedPieceSize(len(buf)), tf, nil)
|
_, _, _, err := ffi.WriteWithAlignment(abi.RegisteredSealProof_StackedDrg32GiBV1, rf, abi.UnpaddedPieceSize(len(buf)), tf, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ func padFFI(buf []byte) []byte {
|
|||||||
rf, w, _ := ffiwrapper.ToReadableFile(bytes.NewReader(buf), int64(len(buf)))
|
rf, w, _ := ffiwrapper.ToReadableFile(bytes.NewReader(buf), int64(len(buf)))
|
||||||
tf, _ := ioutil.TempFile("/tmp/", "scrb-")
|
tf, _ := ioutil.TempFile("/tmp/", "scrb-")
|
||||||
|
|
||||||
_, _, _, err := ffi.WriteWithAlignment(abi.RegisteredProof_StackedDRG32GiBSeal, rf, abi.UnpaddedPieceSize(len(buf)), tf, nil)
|
_, _, _, err := ffi.WriteWithAlignment(abi.RegisteredSealProof_StackedDrg32GiBV1, rf, abi.UnpaddedPieceSize(len(buf)), tf, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
2
go.mod
2
go.mod
@ -9,7 +9,7 @@ require (
|
|||||||
github.com/filecoin-project/go-bitfield v0.0.2-0.20200518150651-562fdb554b6e
|
github.com/filecoin-project/go-bitfield v0.0.2-0.20200518150651-562fdb554b6e
|
||||||
github.com/filecoin-project/go-fil-commcid v0.0.0-20200208005934-2b8bd03caca5
|
github.com/filecoin-project/go-fil-commcid v0.0.0-20200208005934-2b8bd03caca5
|
||||||
github.com/filecoin-project/go-paramfetch v0.0.1
|
github.com/filecoin-project/go-paramfetch v0.0.1
|
||||||
github.com/filecoin-project/specs-actors v0.5.4-0.20200521014528-0df536f7e461
|
github.com/filecoin-project/specs-actors v0.6.0
|
||||||
github.com/filecoin-project/specs-storage v0.1.0
|
github.com/filecoin-project/specs-storage v0.1.0
|
||||||
github.com/google/uuid v1.1.1
|
github.com/google/uuid v1.1.1
|
||||||
github.com/gorilla/mux v1.7.4
|
github.com/gorilla/mux v1.7.4
|
||||||
|
2
go.sum
2
go.sum
@ -45,6 +45,8 @@ github.com/filecoin-project/go-paramfetch v0.0.1/go.mod h1:fZzmf4tftbwf9S37XRifo
|
|||||||
github.com/filecoin-project/specs-actors v0.3.0/go.mod h1:nQYnFbQ7Y0bHZyq6HDEuVlCPR+U3z5Q3wMOQ+2aiV+Y=
|
github.com/filecoin-project/specs-actors v0.3.0/go.mod h1:nQYnFbQ7Y0bHZyq6HDEuVlCPR+U3z5Q3wMOQ+2aiV+Y=
|
||||||
github.com/filecoin-project/specs-actors v0.5.4-0.20200521014528-0df536f7e461 h1:yyAoJ9dNboljDWj0uBdJEbdaTak/YhkjYUQt0GzlY0A=
|
github.com/filecoin-project/specs-actors v0.5.4-0.20200521014528-0df536f7e461 h1:yyAoJ9dNboljDWj0uBdJEbdaTak/YhkjYUQt0GzlY0A=
|
||||||
github.com/filecoin-project/specs-actors v0.5.4-0.20200521014528-0df536f7e461/go.mod h1:r5btrNzZD0oBkEz1pohv80gSCXQnqGrD0kYwOTiExyE=
|
github.com/filecoin-project/specs-actors v0.5.4-0.20200521014528-0df536f7e461/go.mod h1:r5btrNzZD0oBkEz1pohv80gSCXQnqGrD0kYwOTiExyE=
|
||||||
|
github.com/filecoin-project/specs-actors v0.6.0 h1:IepUsmDGY60QliENVTkBTAkwqGWw9kNbbHOcU/9oiC0=
|
||||||
|
github.com/filecoin-project/specs-actors v0.6.0/go.mod h1:dRdy3cURykh2R8O/DKqy8olScl70rmIS7GrB4hB1IDY=
|
||||||
github.com/filecoin-project/specs-storage v0.1.0 h1:PkDgTOT5W5Ao7752onjDl4QSv+sgOVdJbvFjOnD5w94=
|
github.com/filecoin-project/specs-storage v0.1.0 h1:PkDgTOT5W5Ao7752onjDl4QSv+sgOVdJbvFjOnD5w94=
|
||||||
github.com/filecoin-project/specs-storage v0.1.0/go.mod h1:Pr5ntAaxsh+sLG/LYiL4tKzvA83Vk5vLODYhfNwOg7k=
|
github.com/filecoin-project/specs-storage v0.1.0/go.mod h1:Pr5ntAaxsh+sLG/LYiL4tKzvA83Vk5vLODYhfNwOg7k=
|
||||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||||
|
@ -23,7 +23,7 @@ import (
|
|||||||
var pathTypes = []stores.SectorFileType{stores.FTUnsealed, stores.FTSealed, stores.FTCache}
|
var pathTypes = []stores.SectorFileType{stores.FTUnsealed, stores.FTSealed, stores.FTCache}
|
||||||
|
|
||||||
type WorkerConfig struct {
|
type WorkerConfig struct {
|
||||||
SealProof abi.RegisteredProof
|
SealProof abi.RegisteredSealProof
|
||||||
TaskTypes []sealtasks.TaskType
|
TaskTypes []sealtasks.TaskType
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ func newTestMgr(ctx context.Context, t *testing.T) (*Manager, *stores.Local, *st
|
|||||||
|
|
||||||
si := stores.NewIndex()
|
si := stores.NewIndex()
|
||||||
cfg := &ffiwrapper.Config{
|
cfg := &ffiwrapper.Config{
|
||||||
SealProofType: abi.RegisteredProof_StackedDRG2KiBSeal,
|
SealProofType: abi.RegisteredSealProof_StackedDrg2KiBV1,
|
||||||
}
|
}
|
||||||
|
|
||||||
lstor, err := stores.NewLocal(ctx, st, si, nil)
|
lstor, err := stores.NewLocal(ctx, st, si, nil)
|
||||||
@ -118,7 +118,7 @@ func TestSimple(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
err := m.AddWorker(ctx, newTestWorker(WorkerConfig{
|
err := m.AddWorker(ctx, newTestWorker(WorkerConfig{
|
||||||
SealProof: abi.RegisteredProof_StackedDRG2KiBSeal,
|
SealProof: abi.RegisteredSealProof_StackedDrg2KiBV1,
|
||||||
TaskTypes: localTasks,
|
TaskTypes: localTasks,
|
||||||
}, lstor))
|
}, lstor))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
21
mock/mock.go
21
mock/mock.go
@ -27,7 +27,7 @@ type SectorMgr struct {
|
|||||||
pieces map[cid.Cid][]byte
|
pieces map[cid.Cid][]byte
|
||||||
sectorSize abi.SectorSize
|
sectorSize abi.SectorSize
|
||||||
nextSectorID abi.SectorNumber
|
nextSectorID abi.SectorNumber
|
||||||
proofType abi.RegisteredProof
|
proofType abi.RegisteredSealProof
|
||||||
|
|
||||||
lk sync.Mutex
|
lk sync.Mutex
|
||||||
}
|
}
|
||||||
@ -258,21 +258,26 @@ func AddOpFinish(ctx context.Context) (context.Context, func()) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (mgr *SectorMgr) GenerateWinningPoSt(ctx context.Context, minerID abi.ActorID, sectorInfo []abi.SectorInfo, randomness abi.PoStRandomness) ([]abi.PoStProof, error) {
|
func (mgr *SectorMgr) GenerateWinningPoSt(ctx context.Context, minerID abi.ActorID, sectorInfo []abi.SectorInfo, randomness abi.PoStRandomness) ([]abi.PoStProof, error) {
|
||||||
return generateFakePoSt(sectorInfo), nil
|
return generateFakePoSt(sectorInfo, abi.RegisteredSealProof.RegisteredWinningPoStProof), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mgr *SectorMgr) GenerateWindowPoSt(ctx context.Context, minerID abi.ActorID, sectorInfo []abi.SectorInfo, randomness abi.PoStRandomness) ([]abi.PoStProof, []abi.SectorID, error) {
|
func (mgr *SectorMgr) GenerateWindowPoSt(ctx context.Context, minerID abi.ActorID, sectorInfo []abi.SectorInfo, randomness abi.PoStRandomness) ([]abi.PoStProof, []abi.SectorID, error) {
|
||||||
return generateFakePoSt(sectorInfo), nil, nil
|
return generateFakePoSt(sectorInfo, abi.RegisteredSealProof.RegisteredWindowPoStProof), nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateFakePoSt(sectorInfo []abi.SectorInfo) []abi.PoStProof {
|
func generateFakePoSt(sectorInfo []abi.SectorInfo, rpt func(abi.RegisteredSealProof) (abi.RegisteredPoStProof, error)) []abi.PoStProof {
|
||||||
se, err := sectorInfo[0].RegisteredProof.WindowPoStPartitionSectors()
|
se, err := sectorInfo[0].SealProof.WindowPoStPartitionSectors()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
wp, err := rpt(sectorInfo[0].SealProof)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
return []abi.PoStProof{
|
return []abi.PoStProof{
|
||||||
{
|
{
|
||||||
RegisteredProof: sectorInfo[0].RegisteredProof,
|
PoStProof: wp,
|
||||||
ProofBytes: make([]byte, 192*int(math.Ceil(float64(len(sectorInfo))/float64(se)))),
|
ProofBytes: make([]byte, 192*int(math.Ceil(float64(len(sectorInfo))/float64(se)))),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -340,11 +345,11 @@ func (m mockVerif) VerifyWindowPoSt(ctx context.Context, info abi.WindowPoStVeri
|
|||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m mockVerif) GenerateDataCommitment(pt abi.RegisteredProof, pieces []abi.PieceInfo) (cid.Cid, error) {
|
func (m mockVerif) GenerateDataCommitment(pt abi.RegisteredSealProof, pieces []abi.PieceInfo) (cid.Cid, error) {
|
||||||
return ffiwrapper.GenerateUnsealedCID(pt, pieces)
|
return ffiwrapper.GenerateUnsealedCID(pt, pieces)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m mockVerif) GenerateWinningPoStSectorChallenge(ctx context.Context, proofType abi.RegisteredProof, minerID abi.ActorID, randomness abi.PoStRandomness, eligibleSectorCount uint64) ([]uint64, error) {
|
func (m mockVerif) GenerateWinningPoStSectorChallenge(ctx context.Context, proofType abi.RegisteredPoStProof, minerID abi.ActorID, randomness abi.PoStRandomness, eligibleSectorCount uint64) ([]uint64, error) {
|
||||||
return []uint64{0}, nil
|
return []uint64{0}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
62
resources.go
62
resources.go
@ -22,9 +22,9 @@ func (r Resources) MultiThread() bool {
|
|||||||
|
|
||||||
const MaxCachingOverhead = 32 << 30
|
const MaxCachingOverhead = 32 << 30
|
||||||
|
|
||||||
var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredSealProof]Resources{
|
||||||
sealtasks.TTAddPiece: {
|
sealtasks.TTAddPiece: {
|
||||||
abi.RegisteredProof_StackedDRG64GiBSeal: Resources{ // This is probably a bit conservative
|
abi.RegisteredSealProof_StackedDrg64GiBV1: Resources{ // This is probably a bit conservative
|
||||||
MaxMemory: 64 << 30,
|
MaxMemory: 64 << 30,
|
||||||
MinMemory: 64 << 30,
|
MinMemory: 64 << 30,
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 1 << 30,
|
BaseMinMemory: 1 << 30,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG32GiBSeal: Resources{ // This is probably a bit conservative
|
abi.RegisteredSealProof_StackedDrg32GiBV1: Resources{ // This is probably a bit conservative
|
||||||
MaxMemory: 32 << 30,
|
MaxMemory: 32 << 30,
|
||||||
MinMemory: 32 << 30,
|
MinMemory: 32 << 30,
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 1 << 30,
|
BaseMinMemory: 1 << 30,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG512MiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg512MiBV1: Resources{
|
||||||
MaxMemory: 1 << 30,
|
MaxMemory: 1 << 30,
|
||||||
MinMemory: 1 << 30,
|
MinMemory: 1 << 30,
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 1 << 30,
|
BaseMinMemory: 1 << 30,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG2KiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg2KiBV1: Resources{
|
||||||
MaxMemory: 2 << 10,
|
MaxMemory: 2 << 10,
|
||||||
MinMemory: 2 << 10,
|
MinMemory: 2 << 10,
|
||||||
|
|
||||||
@ -56,7 +56,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 2 << 10,
|
BaseMinMemory: 2 << 10,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG8MiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg8MiBV1: Resources{
|
||||||
MaxMemory: 8 << 20,
|
MaxMemory: 8 << 20,
|
||||||
MinMemory: 8 << 20,
|
MinMemory: 8 << 20,
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
sealtasks.TTPreCommit1: {
|
sealtasks.TTPreCommit1: {
|
||||||
abi.RegisteredProof_StackedDRG64GiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg64GiBV1: Resources{
|
||||||
MaxMemory: 128 << 30,
|
MaxMemory: 128 << 30,
|
||||||
MinMemory: 96 << 30,
|
MinMemory: 96 << 30,
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 60 << 30,
|
BaseMinMemory: 60 << 30,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG32GiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg32GiBV1: Resources{
|
||||||
MaxMemory: 64 << 30,
|
MaxMemory: 64 << 30,
|
||||||
MinMemory: 48 << 30,
|
MinMemory: 48 << 30,
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 30 << 30,
|
BaseMinMemory: 30 << 30,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG512MiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg512MiBV1: Resources{
|
||||||
MaxMemory: 3 << 29, // 1.5G
|
MaxMemory: 3 << 29, // 1.5G
|
||||||
MinMemory: 1 << 30,
|
MinMemory: 1 << 30,
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 1 << 30,
|
BaseMinMemory: 1 << 30,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG2KiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg2KiBV1: Resources{
|
||||||
MaxMemory: 2 << 10,
|
MaxMemory: 2 << 10,
|
||||||
MinMemory: 2 << 10,
|
MinMemory: 2 << 10,
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 2 << 10,
|
BaseMinMemory: 2 << 10,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG8MiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg8MiBV1: Resources{
|
||||||
MaxMemory: 8 << 20,
|
MaxMemory: 8 << 20,
|
||||||
MinMemory: 8 << 20,
|
MinMemory: 8 << 20,
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
sealtasks.TTPreCommit2: {
|
sealtasks.TTPreCommit2: {
|
||||||
abi.RegisteredProof_StackedDRG64GiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg64GiBV1: Resources{
|
||||||
MaxMemory: 64 << 30,
|
MaxMemory: 64 << 30,
|
||||||
MinMemory: 64 << 30,
|
MinMemory: 64 << 30,
|
||||||
|
|
||||||
@ -117,7 +117,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 60 << 30,
|
BaseMinMemory: 60 << 30,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG32GiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg32GiBV1: Resources{
|
||||||
MaxMemory: 32 << 30,
|
MaxMemory: 32 << 30,
|
||||||
MinMemory: 32 << 30,
|
MinMemory: 32 << 30,
|
||||||
|
|
||||||
@ -126,7 +126,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 30 << 30,
|
BaseMinMemory: 30 << 30,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG512MiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg512MiBV1: Resources{
|
||||||
MaxMemory: 3 << 29, // 1.5G
|
MaxMemory: 3 << 29, // 1.5G
|
||||||
MinMemory: 1 << 30,
|
MinMemory: 1 << 30,
|
||||||
|
|
||||||
@ -134,7 +134,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 1 << 30,
|
BaseMinMemory: 1 << 30,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG2KiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg2KiBV1: Resources{
|
||||||
MaxMemory: 2 << 10,
|
MaxMemory: 2 << 10,
|
||||||
MinMemory: 2 << 10,
|
MinMemory: 2 << 10,
|
||||||
|
|
||||||
@ -142,7 +142,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 2 << 10,
|
BaseMinMemory: 2 << 10,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG8MiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg8MiBV1: Resources{
|
||||||
MaxMemory: 8 << 20,
|
MaxMemory: 8 << 20,
|
||||||
MinMemory: 8 << 20,
|
MinMemory: 8 << 20,
|
||||||
|
|
||||||
@ -152,7 +152,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
sealtasks.TTCommit1: { // Very short (~100ms), so params are very light
|
sealtasks.TTCommit1: { // Very short (~100ms), so params are very light
|
||||||
abi.RegisteredProof_StackedDRG64GiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg64GiBV1: Resources{
|
||||||
MaxMemory: 1 << 30,
|
MaxMemory: 1 << 30,
|
||||||
MinMemory: 1 << 30,
|
MinMemory: 1 << 30,
|
||||||
|
|
||||||
@ -160,7 +160,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 1 << 30,
|
BaseMinMemory: 1 << 30,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG32GiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg32GiBV1: Resources{
|
||||||
MaxMemory: 1 << 30,
|
MaxMemory: 1 << 30,
|
||||||
MinMemory: 1 << 30,
|
MinMemory: 1 << 30,
|
||||||
|
|
||||||
@ -168,7 +168,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 1 << 30,
|
BaseMinMemory: 1 << 30,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG512MiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg512MiBV1: Resources{
|
||||||
MaxMemory: 1 << 30,
|
MaxMemory: 1 << 30,
|
||||||
MinMemory: 1 << 30,
|
MinMemory: 1 << 30,
|
||||||
|
|
||||||
@ -176,7 +176,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 1 << 30,
|
BaseMinMemory: 1 << 30,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG2KiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg2KiBV1: Resources{
|
||||||
MaxMemory: 2 << 10,
|
MaxMemory: 2 << 10,
|
||||||
MinMemory: 2 << 10,
|
MinMemory: 2 << 10,
|
||||||
|
|
||||||
@ -184,7 +184,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 2 << 10,
|
BaseMinMemory: 2 << 10,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG8MiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg8MiBV1: Resources{
|
||||||
MaxMemory: 8 << 20,
|
MaxMemory: 8 << 20,
|
||||||
MinMemory: 8 << 20,
|
MinMemory: 8 << 20,
|
||||||
|
|
||||||
@ -194,7 +194,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
sealtasks.TTCommit2: {
|
sealtasks.TTCommit2: {
|
||||||
abi.RegisteredProof_StackedDRG64GiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg64GiBV1: Resources{
|
||||||
MaxMemory: 260 << 30, // TODO: Confirm
|
MaxMemory: 260 << 30, // TODO: Confirm
|
||||||
MinMemory: 60 << 30,
|
MinMemory: 60 << 30,
|
||||||
|
|
||||||
@ -203,7 +203,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 64 << 30, // params
|
BaseMinMemory: 64 << 30, // params
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG32GiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg32GiBV1: Resources{
|
||||||
MaxMemory: 150 << 30, // TODO: ~30G of this should really be BaseMaxMemory
|
MaxMemory: 150 << 30, // TODO: ~30G of this should really be BaseMaxMemory
|
||||||
MinMemory: 30 << 30,
|
MinMemory: 30 << 30,
|
||||||
|
|
||||||
@ -212,7 +212,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 32 << 30, // params
|
BaseMinMemory: 32 << 30, // params
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG512MiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg512MiBV1: Resources{
|
||||||
MaxMemory: 3 << 29, // 1.5G
|
MaxMemory: 3 << 29, // 1.5G
|
||||||
MinMemory: 1 << 30,
|
MinMemory: 1 << 30,
|
||||||
|
|
||||||
@ -221,7 +221,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 10 << 30,
|
BaseMinMemory: 10 << 30,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG2KiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg2KiBV1: Resources{
|
||||||
MaxMemory: 2 << 10,
|
MaxMemory: 2 << 10,
|
||||||
MinMemory: 2 << 10,
|
MinMemory: 2 << 10,
|
||||||
|
|
||||||
@ -230,7 +230,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 2 << 10,
|
BaseMinMemory: 2 << 10,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG8MiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg8MiBV1: Resources{
|
||||||
MaxMemory: 8 << 20,
|
MaxMemory: 8 << 20,
|
||||||
MinMemory: 8 << 20,
|
MinMemory: 8 << 20,
|
||||||
|
|
||||||
@ -241,7 +241,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
sealtasks.TTFetch: {
|
sealtasks.TTFetch: {
|
||||||
abi.RegisteredProof_StackedDRG64GiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg64GiBV1: Resources{
|
||||||
MaxMemory: 1 << 20,
|
MaxMemory: 1 << 20,
|
||||||
MinMemory: 1 << 20,
|
MinMemory: 1 << 20,
|
||||||
|
|
||||||
@ -250,7 +250,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 0,
|
BaseMinMemory: 0,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG32GiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg32GiBV1: Resources{
|
||||||
MaxMemory: 1 << 20,
|
MaxMemory: 1 << 20,
|
||||||
MinMemory: 1 << 20,
|
MinMemory: 1 << 20,
|
||||||
|
|
||||||
@ -259,7 +259,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 0,
|
BaseMinMemory: 0,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG512MiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg512MiBV1: Resources{
|
||||||
MaxMemory: 1 << 20,
|
MaxMemory: 1 << 20,
|
||||||
MinMemory: 1 << 20,
|
MinMemory: 1 << 20,
|
||||||
|
|
||||||
@ -268,7 +268,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 0,
|
BaseMinMemory: 0,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG2KiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg2KiBV1: Resources{
|
||||||
MaxMemory: 1 << 20,
|
MaxMemory: 1 << 20,
|
||||||
MinMemory: 1 << 20,
|
MinMemory: 1 << 20,
|
||||||
|
|
||||||
@ -277,7 +277,7 @@ var ResourceTable = map[sealtasks.TaskType]map[abi.RegisteredProof]Resources{
|
|||||||
|
|
||||||
BaseMinMemory: 0,
|
BaseMinMemory: 0,
|
||||||
},
|
},
|
||||||
abi.RegisteredProof_StackedDRG8MiBSeal: Resources{
|
abi.RegisteredSealProof_StackedDrg8MiBV1: Resources{
|
||||||
MaxMemory: 1 << 20,
|
MaxMemory: 1 << 20,
|
||||||
MinMemory: 1 << 20,
|
MinMemory: 1 << 20,
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ import (
|
|||||||
type readonlyProvider struct {
|
type readonlyProvider struct {
|
||||||
index stores.SectorIndex
|
index stores.SectorIndex
|
||||||
stor *stores.Local
|
stor *stores.Local
|
||||||
spt abi.RegisteredProof
|
spt abi.RegisteredSealProof
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *readonlyProvider) AcquireSector(ctx context.Context, id abi.SectorID, existing stores.SectorFileType, allocate stores.SectorFileType, sealing stores.PathType) (stores.SectorPaths, func(), error) {
|
func (l *readonlyProvider) AcquireSector(ctx context.Context, id abi.SectorID, existing stores.SectorFileType, allocate stores.SectorFileType, sealing stores.PathType) (stores.SectorPaths, func(), error) {
|
||||||
|
14
sched.go
14
sched.go
@ -20,13 +20,13 @@ const mib = 1 << 20
|
|||||||
type WorkerAction func(ctx context.Context, w Worker) error
|
type WorkerAction func(ctx context.Context, w Worker) error
|
||||||
|
|
||||||
type WorkerSelector interface {
|
type WorkerSelector interface {
|
||||||
Ok(ctx context.Context, task sealtasks.TaskType, spt abi.RegisteredProof, a *workerHandle) (bool, error) // true if worker is acceptable for performing a task
|
Ok(ctx context.Context, task sealtasks.TaskType, spt abi.RegisteredSealProof, a *workerHandle) (bool, error) // true if worker is acceptable for performing a task
|
||||||
|
|
||||||
Cmp(ctx context.Context, task sealtasks.TaskType, a, b *workerHandle) (bool, error) // true if a is preferred over b
|
Cmp(ctx context.Context, task sealtasks.TaskType, a, b *workerHandle) (bool, error) // true if a is preferred over b
|
||||||
}
|
}
|
||||||
|
|
||||||
type scheduler struct {
|
type scheduler struct {
|
||||||
spt abi.RegisteredProof
|
spt abi.RegisteredSealProof
|
||||||
|
|
||||||
workersLk sync.Mutex
|
workersLk sync.Mutex
|
||||||
nextWorker WorkerID
|
nextWorker WorkerID
|
||||||
@ -44,7 +44,7 @@ type scheduler struct {
|
|||||||
schedQueue *requestQueue
|
schedQueue *requestQueue
|
||||||
}
|
}
|
||||||
|
|
||||||
func newScheduler(spt abi.RegisteredProof) *scheduler {
|
func newScheduler(spt abi.RegisteredSealProof) *scheduler {
|
||||||
return &scheduler{
|
return &scheduler{
|
||||||
spt: spt,
|
spt: spt,
|
||||||
|
|
||||||
@ -321,7 +321,7 @@ func (sh *scheduler) assignWorker(wid WorkerID, w *workerHandle, req *workerRequ
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *activeResources) withResources(spt abi.RegisteredProof, id WorkerID, wr storiface.WorkerResources, r Resources, locker sync.Locker, cb func() error) error {
|
func (a *activeResources) withResources(spt abi.RegisteredSealProof, id WorkerID, wr storiface.WorkerResources, r Resources, locker sync.Locker, cb func() error) error {
|
||||||
for !canHandleRequest(r, spt, id, wr, a) {
|
for !canHandleRequest(r, spt, id, wr, a) {
|
||||||
if a.cond == nil {
|
if a.cond == nil {
|
||||||
a.cond = sync.NewCond(locker)
|
a.cond = sync.NewCond(locker)
|
||||||
@ -367,7 +367,7 @@ func (a *activeResources) free(wr storiface.WorkerResources, r Resources) {
|
|||||||
a.memUsedMax -= r.MaxMemory
|
a.memUsedMax -= r.MaxMemory
|
||||||
}
|
}
|
||||||
|
|
||||||
func canHandleRequest(needRes Resources, spt abi.RegisteredProof, wid WorkerID, res storiface.WorkerResources, active *activeResources) bool {
|
func canHandleRequest(needRes Resources, spt abi.RegisteredSealProof, wid WorkerID, res storiface.WorkerResources, active *activeResources) bool {
|
||||||
|
|
||||||
// TODO: dedupe needRes.BaseMinMemory per task type (don't add if that task is already running)
|
// TODO: dedupe needRes.BaseMinMemory per task type (don't add if that task is already running)
|
||||||
minNeedMem := res.MemReserved + active.memUsedMin + needRes.MinMemory + needRes.BaseMinMemory
|
minNeedMem := res.MemReserved + active.memUsedMin + needRes.MinMemory + needRes.BaseMinMemory
|
||||||
@ -377,10 +377,10 @@ func canHandleRequest(needRes Resources, spt abi.RegisteredProof, wid WorkerID,
|
|||||||
}
|
}
|
||||||
|
|
||||||
maxNeedMem := res.MemReserved + active.memUsedMax + needRes.MaxMemory + needRes.BaseMinMemory
|
maxNeedMem := res.MemReserved + active.memUsedMax + needRes.MaxMemory + needRes.BaseMinMemory
|
||||||
if spt == abi.RegisteredProof_StackedDRG32GiBSeal {
|
if spt == abi.RegisteredSealProof_StackedDrg32GiBV1 {
|
||||||
maxNeedMem += MaxCachingOverhead
|
maxNeedMem += MaxCachingOverhead
|
||||||
}
|
}
|
||||||
if spt == abi.RegisteredProof_StackedDRG64GiBSeal {
|
if spt == abi.RegisteredSealProof_StackedDrg64GiBV1 {
|
||||||
maxNeedMem += MaxCachingOverhead * 2 // ewwrhmwh
|
maxNeedMem += MaxCachingOverhead * 2 // ewwrhmwh
|
||||||
}
|
}
|
||||||
if maxNeedMem > res.MemSwap+res.MemPhysical {
|
if maxNeedMem > res.MemSwap+res.MemPhysical {
|
||||||
|
@ -25,7 +25,7 @@ func newAllocSelector(ctx context.Context, index stores.SectorIndex, alloc store
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *allocSelector) Ok(ctx context.Context, task sealtasks.TaskType, spt abi.RegisteredProof, whnd *workerHandle) (bool, error) {
|
func (s *allocSelector) Ok(ctx context.Context, task sealtasks.TaskType, spt abi.RegisteredSealProof, whnd *workerHandle) (bool, error) {
|
||||||
tasks, err := whnd.w.TaskTypes(ctx)
|
tasks, err := whnd.w.TaskTypes(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, xerrors.Errorf("getting supported worker task types: %w", err)
|
return false, xerrors.Errorf("getting supported worker task types: %w", err)
|
||||||
|
@ -26,7 +26,7 @@ func newExistingSelector(ctx context.Context, index stores.SectorIndex, sector a
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *existingSelector) Ok(ctx context.Context, task sealtasks.TaskType, spt abi.RegisteredProof, whnd *workerHandle) (bool, error) {
|
func (s *existingSelector) Ok(ctx context.Context, task sealtasks.TaskType, spt abi.RegisteredSealProof, whnd *workerHandle) (bool, error) {
|
||||||
tasks, err := whnd.w.TaskTypes(ctx)
|
tasks, err := whnd.w.TaskTypes(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, xerrors.Errorf("getting supported worker task types: %w", err)
|
return false, xerrors.Errorf("getting supported worker task types: %w", err)
|
||||||
|
@ -19,7 +19,7 @@ func newTaskSelector() *taskSelector {
|
|||||||
return &taskSelector{}
|
return &taskSelector{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *taskSelector) Ok(ctx context.Context, task sealtasks.TaskType, spt abi.RegisteredProof, whnd *workerHandle) (bool, error) {
|
func (s *taskSelector) Ok(ctx context.Context, task sealtasks.TaskType, spt abi.RegisteredSealProof, whnd *workerHandle) (bool, error) {
|
||||||
tasks, err := whnd.w.TaskTypes(ctx)
|
tasks, err := whnd.w.TaskTypes(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, xerrors.Errorf("getting supported worker task types: %w", err)
|
return false, xerrors.Errorf("getting supported worker task types: %w", err)
|
||||||
|
@ -50,7 +50,7 @@ func (t SectorFileType) Has(singleType SectorFileType) bool {
|
|||||||
return t&singleType == singleType
|
return t&singleType == singleType
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t SectorFileType) SealSpaceUse(spt abi.RegisteredProof) (uint64, error) {
|
func (t SectorFileType) SealSpaceUse(spt abi.RegisteredSealProof) (uint64, error) {
|
||||||
ssize, err := spt.SectorSize()
|
ssize, err := spt.SectorSize()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, xerrors.Errorf("getting sector size: %w", err)
|
return 0, xerrors.Errorf("getting sector size: %w", err)
|
||||||
|
@ -58,7 +58,7 @@ type SectorIndex interface { // part of storage-miner api
|
|||||||
StorageDropSector(ctx context.Context, storageId ID, s abi.SectorID, ft SectorFileType) error
|
StorageDropSector(ctx context.Context, storageId ID, s abi.SectorID, ft SectorFileType) error
|
||||||
StorageFindSector(ctx context.Context, sector abi.SectorID, ft SectorFileType, allowFetch bool) ([]SectorStorageInfo, error)
|
StorageFindSector(ctx context.Context, sector abi.SectorID, ft SectorFileType, allowFetch bool) ([]SectorStorageInfo, error)
|
||||||
|
|
||||||
StorageBestAlloc(ctx context.Context, allocate SectorFileType, spt abi.RegisteredProof, pathType PathType) ([]StorageInfo, error)
|
StorageBestAlloc(ctx context.Context, allocate SectorFileType, spt abi.RegisteredSealProof, pathType PathType) ([]StorageInfo, error)
|
||||||
|
|
||||||
// atomically acquire locks on all sector file types. close ctx to unlock
|
// atomically acquire locks on all sector file types. close ctx to unlock
|
||||||
StorageLock(ctx context.Context, sector abi.SectorID, read SectorFileType, write SectorFileType) error
|
StorageLock(ctx context.Context, sector abi.SectorID, read SectorFileType, write SectorFileType) error
|
||||||
@ -342,7 +342,7 @@ func (i *Index) StorageInfo(ctx context.Context, id ID) (StorageInfo, error) {
|
|||||||
return *si.info, nil
|
return *si.info, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Index) StorageBestAlloc(ctx context.Context, allocate SectorFileType, spt abi.RegisteredProof, pathType PathType) ([]StorageInfo, error) {
|
func (i *Index) StorageBestAlloc(ctx context.Context, allocate SectorFileType, spt abi.RegisteredSealProof, pathType PathType) ([]StorageInfo, error) {
|
||||||
i.lk.RLock()
|
i.lk.RLock()
|
||||||
defer i.lk.RUnlock()
|
defer i.lk.RUnlock()
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Store interface {
|
type Store interface {
|
||||||
AcquireSector(ctx context.Context, s abi.SectorID, spt abi.RegisteredProof, existing SectorFileType, allocate SectorFileType, sealing PathType, op AcquireMode) (paths SectorPaths, stores SectorPaths, err error)
|
AcquireSector(ctx context.Context, s abi.SectorID, spt abi.RegisteredSealProof, existing SectorFileType, allocate SectorFileType, sealing PathType, op AcquireMode) (paths SectorPaths, stores SectorPaths, err error)
|
||||||
Remove(ctx context.Context, s abi.SectorID, types SectorFileType, force bool) error
|
Remove(ctx context.Context, s abi.SectorID, types SectorFileType, force bool) error
|
||||||
|
|
||||||
// like remove, but doesn't remove the primary sector copy, nor the last
|
// like remove, but doesn't remove the primary sector copy, nor the last
|
||||||
@ -32,7 +32,7 @@ type Store interface {
|
|||||||
RemoveCopies(ctx context.Context, s abi.SectorID, types SectorFileType) error
|
RemoveCopies(ctx context.Context, s abi.SectorID, types SectorFileType) error
|
||||||
|
|
||||||
// move sectors into storage
|
// move sectors into storage
|
||||||
MoveStorage(ctx context.Context, s abi.SectorID, spt abi.RegisteredProof, types SectorFileType) error
|
MoveStorage(ctx context.Context, s abi.SectorID, spt abi.RegisteredSealProof, types SectorFileType) error
|
||||||
|
|
||||||
FsStat(ctx context.Context, id ID) (FsStat, error)
|
FsStat(ctx context.Context, id ID) (FsStat, error)
|
||||||
}
|
}
|
||||||
|
@ -197,7 +197,7 @@ func (st *Local) reportHealth(ctx context.Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (st *Local) AcquireSector(ctx context.Context, sid abi.SectorID, spt abi.RegisteredProof, existing SectorFileType, allocate SectorFileType, pathType PathType, op AcquireMode) (SectorPaths, SectorPaths, error) {
|
func (st *Local) AcquireSector(ctx context.Context, sid abi.SectorID, spt abi.RegisteredSealProof, existing SectorFileType, allocate SectorFileType, pathType PathType, op AcquireMode) (SectorPaths, SectorPaths, error) {
|
||||||
if existing|allocate != existing^allocate {
|
if existing|allocate != existing^allocate {
|
||||||
return SectorPaths{}, SectorPaths{}, xerrors.New("can't both find and allocate a sector")
|
return SectorPaths{}, SectorPaths{}, xerrors.New("can't both find and allocate a sector")
|
||||||
}
|
}
|
||||||
@ -397,7 +397,7 @@ func (st *Local) removeSector(ctx context.Context, sid abi.SectorID, typ SectorF
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (st *Local) MoveStorage(ctx context.Context, s abi.SectorID, spt abi.RegisteredProof, types SectorFileType) error {
|
func (st *Local) MoveStorage(ctx context.Context, s abi.SectorID, spt abi.RegisteredSealProof, types SectorFileType) error {
|
||||||
dest, destIds, err := st.AcquireSector(ctx, s, spt, FTNone, types, false, AcquireMove)
|
dest, destIds, err := st.AcquireSector(ctx, s, spt, FTNone, types, false, AcquireMove)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return xerrors.Errorf("acquire dest storage: %w", err)
|
return xerrors.Errorf("acquire dest storage: %w", err)
|
||||||
|
@ -50,7 +50,7 @@ func NewRemote(local *Local, index SectorIndex, auth http.Header) *Remote {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Remote) AcquireSector(ctx context.Context, s abi.SectorID, spt abi.RegisteredProof, existing SectorFileType, allocate SectorFileType, pathType PathType, op AcquireMode) (SectorPaths, SectorPaths, error) {
|
func (r *Remote) AcquireSector(ctx context.Context, s abi.SectorID, spt abi.RegisteredSealProof, existing SectorFileType, allocate SectorFileType, pathType PathType, op AcquireMode) (SectorPaths, SectorPaths, error) {
|
||||||
if existing|allocate != existing^allocate {
|
if existing|allocate != existing^allocate {
|
||||||
return SectorPaths{}, SectorPaths{}, xerrors.New("can't both find and allocate a sector")
|
return SectorPaths{}, SectorPaths{}, xerrors.New("can't both find and allocate a sector")
|
||||||
}
|
}
|
||||||
@ -119,7 +119,7 @@ func (r *Remote) AcquireSector(ctx context.Context, s abi.SectorID, spt abi.Regi
|
|||||||
return paths, stores, nil
|
return paths, stores, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Remote) acquireFromRemote(ctx context.Context, s abi.SectorID, spt abi.RegisteredProof, fileType SectorFileType, pathType PathType, op AcquireMode) (string, ID, string, error) {
|
func (r *Remote) acquireFromRemote(ctx context.Context, s abi.SectorID, spt abi.RegisteredSealProof, fileType SectorFileType, pathType PathType, op AcquireMode) (string, ID, string, error) {
|
||||||
si, err := r.index.StorageFindSector(ctx, s, fileType, false)
|
si, err := r.index.StorageFindSector(ctx, s, fileType, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", "", err
|
return "", "", "", err
|
||||||
@ -210,7 +210,7 @@ func (r *Remote) fetch(ctx context.Context, url, outname string) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Remote) MoveStorage(ctx context.Context, s abi.SectorID, spt abi.RegisteredProof, types SectorFileType) error {
|
func (r *Remote) MoveStorage(ctx context.Context, s abi.SectorID, spt abi.RegisteredSealProof, types SectorFileType) error {
|
||||||
// Make sure we have the data local
|
// Make sure we have the data local
|
||||||
_, _, err := r.AcquireSector(ctx, s, spt, types, FTNone, PathStorage, AcquireMove)
|
_, _, err := r.AcquireSector(ctx, s, spt, types, FTNone, PathStorage, AcquireMove)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -94,7 +94,7 @@ func (t *testWorker) Paths(ctx context.Context) ([]stores.StoragePath, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *testWorker) Info(ctx context.Context) (storiface.WorkerInfo, error) {
|
func (t *testWorker) Info(ctx context.Context) (storiface.WorkerInfo, error) {
|
||||||
res := ResourceTable[sealtasks.TTPreCommit2][abi.RegisteredProof_StackedDRG2KiBSeal]
|
res := ResourceTable[sealtasks.TTPreCommit2][abi.RegisteredSealProof_StackedDrg2KiBV1]
|
||||||
|
|
||||||
return storiface.WorkerInfo{
|
return storiface.WorkerInfo{
|
||||||
Hostname: "testworkerer",
|
Hostname: "testworkerer",
|
||||||
|
@ -20,7 +20,7 @@ func TestComms(t *testing.T) {
|
|||||||
var expPieceComms [zerocomm.Levels - zerocomm.Skip]cid.Cid
|
var expPieceComms [zerocomm.Levels - zerocomm.Skip]cid.Cid
|
||||||
|
|
||||||
{
|
{
|
||||||
l2, err := ffiwrapper.GeneratePieceCIDFromFile(abi.RegisteredProof_StackedDRG2KiBPoSt, bytes.NewReader(make([]byte, 127)), 127)
|
l2, err := ffiwrapper.GeneratePieceCIDFromFile(abi.RegisteredSealProof_StackedDrg2KiBV1, bytes.NewReader(make([]byte, 127)), 127)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -33,7 +33,7 @@ func TestComms(t *testing.T) {
|
|||||||
fmt.Println(i, sz)
|
fmt.Println(i, sz)
|
||||||
r := io.LimitReader(&NullReader{}, int64(sz))
|
r := io.LimitReader(&NullReader{}, int64(sz))
|
||||||
|
|
||||||
expPieceComms[i], err = ffiwrapper.GeneratePieceCIDFromFile(abi.RegisteredProof_StackedDRG2KiBPoSt, r, sz)
|
expPieceComms[i], err = ffiwrapper.GeneratePieceCIDFromFile(abi.RegisteredSealProof_StackedDrg2KiBV1, r, sz)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -59,7 +59,7 @@ func TestCommsSmall(t *testing.T) {
|
|||||||
lvls := len(expPieceComms) + zerocomm.Skip
|
lvls := len(expPieceComms) + zerocomm.Skip
|
||||||
|
|
||||||
{
|
{
|
||||||
l2, err := ffiwrapper.GeneratePieceCIDFromFile(abi.RegisteredProof_StackedDRG2KiBPoSt, bytes.NewReader(make([]byte, 127)), 127)
|
l2, err := ffiwrapper.GeneratePieceCIDFromFile(abi.RegisteredSealProof_StackedDrg2KiBV1, bytes.NewReader(make([]byte, 127)), 127)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -72,7 +72,7 @@ func TestCommsSmall(t *testing.T) {
|
|||||||
fmt.Println(i, sz)
|
fmt.Println(i, sz)
|
||||||
r := io.LimitReader(&NullReader{}, int64(sz))
|
r := io.LimitReader(&NullReader{}, int64(sz))
|
||||||
|
|
||||||
expPieceComms[i], err = ffiwrapper.GeneratePieceCIDFromFile(abi.RegisteredProof_StackedDRG2KiBPoSt, r, sz)
|
expPieceComms[i], err = ffiwrapper.GeneratePieceCIDFromFile(abi.RegisteredSealProof_StackedDrg2KiBV1, r, sz)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -94,7 +94,7 @@ func TestCommsSmall(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestForSise(t *testing.T) {
|
func TestForSise(t *testing.T) {
|
||||||
exp, err := ffiwrapper.GeneratePieceCIDFromFile(abi.RegisteredProof_StackedDRG2KiBPoSt, bytes.NewReader(make([]byte, 1016)), 1016)
|
exp, err := ffiwrapper.GeneratePieceCIDFromFile(abi.RegisteredSealProof_StackedDrg2KiBV1, bytes.NewReader(make([]byte, 1016)), 1016)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user