# 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.

#  ________  _________  ________  ________
# |\   ____\|\___   ___\\   __  \|\   __  \
# \ \  \___|\|___ \  \_\ \  \|\  \ \  \|\  \
#  \ \_____  \   \ \  \ \ \  \\\  \ \   ____\
#   \|____|\  \   \ \  \ \ \  \\\  \ \  \___|
#     ____\_\  \   \ \__\ \ \_______\ \__\
#    |\_________\   \|__|  \|_______|\|__|
#    \|_________|
#
# Every new addition to this gni file is an instance of tech-debt that must be
# cleaned up to have a proper platform+product interface. Instead add new items
# to the the board definition in:
#
#   //boards/x64/BUILD.gn

# 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_bootfs_labels += [ "//boards/kernel_cmdline:x64-reduced-perf-variation" ]
