In FilesystemValueChecker, use 200 threads and don't waste threads on skipped keys. This yields some noticeable improvements for the wall times of null builds with even a small set of files to be checked for changes.
--
MOS_MIGRATED_REVID=104717653
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java b/src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java
index 35df110..57f64c4 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java
@@ -63,7 +63,7 @@
*/
class FilesystemValueChecker {
- private static final int DIRTINESS_CHECK_THREADS = 50;
+ private static final int DIRTINESS_CHECK_THREADS = 200;
private static final Logger LOG = Logger.getLogger(FilesystemValueChecker.class.getName());
private static final Predicate<SkyKey> ACTION_FILTER =
@@ -311,6 +311,10 @@
};
try (AutoProfiler prof = AutoProfiler.create(elapsedTimeReceiver)) {
for (final SkyKey key : values) {
+ numKeysScanned.incrementAndGet();
+ if (!checker.applies(key)) {
+ continue;
+ }
final SkyValue value = valuesSupplier.get().get(key);
executor.execute(
wrapper.wrap(
@@ -318,13 +322,10 @@
@Override
public void run() {
if (value != null || checkMissingValues) {
- numKeysScanned.incrementAndGet();
- DirtyResult result = checker.maybeCheck(key, value, tsgm);
- if (result != null) {
- numKeysChecked.incrementAndGet();
- if (result.isDirty()) {
- batchResult.add(key, value, result.getNewValue());
- }
+ numKeysChecked.incrementAndGet();
+ DirtyResult result = checker.check(key, value, tsgm);
+ if (result.isDirty()) {
+ batchResult.add(key, value, result.getNewValue());
}
}
}