blob: 1cd50f60e624dc26f0471d96f0f2c2a678318a64 [file] [log] [blame]
# Copyright 2020 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# This board produces an x64 image which attempts to tune to have a more
# stable performance profile, which can be useful for benchmarking.
#
# In particular, we tweak system parameters to favour consistent/predictable
# performance over high performance (e.g., by disabling Turbo boost, resulting
# in the CPU's clock rate being slower on average, but constant); and to favour
# consistent performance over security (e.g., disabling Spectre mitigations
# that currently producing significant performance variations across machines).
# Tuning the system to be more consistent allows real changes in performance to
# be more easily be seen.
#
# "Real world" or "whole system" benchmarks may consider using just the plain
# x64 board to ensure that measured results match real-world usage more
# closely, at the expense of higher variance in benchmark results.
import("x64.gni")
board_kernel_cmdline_args = [
# Disable Intel Turbo Boost. Turbo Boost provides a significant speed-up to
# many workloads, but — because CPU frequencies vary based on previous work,
# work in other cores, system temperature, etc — makes performance of systems
# less predictable. We prefer stability in our performance comparison
# benchmarks.
"kernel.x86.turbo=false",
# Set the Intel HWP performance profile to be "stable", trying to keep the
# CPU clock rate stable. With turbo boost disabled, this has only a small
# effect, but helps ensure that wake ups from idle are fixed.
"kernel.x86.hwp_policy=stable-performance",
# Disable hyper-threading. Hyper-threading reduces predictability of
# benchmarks, because the performance of a thread is significantly affected
# by other threads on the core.
"kernel.smp.ht=false",
# Disable spectre mitigations. Spectre mitigations have significant
# performance impact, but are currently only carried out on a subset of the
# NUC fleet. This means that different devices have significantly different
# performance characteristics, meaning that benchmark results vary
# significantly based on the device running it.
#
# TODO(fxb/33161): Ideally, we should load microcode during Zircon boot,
# which should bring all devices to the same patch level, removing the
# performance differences when spectre mitigations are in place.
"kernel.x86.disable_spec_mitigations=true",
]