aboutsummaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2016-10-19 19:55:13 +0800
committerPéter Szilágyi <peterke@gmail.com>2016-10-19 19:55:13 +0800
commit4f46bd19d0b123327596785dc3975d5e4008d761 (patch)
tree669ad5ec53b1408885465c5c3affb38e99f82b5e /cmd
parentca49510e6dd40e78e3e6827c6c4d7b2a3ec8ef5b (diff)
downloadgo-tangerine-4f46bd19d0b123327596785dc3975d5e4008d761.tar.gz
go-tangerine-4f46bd19d0b123327596785dc3975d5e4008d761.tar.zst
go-tangerine-4f46bd19d0b123327596785dc3975d5e4008d761.zip
cmd, core/state: allow configurable trie cache generations
Diffstat (limited to 'cmd')
-rw-r--r--cmd/geth/chaincmd.go2
-rw-r--r--cmd/geth/main.go3
-rw-r--r--cmd/geth/usage.go6
-rw-r--r--cmd/utils/flags.go20
4 files changed, 24 insertions, 7 deletions
diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go
index d7cdf1064..c41375c4d 100644
--- a/cmd/geth/chaincmd.go
+++ b/cmd/geth/chaincmd.go
@@ -99,6 +99,7 @@ func importChain(ctx *cli.Context) error {
utils.Fatalf("Failed to read database stats: %v", err)
}
fmt.Println(stats)
+ fmt.Printf("Trie cache misses: %d\n\n", trie.CacheMisses())
// Compact the entire database to more accurately measure disk io and print the stats
start = time.Now()
@@ -113,7 +114,6 @@ func importChain(ctx *cli.Context) error {
utils.Fatalf("Failed to read database stats: %v", err)
}
fmt.Println(stats)
- fmt.Println("Trie cache misses:", trie.CacheMisses())
}
return nil
}
diff --git a/cmd/geth/main.go b/cmd/geth/main.go
index 65311ca41..ccc42d3cf 100644
--- a/cmd/geth/main.go
+++ b/cmd/geth/main.go
@@ -134,8 +134,9 @@ participating.
utils.KeyStoreDirFlag,
utils.OlympicFlag,
utils.FastSyncFlag,
- utils.CacheFlag,
utils.LightKDFFlag,
+ utils.CacheFlag,
+ utils.TrieCacheGenFlag,
utils.JSpathFlag,
utils.ListenPortFlag,
utils.MaxPeersFlag,
diff --git a/cmd/geth/usage.go b/cmd/geth/usage.go
index dc1788aad..2cb6e77e8 100644
--- a/cmd/geth/usage.go
+++ b/cmd/geth/usage.go
@@ -73,7 +73,13 @@ var AppHelpFlagGroups = []flagGroup{
utils.IdentityFlag,
utils.FastSyncFlag,
utils.LightKDFFlag,
+ },
+ },
+ {
+ Name: "PERFORMANCE TUNING",
+ Flags: []cli.Flag{
utils.CacheFlag,
+ utils.TrieCacheGenFlag,
},
},
{
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index 0c5206a17..1859f735d 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -141,11 +141,6 @@ var (
Usage: "Document Root for HTTPClient file scheme",
Value: DirectoryString{homeDir()},
}
- CacheFlag = cli.IntFlag{
- Name: "cache",
- Usage: "Megabytes of memory allocated to internal caching (min 16MB / database forced)",
- Value: 128,
- }
FastSyncFlag = cli.BoolFlag{
Name: "fast",
Usage: "Enable fast syncing through state downloads",
@@ -154,6 +149,17 @@ var (
Name: "lightkdf",
Usage: "Reduce key-derivation RAM & CPU usage at some expense of KDF strength",
}
+ // Performance tuning settings
+ CacheFlag = cli.IntFlag{
+ Name: "cache",
+ Usage: "Megabytes of memory allocated to internal caching (min 16MB / database forced)",
+ Value: 128,
+ }
+ TrieCacheGenFlag = cli.IntFlag{
+ Name: "trie-cache-gens",
+ Usage: "Number of trie node generations to keep in memory",
+ Value: int(state.MaxTrieCacheGen),
+ }
// Fork settings
SupportDAOFork = cli.BoolFlag{
Name: "support-dao-fork",
@@ -721,6 +727,10 @@ func RegisterEthService(ctx *cli.Context, stack *node.Node, extra []byte) {
}
ethConf.PowTest = true
}
+ // Override any global options pertaining to the Ethereum protocol
+ if gen := ctx.GlobalInt(TrieCacheGenFlag.Name); gen > 0 {
+ state.MaxTrieCacheGen = uint16(gen)
+ }
if err := stack.Register(func(ctx *node.ServiceContext) (node.Service, error) {
return eth.New(ctx, ethConf)