Skip to content

Commit

Permalink
ulimit should not depend on build
Browse files Browse the repository at this point in the history
  • Loading branch information
snadrus committed Jul 12, 2024
1 parent 20947d2 commit 21ca683
Show file tree
Hide file tree
Showing 20 changed files with 70 additions and 54 deletions.
6 changes: 6 additions & 0 deletions build/buildconstants/limits.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package buildconstants

var (
DefaultFDLimit uint64 = 16 << 10
MinerFDLimit uint64 = 100_000
)
5 changes: 3 additions & 2 deletions build/limits.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package build

import "github.com/filecoin-project/lotus/build/buildconstants"

var (
DefaultFDLimit uint64 = 16 << 10
MinerFDLimit uint64 = 100_000
MinerFDLimit uint64 = buildconstants.MinerFDLimit
)
3 changes: 2 additions & 1 deletion chain/consensus/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
"github.com/filecoin-project/lotus/api"
bstore "github.com/filecoin-project/lotus/blockstore"
"github.com/filecoin-project/lotus/build"
"github.com/filecoin-project/lotus/build/buildconstants"
"github.com/filecoin-project/lotus/chain/actors/builtin"
"github.com/filecoin-project/lotus/chain/state"
"github.com/filecoin-project/lotus/chain/stmgr"
Expand Down Expand Up @@ -225,7 +226,7 @@ func checkBlockMessages(ctx context.Context, sm *stmgr.StateManager, cs *store.C
// ValidForBlockInclusion checks if any single message does not exceed BlockGasLimit
// So below is overflow safe
sumGasLimit += m.GasLimit
if sumGasLimit > build.BlockGasLimit {
if sumGasLimit > buildconstants.BlockGasLimit {
return xerrors.Errorf("block gas limit exceeded")
}

Expand Down
3 changes: 2 additions & 1 deletion chain/consensus/compute_state.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import (

"github.com/filecoin-project/lotus/blockstore"
"github.com/filecoin-project/lotus/build"
"github.com/filecoin-project/lotus/build/buildconstants"
"github.com/filecoin-project/lotus/chain/actors/builtin"
"github.com/filecoin-project/lotus/chain/actors/builtin/cron"
"github.com/filecoin-project/lotus/chain/actors/builtin/reward"
Expand Down Expand Up @@ -129,7 +130,7 @@ func (t *TipSetExecutor) ApplyBlocks(ctx context.Context,
Value: types.NewInt(0),
GasFeeCap: types.NewInt(0),
GasPremium: types.NewInt(0),
GasLimit: build.BlockGasLimit * 10000, // Make super sure this is never too little
GasLimit: buildconstants.BlockGasLimit * 10000, // Make super sure this is never too little
Method: cron.Methods.EpochTick,
Params: nil,
}
Expand Down
3 changes: 2 additions & 1 deletion chain/messagepool/repub.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/filecoin-project/go-address"

"github.com/filecoin-project/lotus/build"
"github.com/filecoin-project/lotus/build/buildconstants"
"github.com/filecoin-project/lotus/chain/messagepool/gasguess"
"github.com/filecoin-project/lotus/chain/types"
)
Expand Down Expand Up @@ -81,7 +82,7 @@ func (mp *MessagePool) republishPendingMessages(ctx context.Context) error {
return chains[i].Before(chains[j])
})

gasLimit := build.BlockGasLimit
gasLimit := buildconstants.BlockGasLimit
minGas := int64(gasguess.MinGas)
var msgs []*types.SignedMessage
loop:
Expand Down
11 changes: 6 additions & 5 deletions chain/messagepool/selection.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@ import (
"github.com/filecoin-project/go-state-types/crypto"

"github.com/filecoin-project/lotus/build"
"github.com/filecoin-project/lotus/build/buildconstants"
"github.com/filecoin-project/lotus/chain/messagepool/gasguess"
"github.com/filecoin-project/lotus/chain/types"
"github.com/filecoin-project/lotus/chain/vm"
)

var bigBlockGasLimit = big.NewInt(build.BlockGasLimit)
var bigBlockGasLimit = big.NewInt(buildconstants.BlockGasLimit)

const MaxBlocks = 15

Expand Down Expand Up @@ -268,7 +269,7 @@ func (mp *MessagePool) selectMessagesOptimal(ctx context.Context, curTs, ts *typ
nextChain := 0
partitions := make([][]*msgChain, MaxBlocks)
for i := 0; i < MaxBlocks && nextChain < len(chains); i++ {
gasLimit := build.BlockGasLimit
gasLimit := buildconstants.BlockGasLimit
msgLimit := build.BlockMessageLimit
for nextChain < len(chains) {
chain := chains[nextChain]
Expand Down Expand Up @@ -600,7 +601,7 @@ func (mp *MessagePool) selectPriorityMessages(ctx context.Context, pending map[a
mpCfg := mp.getConfig()
result := &selectedMessages{
msgs: make([]*types.SignedMessage, 0, mpCfg.SizeLimitLow),
gasLimit: build.BlockGasLimit,
gasLimit: buildconstants.BlockGasLimit,
blsLimit: cbg.MaxLength,
secpLimit: cbg.MaxLength,
}
Expand Down Expand Up @@ -762,7 +763,7 @@ func (*MessagePool) getGasReward(msg *types.SignedMessage, baseFee types.BigInt)
}

func (*MessagePool) getGasPerf(gasReward *big.Int, gasLimit int64) float64 {
// gasPerf = gasReward * build.BlockGasLimit / gasLimit
// gasPerf = gasReward * buildconstants.BlockGasLimit / gasLimit
a := new(big.Rat).SetInt(new(big.Int).Mul(gasReward, bigBlockGasLimit))
b := big.NewRat(1, gasLimit)
c := new(big.Rat).Mul(a, b)
Expand Down Expand Up @@ -822,7 +823,7 @@ func (mp *MessagePool) createMessageChains(actor address.Address, mset map[uint6
}

gasLimit += m.Message.GasLimit
if gasLimit > build.BlockGasLimit {
if gasLimit > buildconstants.BlockGasLimit {
break
}

Expand Down
37 changes: 19 additions & 18 deletions chain/messagepool/selection_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import (

"github.com/filecoin-project/lotus/api"
"github.com/filecoin-project/lotus/build"
"github.com/filecoin-project/lotus/build/buildconstants"
"github.com/filecoin-project/lotus/chain/consensus/filcns"
"github.com/filecoin-project/lotus/chain/messagepool/gasguess"
"github.com/filecoin-project/lotus/chain/types"
Expand Down Expand Up @@ -267,7 +268,7 @@ func TestMessageChains(t *testing.T) {

// test6: one more message than what can fit in a block according to gas limit, with increasing
// gasPerf; it should create a single chain with the max messages
maxMessages := int(build.BlockGasLimit / gasLimit)
maxMessages := int(buildconstants.BlockGasLimit / gasLimit)
nMessages := maxMessages + 1

mset = make(map[uint64]*types.SignedMessage)
Expand Down Expand Up @@ -571,7 +572,7 @@ func TestMessageSelectionTrimmingGas(t *testing.T) {
tma.setBalance(a2, 1) // in FIL

// make many small chains for the two actors
nMessages := int((build.BlockGasLimit / gasLimit) + 1)
nMessages := int((buildconstants.BlockGasLimit / gasLimit) + 1)
for i := 0; i < nMessages; i++ {
bias := (nMessages - i) / 3
m := makeTestMessage(w1, a1, a2, uint64(i), gasLimit, uint64(1+i%3+bias))
Expand All @@ -585,7 +586,7 @@ func TestMessageSelectionTrimmingGas(t *testing.T) {
t.Fatal(err)
}

expected := int(build.BlockGasLimit / gasLimit)
expected := int(buildconstants.BlockGasLimit / gasLimit)
if len(msgs) != expected {
t.Fatalf("expected %d messages, but got %d", expected, len(msgs))
}
Expand All @@ -594,7 +595,7 @@ func TestMessageSelectionTrimmingGas(t *testing.T) {
for _, m := range msgs {
mGasLimit += m.Message.GasLimit
}
if mGasLimit > build.BlockGasLimit {
if mGasLimit > buildconstants.BlockGasLimit {
t.Fatal("selected messages gas limit exceeds block gas limit!")
}

Expand Down Expand Up @@ -641,7 +642,7 @@ func TestMessageSelectionTrimmingMsgsBasic(t *testing.T) {
for _, m := range msgs {
mGasLimit += m.Message.GasLimit
}
if mGasLimit > build.BlockGasLimit {
if mGasLimit > buildconstants.BlockGasLimit {
t.Fatal("selected messages gas limit exceeds block gas limit!")
}

Expand Down Expand Up @@ -700,7 +701,7 @@ func TestMessageSelectionTrimmingMsgsTwoSendersBasic(t *testing.T) {
counts[m.Signature.Type]++
}

if mGasLimit > build.BlockGasLimit {
if mGasLimit > buildconstants.BlockGasLimit {
t.Fatal("selected messages gas limit exceeds block gas limit!")
}

Expand Down Expand Up @@ -781,7 +782,7 @@ func TestMessageSelectionTrimmingMsgsTwoSendersAdvanced(t *testing.T) {
counts[m.Signature.Type]++
}

if mGasLimit > build.BlockGasLimit {
if mGasLimit > buildconstants.BlockGasLimit {
t.Fatal("selected messages gas limit exceeds block gas limit!")
}

Expand Down Expand Up @@ -912,7 +913,7 @@ func TestPriorityMessageSelection2(t *testing.T) {

mp.cfg.PriorityAddrs = []address.Address{a1}

nMessages := int(2 * build.BlockGasLimit / gasLimit)
nMessages := int(2 * buildconstants.BlockGasLimit / gasLimit)
for i := 0; i < nMessages; i++ {
bias := (nMessages - i) / 3
m := makeTestMessage(w1, a1, a2, uint64(i), gasLimit, uint64(1+i%3+bias))
Expand All @@ -926,7 +927,7 @@ func TestPriorityMessageSelection2(t *testing.T) {
t.Fatal(err)
}

expectedMsgs := int(build.BlockGasLimit / gasLimit)
expectedMsgs := int(buildconstants.BlockGasLimit / gasLimit)
if len(msgs) != expectedMsgs {
t.Fatalf("expected %d messages but got %d", expectedMsgs, len(msgs))
}
Expand Down Expand Up @@ -1077,7 +1078,7 @@ func TestOptimalMessageSelection1(t *testing.T) {
tma.setBalance(a1, 1) // in FIL
tma.setBalance(a2, 1) // in FIL

nMessages := int(10 * build.BlockGasLimit / gasLimit)
nMessages := int(10 * buildconstants.BlockGasLimit / gasLimit)
for i := 0; i < nMessages; i++ {
bias := (nMessages - i) / 3
m := makeTestMessage(w1, a1, a2, uint64(i), gasLimit, uint64(1+i%3+bias))
Expand All @@ -1089,7 +1090,7 @@ func TestOptimalMessageSelection1(t *testing.T) {
t.Fatal(err)
}

expectedMsgs := int(build.BlockGasLimit / gasLimit)
expectedMsgs := int(buildconstants.BlockGasLimit / gasLimit)
if len(msgs) != expectedMsgs {
t.Fatalf("expected %d messages, but got %d", expectedMsgs, len(msgs))
}
Expand Down Expand Up @@ -1146,7 +1147,7 @@ func TestOptimalMessageSelection2(t *testing.T) {
tma.setBalance(a1, 1) // in FIL
tma.setBalance(a2, 1) // in FIL

nMessages := int(5 * build.BlockGasLimit / gasLimit)
nMessages := int(5 * buildconstants.BlockGasLimit / gasLimit)
for i := 0; i < nMessages; i++ {
bias := (nMessages - i) / 3
m := makeTestMessage(w1, a1, a2, uint64(i), gasLimit, uint64(200000+i%3+bias))
Expand All @@ -1160,7 +1161,7 @@ func TestOptimalMessageSelection2(t *testing.T) {
t.Fatal(err)
}

expectedMsgs := int(build.BlockGasLimit / gasLimit)
expectedMsgs := int(buildconstants.BlockGasLimit / gasLimit)
if len(msgs) != expectedMsgs {
t.Fatalf("expected %d messages, but got %d", expectedMsgs, len(msgs))
}
Expand Down Expand Up @@ -1227,7 +1228,7 @@ func TestOptimalMessageSelection3(t *testing.T) {
tma.setBalance(a, 1) // in FIL
}

nMessages := int(build.BlockGasLimit/gasLimit) + 1
nMessages := int(buildconstants.BlockGasLimit/gasLimit) + 1
for i := 0; i < nMessages; i++ {
for j := 0; j < nActors; j++ {
premium := 500000 + 10000*(nActors-j) + (nMessages+2-i)/(30*nActors) + i%3
Expand All @@ -1241,7 +1242,7 @@ func TestOptimalMessageSelection3(t *testing.T) {
t.Fatal(err)
}

expectedMsgs := int(build.BlockGasLimit / gasLimit)
expectedMsgs := int(buildconstants.BlockGasLimit / gasLimit)
if len(msgs) != expectedMsgs {
t.Fatalf("expected %d messages, but got %d", expectedMsgs, len(msgs))
}
Expand Down Expand Up @@ -1308,7 +1309,7 @@ func testCompetitiveMessageSelection(t *testing.T, rng *rand.Rand, getPremium fu
tma.setBalance(a, 1) // in FIL
}

nMessages := 10 * int(build.BlockGasLimit/gasLimit)
nMessages := 10 * int(buildconstants.BlockGasLimit/gasLimit)
t.Log("nMessages", nMessages)
nonces := make([]uint64, nActors)
for i := 0; i < nMessages; i++ {
Expand Down Expand Up @@ -1618,7 +1619,7 @@ readLoop:
}

// do message selection and check block packing
minGasLimit := int64(0.9 * float64(build.BlockGasLimit))
minGasLimit := int64(0.9 * float64(buildconstants.BlockGasLimit))

// greedy first
selected, err := mp.SelectMessages(context.Background(), ts, 1.0)
Expand Down Expand Up @@ -1794,7 +1795,7 @@ readLoop:
}

// do message selection and check block packing
minGasLimit := int64(0.9 * float64(build.BlockGasLimit))
minGasLimit := int64(0.9 * float64(buildconstants.BlockGasLimit))

// greedy first
start := time.Now()
Expand Down
4 changes: 2 additions & 2 deletions chain/stmgr/call.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import (

"github.com/filecoin-project/lotus/api"
"github.com/filecoin-project/lotus/blockstore"
"github.com/filecoin-project/lotus/build"
"github.com/filecoin-project/lotus/build/buildconstants"
"github.com/filecoin-project/lotus/chain/rand"
"github.com/filecoin-project/lotus/chain/state"
"github.com/filecoin-project/lotus/chain/types"
Expand All @@ -44,7 +44,7 @@ func (sm *StateManager) Call(ctx context.Context, msg *types.Message, ts *types.
msg = &msgCopy

if msg.GasLimit == 0 {
msg.GasLimit = build.BlockGasLimit
msg.GasLimit = buildconstants.BlockGasLimit
}
if msg.GasFeeCap == types.EmptyInt {
msg.GasFeeCap = types.NewInt(0)
Expand Down
4 changes: 2 additions & 2 deletions chain/store/basefee_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ func TestBaseFee(t *testing.T) {
{100e6, 0, 5, 87.5e6, 87.5e6},
{100e6, buildconstants.BlockGasTarget, 1, 103.125e6, 100e6},
{100e6, buildconstants.BlockGasTarget * 2, 2, 103.125e6, 100e6},
{100e6, build.BlockGasLimit * 2, 2, 112.5e6, 112.5e6},
{100e6, (build.BlockGasLimit * 15) / 10, 2, 110937500, 106.250e6},
{100e6, buildconstants.BlockGasLimit * 2, 2, 112.5e6, 112.5e6},
{100e6, (buildconstants.BlockGasLimit * 15) / 10, 2, 110937500, 106.250e6},
}

for _, test := range tests {
Expand Down
7 changes: 4 additions & 3 deletions cli/chain.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import (
lapi "github.com/filecoin-project/lotus/api"
"github.com/filecoin-project/lotus/api/v0api"
"github.com/filecoin-project/lotus/build"
"github.com/filecoin-project/lotus/build/buildconstants"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/consensus"
"github.com/filecoin-project/lotus/chain/types"
Expand Down Expand Up @@ -631,7 +632,7 @@ var ChainListCmd = &cli.Command{
tss = otss
for i, ts := range tss {
pbf := ts.Blocks()[0].ParentBaseFee
afmt.Printf("%d: %d blocks (baseFee: %s -> maxFee: %s)\n", ts.Height(), len(ts.Blocks()), ts.Blocks()[0].ParentBaseFee, types.FIL(types.BigMul(pbf, types.NewInt(uint64(build.BlockGasLimit)))))
afmt.Printf("%d: %d blocks (baseFee: %s -> maxFee: %s)\n", ts.Height(), len(ts.Blocks()), ts.Blocks()[0].ParentBaseFee, types.FIL(types.BigMul(pbf, types.NewInt(uint64(buildconstants.BlockGasLimit)))))

for _, b := range ts.Blocks() {
msgs, err := api.ChainGetBlockMessages(ctx, b.Cid())
Expand All @@ -657,7 +658,7 @@ var ChainListCmd = &cli.Command{
avgpremium = big.Div(psum, big.NewInt(int64(lenmsgs)))
}

afmt.Printf("\t%s: \t%d msgs, gasLimit: %d / %d (%0.2f%%), avgPremium: %s\n", b.Miner, len(msgs.BlsMessages)+len(msgs.SecpkMessages), limitSum, build.BlockGasLimit, 100*float64(limitSum)/float64(build.BlockGasLimit), avgpremium)
afmt.Printf("\t%s: \t%d msgs, gasLimit: %d / %d (%0.2f%%), avgPremium: %s\n", b.Miner, len(msgs.BlsMessages)+len(msgs.SecpkMessages), limitSum, buildconstants.BlockGasLimit, 100*float64(limitSum)/float64(buildconstants.BlockGasLimit), avgpremium)
}
if i < len(tss)-1 {
msgs, err := api.ChainGetParentMessages(ctx, tss[i+1].Blocks()[0].Cid())
Expand All @@ -680,7 +681,7 @@ var ChainListCmd = &cli.Command{
}

gasEfficiency := 100 * float64(gasUsed) / float64(limitSum)
gasCapacity := 100 * float64(limitSum) / float64(build.BlockGasLimit)
gasCapacity := 100 * float64(limitSum) / float64(buildconstants.BlockGasLimit)

afmt.Printf("\ttipset: \t%d msgs, %d (%0.2f%%) / %d (%0.2f%%)\n", len(msgs), gasUsed, gasEfficiency, limitSum, gasCapacity)
}
Expand Down
6 changes: 3 additions & 3 deletions cli/mpool.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import (
"github.com/filecoin-project/go-state-types/big"

lapi "github.com/filecoin-project/lotus/api"
"github.com/filecoin-project/lotus/build"
"github.com/filecoin-project/lotus/build/buildconstants"
"github.com/filecoin-project/lotus/chain/messagepool"
"github.com/filecoin-project/lotus/chain/types"
"github.com/filecoin-project/lotus/node/config"
Expand Down Expand Up @@ -712,7 +712,7 @@ var MpoolGasPerfCmd = &cli.Command{

baseFee := ts.Blocks()[0].ParentBaseFee

bigBlockGasLimit := big.NewInt(build.BlockGasLimit)
bigBlockGasLimit := big.NewInt(buildconstants.BlockGasLimit)

getGasReward := func(msg *types.SignedMessage) big.Int {
maxPremium := types.BigSub(msg.Message.GasFeeCap, baseFee)
Expand All @@ -723,7 +723,7 @@ var MpoolGasPerfCmd = &cli.Command{
}

getGasPerf := func(gasReward big.Int, gasLimit int64) float64 {
// gasPerf = gasReward * build.BlockGasLimit / gasLimit
// gasPerf = gasReward * buildconstants.BlockGasLimit / gasLimit
a := new(stdbig.Rat).SetInt(new(stdbig.Int).Mul(gasReward.Int, bigBlockGasLimit.Int))
b := stdbig.NewRat(1, gasLimit)
c := new(stdbig.Rat).Mul(a, b)
Expand Down
3 changes: 2 additions & 1 deletion cmd/lotus-shed/gas-estimation.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (
"github.com/filecoin-project/go-state-types/network"

"github.com/filecoin-project/lotus/build"
"github.com/filecoin-project/lotus/build/buildconstants"
"github.com/filecoin-project/lotus/chain/beacon/drand"
"github.com/filecoin-project/lotus/chain/consensus"
"github.com/filecoin-project/lotus/chain/consensus/filcns"
Expand Down Expand Up @@ -118,7 +119,7 @@ var gasTraceCmd = &cli.Command{
}

// Set to block limit so message will not run out of gas
msg.GasLimit = build.BlockGasLimit
msg.GasLimit = buildconstants.BlockGasLimit

err = cs.Load(ctx)
if err != nil {
Expand Down
Loading

0 comments on commit 21ca683

Please sign in to comment.