Changeset 3fea752 in mainline for uspace/app/hbench/benchlist.c


Ignore:
Timestamp:
2019-01-28T07:46:58Z (5 years ago)
Author:
Vojtech Horky <vojtech.horky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
67bcd81
Parents:
182487c6 (diff), 871cff9a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge changes to benchmarking tool (PR #151)

This merges refactoring and other changes to the perf/hbench tool.

The changes include:

  • Factor out all the duplicate code in individual benchmarks into a common harness
  • Properly compute average throughput
    • Added an awful function to compute square root until proper implementation is available (for the precision we need it is quite sufficient) [sqrt is needed to compute standard deviation]
  • Added option to dump data to CSV for further processing
  • Added option to specify minimal duration of a loop and number of runs to execute.
  • Added simple benchmark for fibril mutexes
  • Merged benchmarks from bnchmark application and removed it
    • These benchmarks are FS-related and IMHO are quite badly designed (they really stress only the block cache and not the FS on top of it; but still they might be useful as IPC benchmark of large data volumes)
  • Renamed perf to hbench to stress that it is a benchmarking application rather than a generic performance measurement tool (compared to perf in GNU/Linux)
  • Extended documentation a little bit
  • Added function for measuring wall-clock time (internally pass-through to uptime but available for other applications as the right API for this in HelenOS)
File:
1 moved

Legend:

Unmodified
Added
Removed
  • uspace/app/hbench/benchlist.c

    r182487c6 r3fea752  
    11/*
    22 * Copyright (c) 2018 Jiri Svoboda
     3 * Copyright (c) 2018 Vojtech Horky
    34 * All rights reserved.
    45 *
     
    2728 */
    2829
    29 /** @addtogroup perf
     30/** @addtogroup hbench
    3031 * @{
    3132 */
    32 /** @file
     33/**
     34 * @file
    3335 */
    3436
    35 #ifndef PERF_H_
    36 #define PERF_H_
     37#include <stdlib.h>
     38#include "hbench.h"
    3739
    38 #include <stdbool.h>
     40benchmark_t *benchmarks[] = {
     41        &benchmark_dir_read,
     42        &benchmark_fibril_mutex,
     43        &benchmark_file_read,
     44        &benchmark_malloc1,
     45        &benchmark_malloc2,
     46        &benchmark_ns_ping,
     47        &benchmark_ping_pong
     48};
    3949
    40 typedef const char *(*benchmark_entry_t)(void);
    41 
    42 typedef struct {
    43         const char *name;
    44         const char *desc;
    45         benchmark_entry_t entry;
    46 } benchmark_t;
    47 
    48 extern const char *bench_malloc1(void);
    49 extern const char *bench_malloc2(void);
    50 extern const char *bench_ns_ping(void);
    51 extern const char *bench_ping_pong(void);
    52 
    53 extern benchmark_t benchmarks[];
    54 
    55 #endif
     50size_t benchmark_count = sizeof(benchmarks) / sizeof(benchmarks[0]);
    5651
    5752/** @}
Note: See TracChangeset for help on using the changeset viewer.