Statistics
| Branch: | Tag: | Revision:

root / xseg / peers / user / bench-xseg.h @ 683f69fb

History | View | Annotate | Download (2.4 kB)

1
/*
2
 * Copyright 2012 GRNET S.A. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or
5
 * without modification, are permitted provided that the following
6
 * conditions are met:
7
 *
8
 *   1. Redistributions of source code must retain the above
9
 *      copyright notice, this list of conditions and the following
10
 *      disclaimer.
11
 *   2. Redistributions in binary form must reproduce the above
12
 *      copyright notice, this list of conditions and the following
13
 *      disclaimer in the documentation and/or other materials
14
 *      provided with the distribution.
15
 *
16
 * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
 * POSSIBILITY OF SUCH DAMAGE.
28
 *
29
 * The views and conclusions contained in the software and
30
 * documentation are those of the authors and should not be
31
 * interpreted as representing official policies, either expressed
32
 * or implied, of GRNET S.A.
33
 */
34

    
35
#define MAX_ARG_LEN 10
36

    
37
struct bench {
38
        uint64_t ts; //Total I/O size
39
        uint64_t os; //Object size
40
        uint64_t bs; //Block size
41
        uint32_t iodepth; //Num of in-flight xseg reqs
42
        xport dst_port;
43
        xport src_port;
44
        uint8_t flags;
45
        struct timer *total_tm;
46
        struct timer *get_tm;
47
        struct timer *sub_tm;
48
        struct timer *rec_tm;
49
};
50

    
51
/*
52
 * Custom timespec. Made to calculate variance, where we need the square of a
53
 * timespec structure. This structure should be more than enough to hold the
54
 * square of the biggest timespec.
55
 */
56
struct timespec2 {
57
        unsigned long tv_sec2;
58
        uint64_t tv_nsec2;
59
};
60

    
61
struct timer {
62
        struct timespec sum;
63
        struct timespec2 sum_sq;
64
        double mean;
65
        double std;
66
        struct timespec start_time;
67
        unsigned long completed;
68
};
69

    
70
int custom_peerd_loop(void *arg);
71

    
72
void timer_start(struct timer *sample_req);
73
void timer_stop(struct timer *sample_tm);
74

    
75