|
|
DescriptionLaunch CFI for virtual calls on Linux x86-64.
This is the second incremental step towards the full CFI launch.
In the first step, we enabled LinkTimeOptimization (LTO) for the
official Chrome builds. In this step we add Control Flow Integrity
checks for all virtual calls.
The remaining part is to add bad-cast checks to ensure the forward-edge
Control Flow Integrity works as planned. That remaining part will
require more work on reducing the overhead for size and speed by these
CFI checks, so we don't enable them right away.
The expected Perf impact by this CL:
- Chrome binary size is increased by 5%,
- Some of the benchmarks are slowed down by up to 3.5%.
Note that before making it slower, we made it faster by implementing
virtual const propagation and a number of heuristics for automatic
devirtualization in LLVM which sped up some layout benchmarks by up to 7%
(see https://crbug.com/580389 and https://crbug.com/617283)
If there's a higher (negative) impact, we'll be willing to roll this
feature back, but please allow the Perf bots to work for a day or two
to collect more detailed statistics on the regressions, as it will help
us to identify ways to speed it up (most likely, by inventing new ways
for automatic devirtualization).
BUG=464797
Committed: https://crrev.com/01f474c48200a1e556a4cf668e2b5dbda0f38a6f
Cr-Commit-Position: refs/heads/master@{#405894}
Patch Set 1 #Patch Set 2 : add missing gn include #
Messages
Total messages: 25 (15 generated)
krasin@chromium.org changed reviewers: + krasin@chromium.org, thakis@chromium.org
Hi Nico, please, approve this launch CL for the subset of CFI (only virtual calls). This CL will be submitted after https://codereview.chromium.org/2131423002/
lgtm, but you might want to mention in the cl description that the perf regression is after some perf wins made on the same project :-)
Description was changed from ========== Launch CFI for virtual calls on Linux x86-64. This is the second incremental step towards the full CFI launch. In the first step, we enabled LinkTimeOptimization (LTO) for the official Chrome builds. In this step we add Control Flow Integrity checks for all virtual calls. The remaining part is to add bad-cast checks to ensure the forward-edge Control Flow Integrity works as planned. That remaining part will require more work on reducing the overhead for size and speed by these CFI checks, so we don't enable them right away. The expected Perf impact by this CL: - Chrome binary size is increased by 5%, - Some of the benchmarks are slowed down by up to 3.5%. If there's a higher (negative) impact, we'll be willing to roll this feature back, but please allow the Perf bots to work for a day or two to collect more detailed statistics on the regressions, as it will help us to identify ways to speed it up (most likely, by inventing new ways for automatic devirtualization, similar to https://crbug.com/580389 and https://crbug.com/617283). BUG=464797 ========== to ========== Launch CFI for virtual calls on Linux x86-64. This is the second incremental step towards the full CFI launch. In the first step, we enabled LinkTimeOptimization (LTO) for the official Chrome builds. In this step we add Control Flow Integrity checks for all virtual calls. The remaining part is to add bad-cast checks to ensure the forward-edge Control Flow Integrity works as planned. That remaining part will require more work on reducing the overhead for size and speed by these CFI checks, so we don't enable them right away. The expected Perf impact by this CL: - Chrome binary size is increased by 5%, - Some of the benchmarks are slowed down by up to 3.5%. Note that before making it slower, we made it faster by implementing virtual const propagation and a number of heuristics for automatic devirtualization in LLVM which sped up some layout benchmarks by up to 7% (see https://crbug.com/580389 and https://crbug.com/617283) If there's a higher (negative) impact, we'll be willing to roll this feature back, but please allow the Perf bots to work for a day or two to collect more detailed statistics on the regressions, as it will help us to identify ways to speed it up (most likely, by inventing new ways for automatic devirtualization). BUG=464797 ==========
On 2016/07/12 23:23:47, Nico wrote: > lgtm, but you might want to mention in the cl description that the perf > regression is after some perf wins made on the same project :-) Good suggestion. Done. Will keep this CL open until it's time to actually launch (likely, tomorrow). Thank you for the fast review.
The CQ bit was checked by krasin@google.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
krasin@google.com changed reviewers: + esprehn@chromium.org
Elliott, may I get your LGTM on this? As discussed, you have the right to revert this CL with any reason you may find.
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: cast_shell_linux on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/cast_shell_linu...)
The CQ bit was checked by krasin@google.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
On 2016/07/15 at 17:59:42, krasin wrote: > Elliott, > > may I get your LGTM on this? > > As discussed, you have the right to revert this CL with any reason you may find. Per summary here: https://groups.google.com/a/chromium.org/d/msg/project-trim/uhtD-UIvjLA/Tsahp... lgtm
The CQ bit was checked by krasin@google.com
The patchset sent to the CQ was uploaded after l-g-t-m from thakis@chromium.org Link to the patchset: https://codereview.chromium.org/2140373002/#ps20001 (title: "add missing gn include")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Message was sent while issue was closed.
Description was changed from ========== Launch CFI for virtual calls on Linux x86-64. This is the second incremental step towards the full CFI launch. In the first step, we enabled LinkTimeOptimization (LTO) for the official Chrome builds. In this step we add Control Flow Integrity checks for all virtual calls. The remaining part is to add bad-cast checks to ensure the forward-edge Control Flow Integrity works as planned. That remaining part will require more work on reducing the overhead for size and speed by these CFI checks, so we don't enable them right away. The expected Perf impact by this CL: - Chrome binary size is increased by 5%, - Some of the benchmarks are slowed down by up to 3.5%. Note that before making it slower, we made it faster by implementing virtual const propagation and a number of heuristics for automatic devirtualization in LLVM which sped up some layout benchmarks by up to 7% (see https://crbug.com/580389 and https://crbug.com/617283) If there's a higher (negative) impact, we'll be willing to roll this feature back, but please allow the Perf bots to work for a day or two to collect more detailed statistics on the regressions, as it will help us to identify ways to speed it up (most likely, by inventing new ways for automatic devirtualization). BUG=464797 ========== to ========== Launch CFI for virtual calls on Linux x86-64. This is the second incremental step towards the full CFI launch. In the first step, we enabled LinkTimeOptimization (LTO) for the official Chrome builds. In this step we add Control Flow Integrity checks for all virtual calls. The remaining part is to add bad-cast checks to ensure the forward-edge Control Flow Integrity works as planned. That remaining part will require more work on reducing the overhead for size and speed by these CFI checks, so we don't enable them right away. The expected Perf impact by this CL: - Chrome binary size is increased by 5%, - Some of the benchmarks are slowed down by up to 3.5%. Note that before making it slower, we made it faster by implementing virtual const propagation and a number of heuristics for automatic devirtualization in LLVM which sped up some layout benchmarks by up to 7% (see https://crbug.com/580389 and https://crbug.com/617283) If there's a higher (negative) impact, we'll be willing to roll this feature back, but please allow the Perf bots to work for a day or two to collect more detailed statistics on the regressions, as it will help us to identify ways to speed it up (most likely, by inventing new ways for automatic devirtualization). BUG=464797 ==========
Message was sent while issue was closed.
Committed patchset #2 (id:20001)
Message was sent while issue was closed.
CQ bit was unchecked.
Message was sent while issue was closed.
Description was changed from ========== Launch CFI for virtual calls on Linux x86-64. This is the second incremental step towards the full CFI launch. In the first step, we enabled LinkTimeOptimization (LTO) for the official Chrome builds. In this step we add Control Flow Integrity checks for all virtual calls. The remaining part is to add bad-cast checks to ensure the forward-edge Control Flow Integrity works as planned. That remaining part will require more work on reducing the overhead for size and speed by these CFI checks, so we don't enable them right away. The expected Perf impact by this CL: - Chrome binary size is increased by 5%, - Some of the benchmarks are slowed down by up to 3.5%. Note that before making it slower, we made it faster by implementing virtual const propagation and a number of heuristics for automatic devirtualization in LLVM which sped up some layout benchmarks by up to 7% (see https://crbug.com/580389 and https://crbug.com/617283) If there's a higher (negative) impact, we'll be willing to roll this feature back, but please allow the Perf bots to work for a day or two to collect more detailed statistics on the regressions, as it will help us to identify ways to speed it up (most likely, by inventing new ways for automatic devirtualization). BUG=464797 ========== to ========== Launch CFI for virtual calls on Linux x86-64. This is the second incremental step towards the full CFI launch. In the first step, we enabled LinkTimeOptimization (LTO) for the official Chrome builds. In this step we add Control Flow Integrity checks for all virtual calls. The remaining part is to add bad-cast checks to ensure the forward-edge Control Flow Integrity works as planned. That remaining part will require more work on reducing the overhead for size and speed by these CFI checks, so we don't enable them right away. The expected Perf impact by this CL: - Chrome binary size is increased by 5%, - Some of the benchmarks are slowed down by up to 3.5%. Note that before making it slower, we made it faster by implementing virtual const propagation and a number of heuristics for automatic devirtualization in LLVM which sped up some layout benchmarks by up to 7% (see https://crbug.com/580389 and https://crbug.com/617283) If there's a higher (negative) impact, we'll be willing to roll this feature back, but please allow the Perf bots to work for a day or two to collect more detailed statistics on the regressions, as it will help us to identify ways to speed it up (most likely, by inventing new ways for automatic devirtualization). BUG=464797 Committed: https://crrev.com/01f474c48200a1e556a4cf668e2b5dbda0f38a6f Cr-Commit-Position: refs/heads/master@{#405894} ==========
Message was sent while issue was closed.
Patchset 2 (id:??) landed as https://crrev.com/01f474c48200a1e556a4cf668e2b5dbda0f38a6f Cr-Commit-Position: refs/heads/master@{#405894}
Message was sent while issue was closed.
A revert of this CL (patchset #2 id:20001) has been created in https://codereview.chromium.org/2154993002/ by krasin@chromium.org. The reason for reverting is: Too many blink_perf.layout benchmarks regressed by ~3.5%. While the regressions are within predicted upper bound, there're too many of them to ignore: https://chromeperf.appspot.com/report?sid=ebf0165d8c96c7a70c790d179a9bdc1f9e5... We will need to reevaluate the reason for such consistent slowdown and will make another attempt after it's cleared.. |