X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/7f88afd565b76903ad4b27fb896ff0cd844dfb7f..35e9b21d80569fec8860596213c72d199f79a593:/lib/dispatchcloud/node_size.go diff --git a/lib/dispatchcloud/node_size.go b/lib/dispatchcloud/node_size.go index 7c7643bfc7..0b394f4cfe 100644 --- a/lib/dispatchcloud/node_size.go +++ b/lib/dispatchcloud/node_size.go @@ -56,7 +56,7 @@ func estimateDockerImageSize(collectionPDH string) int64 { // EstimateScratchSpace estimates how much available disk space (in // bytes) is needed to run the container by summing the capacity // requested by 'tmp' mounts plus disk space required to load the -// Docker image. +// Docker image plus arv-mount block cache. func EstimateScratchSpace(ctr *arvados.Container) (needScratch int64) { for _, m := range ctr.Mounts { if m.Kind == "tmp" { @@ -80,6 +80,9 @@ func EstimateScratchSpace(ctr *arvados.Container) (needScratch int64) { // Now reserve space for the extracted image on disk. needScratch += dockerImageSize + // Now reserve space the arv-mount disk cache + needScratch += ctr.RuntimeConstraints.KeepCacheDisk + return } @@ -110,7 +113,12 @@ func ChooseInstanceType(cc *arvados.Cluster, ctr *arvados.Container) (best arvad needRAM := ctr.RuntimeConstraints.RAM + ctr.RuntimeConstraints.KeepCacheRAM needRAM += int64(cc.Containers.ReserveExtraRAM) - needRAM += int64(cc.Containers.LocalKeepBlobBuffersPerVCPU * needVCPUs * (1 << 26)) + if cc.Containers.LocalKeepBlobBuffersPerVCPU > 0 { + // + 200 MiB for keepstore process + 10% for GOGC=10 + needRAM += 220 << 20 + // + 64 MiB for each blob buffer + 10% for GOGC=10 + needRAM += int64(cc.Containers.LocalKeepBlobBuffersPerVCPU * needVCPUs * (1 << 26) * 11 / 10) + } needRAM = (needRAM * 100) / int64(100-discountConfiguredRAMPercent) ok := false