| // 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. |
| |
| #include <stdio.h> |
| |
| #include <lib/fzl/time.h> |
| #include <lib/zx/time.h> |
| |
| #include "metrics.h" |
| |
| namespace minfs { |
| namespace { |
| |
| size_t TicksToMs(const zx::ticks& ticks) { |
| return fzl::TicksToNs(ticks) / zx::msec(1); |
| } |
| |
| } // namespace |
| |
| void MinfsMetrics::Dump() const { |
| constexpr uint64_t KB = 1 << 10; |
| |
| printf("Allocation Info:\n"); |
| printf(" %zu / %zu successful calls to create, total %zu ms\n", |
| create_calls_success, create_calls, TicksToMs(create_ticks)); |
| printf("Operation stats:\n"); |
| printf(" %zu calls to read totalling %zu KB in %zu ms\n", |
| read_calls, read_size / KB, TicksToMs(read_ticks)); |
| printf(" %zu calls to write totalling %zu KB in %zu ms\n", |
| write_calls, write_size / KB, TicksToMs(write_ticks)); |
| printf(" %zu calls to truncate in %zu ms\n", |
| truncate_calls, TicksToMs(truncate_ticks)); |
| printf(" %zu / %zu successful calls to unlink, total %zu ms\n", |
| unlink_calls_success, unlink_calls, TicksToMs(unlink_ticks)); |
| printf(" %zu / %zu successful calls to rename, total %zu ms\n", |
| rename_calls_success, rename_calls, TicksToMs(rename_ticks)); |
| printf("Lookup stats:\n"); |
| printf(" %zu initialized VMOs (dnum: %u, inum: %u, dinum: %u)\n", |
| initialized_vmos, init_dnum_count, init_inum_count, init_dinum_count); |
| printf(" Initialized %zu KB of VMOs in %zu ms\n", |
| init_user_data_size / KB, TicksToMs(init_user_data_ticks)); |
| printf(" %zu / %zu VnodeGet (lookup by inode) cache hits, total %zu ms\n", |
| vnodes_opened_cache_hit, vnodes_opened, TicksToMs(vnode_open_ticks)); |
| printf(" %zu / %zu Lookup (lookup by path) successful calls, %zu ms\n", |
| lookup_calls_success, lookup_calls, TicksToMs(lookup_ticks)); |
| } |
| |
| } // namespace minfs |