diff options
author | 2015-05-21 23:42:17 +0000 | |
---|---|---|
committer | 2015-05-22 19:59:37 +0000 | |
commit | e6566da66cff3511f6dfcad5d8dfe9a1cde767a9 (patch) | |
tree | 2687378f73bf81405f4df9740548676b543c6b04 /src/main/java/com/google/devtools/build | |
parent | 53c074822d3d4275528b7dbd8cb634deb7817580 (diff) |
Add a hidden flag which allows us to set the size of the legacy globbing thread pool.
--
MOS_MIGRATED_REVID=94236393
Diffstat (limited to 'src/main/java/com/google/devtools/build')
3 files changed, 20 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java index 4d7b71f19b..02c7f03d1f 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java +++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java @@ -366,7 +366,7 @@ public final class PackageFactory { globalEnv = newGlobalEnvironment(); threadPool = new ThreadPoolExecutor(100, 100, 3L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(), - new ThreadFactoryBuilder().setNameFormat("PackageFactory %d").build()); + new ThreadFactoryBuilder().setNameFormat("Legacy globber %d").build()); // Do not consume threads when not in use. threadPool.allowCoreThreadTimeOut(true); this.environmentExtensions = ImmutableList.copyOf(environmentExtensions); @@ -388,6 +388,15 @@ public final class PackageFactory { } /** + * Sets the max number of threads to use for globbing. + */ + public void setGlobbingThreads(int globbingThreads) { + threadPool.setCorePoolSize(globbingThreads); + threadPool.setMaximumPoolSize(globbingThreads); + } + + + /** * Returns the static environment initialized once and shared by all packages * created by this factory. No updates occur to this environment once created. */ diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/PackageCacheOptions.java b/src/main/java/com/google/devtools/build/lib/pkgcache/PackageCacheOptions.java index 6db7cf63ec..e57fe0df61 100644 --- a/src/main/java/com/google/devtools/build/lib/pkgcache/PackageCacheOptions.java +++ b/src/main/java/com/google/devtools/build/lib/pkgcache/PackageCacheOptions.java @@ -120,6 +120,12 @@ public class PackageCacheOptions extends OptionsBase { + "'private').") public RuleVisibility defaultVisibility; + @Option(name = "legacy_globbing_threads", + defaultValue = "100", + category = "undocumented", + help = "Number of threads to use for glob evaluation.") + public int globbingThreads; + @Option(name = "min_pkg_count_for_ct_node_eviction", defaultValue = "3700", // Why is the default value 3700? As of December 2013, a medium target loads about this many diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java index f2ad498afd..ca12499f6f 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java @@ -735,8 +735,8 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { */ @VisibleForTesting // productionVisibility = Visibility.PRIVATE public void preparePackageLoading(PathPackageLocator pkgLocator, RuleVisibility defaultVisibility, - boolean showLoadingProgress, - String defaultsPackageContents, UUID commandId) { + boolean showLoadingProgress, int globbingThreads, + String defaultsPackageContents, UUID commandId) { Preconditions.checkNotNull(pkgLocator); setActive(true); @@ -748,6 +748,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { setPackageLocator(pkgLocator); syscalls.set(new PerBuildSyscallCache()); + this.pkgFactory.setGlobbingThreads(globbingThreads); checkPreprocessorFactory(); emittedEventState.clear(); @@ -1328,7 +1329,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { preparePackageLoading( createPackageLocator(packageCacheOptions, directories.getWorkspace(), workingDirectory), packageCacheOptions.defaultVisibility, packageCacheOptions.showLoadingProgress, - defaultsPackageContents, commandId); + packageCacheOptions.globbingThreads, defaultsPackageContents, commandId); setDeletedPackages(ImmutableSet.copyOf(packageCacheOptions.deletedPackages)); incrementalBuildMonitor = new SkyframeIncrementalBuildMonitor(); |