add a doc on environment variables that can be used to tweak lotus

This commit is contained in:
whyrusleeping 2020-08-20 12:52:50 -07:00
parent d8a669c85a
commit 2010bf55b7
3 changed files with 77 additions and 6 deletions

View File

@ -67,6 +67,12 @@
"slug": "en+setup-troubleshooting", "slug": "en+setup-troubleshooting",
"github": "en/setup-troubleshooting.md", "github": "en/setup-troubleshooting.md",
"value": null "value": null
},
{
"title": "Environment Variables",
"slug": "en+env-vars",
"github": "en/environment-vars.md",
"value": null
} }
] ]
}, },

View File

@ -0,0 +1,60 @@
# Lotus Environment Variables
## Building
## Common
The environment variables are common across most lotus binaries.
### `LOTUS_FD_MAX`
Sets the file descriptor limit for the process. This should be set high (8192
or higher) if you ever notice 'too many open file descriptor' errors.
### `LOTUS_JAEGER`
This can be set to enable jaeger trace reporting. The value should be the url
of the jaeger trace collector, the default for most jaeger setups should be
`localhost:6831`.
### `LOTUS_DEV`
If set to a non-empty value, certain parts of the application will print more
verbose information to aid in development of the software. Not recommended for
end users.
## Lotus Daemon
### `LOTUS_PATH`
Sets the location for the lotus daemon on-disk repo. If left empty, this defaults to `~/.lotus`.
### `LOTUS_SKIP_GENESIS_CHECK`
Can be set to `_yes_` if you wish to run a lotus network with a different
genesis than the default one built into your lotus binary.
### `LOTUS_CHAIN_TIPSET_CACHE`
Sets the cache size for the chainstore tipset cache. The default value is 8192,
but if your usage of the lotus API involves frequent arbitrary tipset lookups,
you may want to increase this.
### `LOTUS_CHAIN_INDEX_CACHE`
Sets the cache size for the chainstore epoch index cache. The default value is 32768,
but if your usage of the lotus API involves frequent deep chain lookups for
block heights that are very far from the current chain height, you may want to
increase this.
## Lotus Miner
A number of environment variables are respected for configuring the behavior of the filecoin proving subsystem. For more details on those [see here](https://github.com/filecoin-project/rust-fil-proofs/#settings).
### `LOTUS_MINER_PATH`
Sets the location for the lotus miners on-disk repo. If left empty, this defaults to `~/.lotusminer`.

View File

@ -28,14 +28,19 @@ const minFds = 2048
// default max file descriptor limit. // default max file descriptor limit.
const maxFds = 16 << 10 const maxFds = 16 << 10
// userMaxFDs returns the value of IPFS_FD_MAX // userMaxFDs returns the value of LOTUS_FD_MAX
func userMaxFDs() uint64 { func userMaxFDs() uint64 {
// check if the IPFS_FD_MAX is set up and if it does // check if the LOTUS_FD_MAX is set up and if it does
// not have a valid fds number notify the user // not have a valid fds number notify the user
if val := os.Getenv("IPFS_FD_MAX"); val != "" { val := os.Getenv("LOTUS_FD_MAX")
if val == "" {
val = os.Getenv("IPFS_FD_MAX")
}
if val != "" {
fds, err := strconv.ParseUint(val, 10, 64) fds, err := strconv.ParseUint(val, 10, 64)
if err != nil { if err != nil {
log.Errorf("bad value for IPFS_FD_MAX: %s", err) log.Errorf("bad value for LOTUS_FD_MAX: %s", err)
return 0 return 0
} }
return fds return fds
@ -44,7 +49,7 @@ func userMaxFDs() uint64 {
} }
// ManageFdLimit raise the current max file descriptor count // ManageFdLimit raise the current max file descriptor count
// of the process based on the IPFS_FD_MAX value // of the process based on the LOTUS_FD_MAX value
func ManageFdLimit() (changed bool, newLimit uint64, err error) { func ManageFdLimit() (changed bool, newLimit uint64, err error) {
if !supportsFDManagement { if !supportsFDManagement {
return false, 0, nil return false, 0, nil
@ -93,7 +98,7 @@ func ManageFdLimit() (changed bool, newLimit uint64, err error) {
if newLimit < userLimit { if newLimit < userLimit {
err = fmt.Errorf( err = fmt.Errorf(
"failed to raise ulimit to IPFS_FD_MAX (%d): set to %d", "failed to raise ulimit to LOTUS_FD_MAX (%d): set to %d",
userLimit, userLimit,
newLimit, newLimit,
) )