blob: 70ad6166d9dd9da5185eb12a199d519a65c3cc83 [file] [log] [blame]
// Copyright 2018 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 file contains information for gathering Minfs metrics.
#pragma once
#ifndef __Fuchsia__
#error Fuchsia-only Header
#endif
#include <lib/zx/time.h>
namespace minfs {
struct MinfsMetrics {
// Print information about metrics to stdout.
//
// TODO(ZX-1999): This is a stop-gap solution; long-term, this information
// should be extracted from devices.
void Dump() const;
// ALLOCATION STATS
uint64_t create_calls = 0;
uint64_t create_calls_success = 0;
zx::ticks create_ticks = {};
// OPERATION STATS
uint64_t read_calls = 0;
uint64_t read_size = 0;
zx::ticks read_ticks = {};
uint64_t write_calls = 0;
uint64_t write_size = 0;
zx::ticks write_ticks = {};
uint64_t truncate_calls = 0;
zx::ticks truncate_ticks = {};
uint64_t unlink_calls = 0;
uint64_t unlink_calls_success = 0;
zx::ticks unlink_ticks = {};
uint64_t rename_calls = 0;
uint64_t rename_calls_success = 0;
zx::ticks rename_ticks = {};
// LOOKUP STATS
// Total time waiting for reads from disk.
uint64_t initialized_vmos = 0;
uint32_t init_dnum_count = 0; // Top-level direct blocks only
uint32_t init_inum_count = 0; // Top-level indirect blocks only
uint32_t init_dinum_count = 0;
uint64_t init_user_data_size = 0;
zx::ticks init_user_data_ticks = {};
// Opened via "VnodeGet".
uint64_t vnodes_opened = 0;
uint64_t vnodes_opened_cache_hit = 0;
zx::ticks vnode_open_ticks = {};
// Opened via "LookupInternal".
uint64_t lookup_calls = 0;
uint64_t lookup_calls_success = 0;
zx::ticks lookup_ticks = {};
// FVM STATS
// TODO(smklein)
};
} // namespace minfs