From 04ca383754209fbd9e8458aeadd212470a09c81a Mon Sep 17 00:00:00 2001 From: Ben Segall Date: Wed, 19 Jul 2023 01:50:59 +0000 Subject: [PATCH] Reland "reclient: Enable racing for chrome developers" This reverts commit 3aa7489c3edf46434776b47d0f3eb16537a7de82. Reason for revert: reproxy 0.110.0 includes a flag for fixing hardlink issue Original change's description: > Revert "reclient: Enable racing for chrome developers" > > This reverts commit 24ac2543c744b2152465ea758671d46d1077bcf9. > > Reason for revert: hard links dont work on tmpfs b/288997481 > > Original change's description: > > reclient: Enable racing for chrome developers > > > > racing_bias=0.95 is a best guess based on benchmarks on my glinux and gwindows cloudtops, and my gmac laptop. I will monitor build performance data and adjust the bias based on that. > > > > Bug: b/288285261 > > Change-Id: Ie8652281f7bc815e64978bcd56a75e5ec28e2132 > > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4633180 > > Commit-Queue: Ben Segall > > Reviewed-by: Takuto Ikuta > > Bug: b/288285261 > Change-Id: I7b262f63d4edd68447fcec0a781ef55923635d2c > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4651968 > Bot-Commit: Rubber Stamper > Commit-Queue: Ben Segall Bug: b/288285261 Change-Id: I8fb65c32adc7b22a747c30f408f1f34b2bb5f8f6 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4693625 Reviewed-by: Takuto Ikuta Commit-Queue: Ben Segall --- reclient_helper.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/reclient_helper.py b/reclient_helper.py index 6b1ff377a..878d6dd21 100644 --- a/reclient_helper.py +++ b/reclient_helper.py @@ -141,6 +141,7 @@ def set_reproxy_path_flags(out_dir, make_dirs=True): """ tmp_dir = os.path.abspath(os.path.join(out_dir, '.reproxy_tmp')) log_dir = os.path.join(tmp_dir, 'logs') + racing_dir = os.path.join(tmp_dir, 'racing') cache_dir = find_cache_dir(tmp_dir) if make_dirs: if os.path.exists(log_dir): @@ -149,10 +150,12 @@ def set_reproxy_path_flags(out_dir, make_dirs=True): os.makedirs(tmp_dir, exist_ok=True) os.makedirs(log_dir, exist_ok=True) os.makedirs(cache_dir, exist_ok=True) + os.makedirs(racing_dir) os.environ.setdefault("RBE_output_dir", log_dir) os.environ.setdefault("RBE_proxy_log_dir", log_dir) os.environ.setdefault("RBE_log_dir", log_dir) os.environ.setdefault("RBE_cache_dir", cache_dir) + os.environ.setdefault("RBE_racing_tmp_dir", racing_dir) if sys.platform.startswith('win'): pipe_dir = hashlib.md5(tmp_dir.encode()).hexdigest() os.environ.setdefault("RBE_server_address", @@ -165,6 +168,12 @@ def set_reproxy_path_flags(out_dir, make_dirs=True): hashlib.sha256(tmp_dir.encode()).hexdigest()) +def enable_racing(): + os.environ.setdefault("RBE_exec_strategy", "racing") + # TODO(b/288285261) Tune bias once latency data has been gathered. + os.environ.setdefault("RBE_racing_bias", "0.95") + + @contextlib.contextmanager def build_context(argv, tool): # If use_remoteexec is set, but the reclient binaries or configs don't @@ -198,6 +207,8 @@ def build_context(argv, tool): print('WARNING: Using RBE_instance=%s\n' % os.environ.get('RBE_instance', '')) + enable_racing() + reproxy_ret_code = start_reproxy(reclient_cfg, reclient_bin_dir) if reproxy_ret_code != 0: yield reproxy_ret_code