Merge "Increase per-process file limits for multiproduct_kati" am: a4823680a1
am: c3730769ad
am: 71758ebc8a
Change-Id: If00a4a215862fc48f2b4f1e34c5e169160663bc7
This commit is contained in:
commit
f733226950
1 changed files with 27 additions and 0 deletions
|
@ -24,6 +24,7 @@ import (
|
|||
"runtime"
|
||||
"strings"
|
||||
"sync"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"android/soong/ui/build"
|
||||
|
@ -159,6 +160,30 @@ func (s *Status) Finished() int {
|
|||
return s.failed
|
||||
}
|
||||
|
||||
// TODO(b/70370883): This tool uses a lot of open files -- over the default
|
||||
// soft limit of 1024 on some systems. So bump up to the hard limit until I fix
|
||||
// the algorithm.
|
||||
func setMaxFiles(log logger.Logger) {
|
||||
var limits syscall.Rlimit
|
||||
|
||||
err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &limits)
|
||||
if err != nil {
|
||||
log.Println("Failed to get file limit:", err)
|
||||
return
|
||||
}
|
||||
|
||||
log.Verbosef("Current file limits: %d soft, %d hard", limits.Cur, limits.Max)
|
||||
if limits.Cur == limits.Max {
|
||||
return
|
||||
}
|
||||
|
||||
limits.Cur = limits.Max
|
||||
err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &limits)
|
||||
if err != nil {
|
||||
log.Println("Failed to increase file limit:", err)
|
||||
}
|
||||
}
|
||||
|
||||
func inList(str string, list []string) bool {
|
||||
for _, other := range list {
|
||||
if str == other {
|
||||
|
@ -228,6 +253,8 @@ func main() {
|
|||
trace.SetOutput(filepath.Join(config.OutDir(), "build.trace"))
|
||||
}
|
||||
|
||||
setMaxFiles(log)
|
||||
|
||||
vars, err := build.DumpMakeVars(buildCtx, config, nil, []string{"all_named_products"})
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
|
|
Loading…
Reference in a new issue