cmd/geth: handle memfixes on 32bit arch with large RAM

This commit is contained in:
Péter Szilágyi 2020-05-05 13:25:56 +03:00
parent c989bca173
commit 8f8ff8d601
No known key found for this signature in database
GPG Key ID: E9AE538CEDF8293D

View File

@ -314,6 +314,10 @@ func prepare(ctx *cli.Context) {
// Check https://github.com/elastic/gosigar#supported-platforms // Check https://github.com/elastic/gosigar#supported-platforms
if runtime.GOOS != "openbsd" { if runtime.GOOS != "openbsd" {
if err := mem.Get(); err == nil { if err := mem.Get(); err == nil {
if 32<<(^uintptr(0)>>63) == 32 && mem.Total > 2*1024*1024*1024 {
log.Warn("Lowering memory allowance on 32bit arch", "available", mem.Total/1024/1024, "addressable", 2*1024)
mem.Total = 2 * 1024 * 1024 * 1024
}
allowance := int(mem.Total / 1024 / 1024 / 3) allowance := int(mem.Total / 1024 / 1024 / 3)
if cache := ctx.GlobalInt(utils.CacheFlag.Name); cache > allowance { if cache := ctx.GlobalInt(utils.CacheFlag.Name); cache > allowance {
log.Warn("Sanitizing cache to Go's GC limits", "provided", cache, "updated", allowance) log.Warn("Sanitizing cache to Go's GC limits", "provided", cache, "updated", allowance)