diff --git a/exchange/bitswap/bitswap.go b/exchange/bitswap/bitswap.go index 3d3add327..e4bb1582f 100644 --- a/exchange/bitswap/bitswap.go +++ b/exchange/bitswap/bitswap.go @@ -17,6 +17,7 @@ import ( bsnet "github.com/ipfs/go-ipfs/exchange/bitswap/network" notifications "github.com/ipfs/go-ipfs/exchange/bitswap/notifications" wantlist "github.com/ipfs/go-ipfs/exchange/bitswap/wantlist" + flags "github.com/ipfs/go-ipfs/flags" "github.com/ipfs/go-ipfs/thirdparty/delay" process "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess" procctx "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/context" @@ -39,12 +40,22 @@ const ( sizeBatchRequestChan = 32 // kMaxPriority is the max priority as defined by the bitswap protocol kMaxPriority = math.MaxInt32 +) +var ( HasBlockBufferSize = 256 provideKeysBufferSize = 2048 provideWorkerMax = 512 ) +func init() { + if flags.LowMemMode { + HasBlockBufferSize = 64 + provideKeysBufferSize = 512 + provideWorkerMax = 16 + } +} + var rebroadcastDelay = delay.Fixed(time.Second * 10) // New initializes a BitSwap instance that communicates over the provided diff --git a/flags/flags.go b/flags/flags.go new file mode 100644 index 000000000..90f206d42 --- /dev/null +++ b/flags/flags.go @@ -0,0 +1,13 @@ +package flags + +import ( + "os" +) + +var LowMemMode bool + +func init() { + if os.Getenv("IPFS_LOW_MEM") != "" { + LowMemMode = true + } +}