Motr
M0
ping.h
Go to the documentation of this file.
1
/* -*- C -*- */
2
/*
3
* Copyright (c) 2012-2020 Seagate Technology LLC and/or its Affiliates
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*
17
* For any questions about this software or licensing,
18
* please email opensource@seagate.com or cortx-questions@seagate.com.
19
*
20
*/
21
22
23
#pragma once
24
25
#ifndef __MOTR_NET_LNET_PING_H__
26
#define __MOTR_NET_LNET_PING_H__
27
28
#include "
lib/bitmap.h
"
/* m0_bitmap */
29
30
struct
nlx_ping_ctx
;
31
struct
nlx_ping_ops
{
32
int
(*
pf
)(
const
char
*
format
, ...)
33
__attribute__
((
format
(printf, 1, 2)));
34
void (*
pqs
)(
struct
nlx_ping_ctx
*
ctx
,
bool
reset);
35
};
36
40
struct
nlx_ping_ctx
{
41
const
struct
nlx_ping_ops
*
pc_ops
;
42
const
struct
m0_net_xprt
*
pc_xprt
;
43
struct
m0_net_domain
pc_dom
;
44
const
char
*
pc_network
;
/* "addr@interface" */
45
uint32_t
pc_pid
;
46
uint32_t
pc_portal
;
47
int32_t
pc_tmid
;
/* initialized to < 0 */
48
const
char
*
pc_rnetwork
;
49
uint32_t
pc_rpid
;
50
uint32_t
pc_rportal
;
51
int32_t
pc_rtmid
;
52
int32_t
pc_status
;
53
uint32_t
pc_nr_bufs
;
54
uint32_t
pc_nr_recv_bufs
;
55
uint32_t
pc_segments
;
56
uint32_t
pc_seg_size
;
57
uint32_t
pc_seg_shift
;
58
int
pc_min_recv_size
;
59
int
pc_max_recv_msgs
;
60
uint64_t
pc_bulk_size
;
61
struct
m0_net_buffer
*
pc_nbs
;
62
const
struct
m0_net_buffer_callbacks
*
pc_buf_callbacks
;
63
struct
m0_bitmap
pc_nbbm
;
64
struct
m0_net_transfer_mc
pc_tm
;
65
struct
m0_mutex
pc_mutex
;
66
struct
m0_cond
pc_cond
;
67
struct
m0_list
pc_work_queue
;
68
const
char
*
pc_ident
;
69
const
char
*
pc_compare_buf
;
70
int
pc_bulk_timeout
;
71
int
pc_msg_timeout
;
72
int
pc_server_bulk_delay
;
73
int
pc_dom_debug
;
74
int
pc_tm_debug
;
75
bool
pc_ready
;
76
char
**
pc_interfaces
;
77
bool
pc_sync_events
;
78
struct
m0_chan
pc_wq_chan
;
79
struct
m0_clink
pc_wq_clink
;
80
uint64_t
pc_wq_signal_count
;
81
struct
m0_chan
pc_net_chan
;
82
struct
m0_clink
pc_net_clink
;
83
uint64_t
pc_net_signal_count
;
84
uint64_t
pc_blocked_count
;
85
uint64_t
pc_worked_count
;
86
struct
m0_atomic64
pc_errors
;
87
struct
m0_atomic64
pc_retries
;
88
int
pc_verbose
;
89
};
90
91
struct
nlx_ping_client_params
{
92
const
struct
nlx_ping_ops
*
ops
;
93
int
loops
;
94
unsigned
int
nr_bufs
;
95
int
client_id
;
96
uint64_t
bulk_size
;
97
int
send_msg_size
;
98
int
bulk_timeout
;
99
int
msg_timeout
;
100
const
char
*
client_network
;
101
uint32_t
client_pid
;
102
uint32_t
client_portal
;
103
int32_t
client_tmid
;
104
const
char
*
server_network
;
105
uint32_t
server_pid
;
106
uint32_t
server_portal
;
107
int32_t
server_tmid
;
108
int
debug
;
109
int
verbose
;
110
};
111
112
enum
{
113
PING_CLIENT_PORTAL
= 39,
114
PING_CLIENT_DYNAMIC_TMID
= -1,
115
PING_SERVER_PORTAL
= 39,
116
PING_SERVER_TMID
= 12,
117
118
PING_DEF_BUFS
= 20,
119
PING_MIN_BUFS
= 4,
120
PING_DEF_CLIENT_THREADS
= 1,
121
PING_MAX_CLIENT_THREADS
= 32,
122
PING_DEF_LOOPS
= 1,
123
124
PING_DEF_MSG_TIMEOUT
= 5,
125
PING_DEF_BULK_TIMEOUT
= 10,
126
127
PING_SEGMENT_SIZE
= 4096,
128
PING_SEGMENT_SHIFT
= 12,
129
PING_MAX_SEGMENTS
= 256,
130
PING_MAX_BUFFER_SIZE
=
PING_MAX_SEGMENTS
*
PING_SEGMENT_SIZE
,
131
PING_DEF_SEGMENTS
= 8,
132
PING_DEF_BUFFER_SIZE
=
PING_DEF_SEGMENTS
*
PING_SEGMENT_SIZE
,
133
134
PING_MSG_OVERHEAD
= 2,
/* Msg type byte + '\0' */
135
136
PING_DEF_MIN_RECV_SIZE
= 100,
/* empirical observation: 58 */
137
138
ONE_MILLION
= 1000000ULL,
139
SEC_PER_HR
= 60 * 60,
140
SEC_PER_MIN
= 60,
141
};
142
143
/* Debug printf macro */
144
#ifdef __KERNEL__
145
#define PING_ERR(fmt, ...) printk(KERN_ERR fmt , ## __VA_ARGS__)
146
#else
147
#include <stdio.h>
148
#define PING_ERR(fmt, ...) fprintf(stderr, fmt , ## __VA_ARGS__)
149
#endif
150
151
#define PING_OUT(ctx, num, fmt, ...) \
152
do { \
153
if ((ctx)->pc_verbose >= num) \
154
(ctx)->pc_ops->pf(fmt , ## __VA_ARGS__);\
155
} while (0)
156
157
void
nlx_ping_server_spawn
(
struct
m0_thread
*
server_thread
,
158
struct
nlx_ping_ctx
*
sctx
);
159
void
nlx_ping_server_should_stop
(
struct
nlx_ping_ctx
*
ctx
);
160
void
nlx_ping_client
(
struct
nlx_ping_client_params
*
params
);
161
162
void
nlx_ping_print_qstats_tm
(
struct
nlx_ping_ctx
*
ctx
,
bool
reset);
163
int
nlx_ping_print_qstats_total
(
const
char
*ident,
164
const
struct
nlx_ping_ops
*
ops
);
165
uint64_t
nlx_ping_parse_uint64
(
const
char
*
s
);
166
void
nlx_ping_init
(
void
);
167
void
nlx_ping_fini
(
void
);
168
169
#endif
/* __MOTR_NET_LNET_PING_H__ */
170
171
/*
172
* Local variables:
173
* c-indentation-style: "K&R"
174
* c-basic-offset: 8
175
* tab-width: 8
176
* fill-column: 79
177
* scroll-step: 1
178
* End:
179
*/
nlx_ping_ctx::pc_rpid
uint32_t pc_rpid
Definition:
ping.h:49
nlx_ping_ctx::pc_rportal
uint32_t pc_rportal
Definition:
ping.h:50
ONE_MILLION
Definition:
ping.h:138
PING_DEF_BUFFER_SIZE
Definition:
ping.h:132
m0_cond
Definition:
cond.h:99
nlx_ping_ops
Definition:
ping.h:31
nlx_ping_ctx::pc_cond
struct m0_cond pc_cond
Definition:
ping.h:66
nlx_ping_ctx::pc_server_bulk_delay
int pc_server_bulk_delay
Definition:
ping.h:72
server_thread
static struct m0_thread server_thread
Definition:
m0lnetping_main.c:175
nlx_ping_fini
void nlx_ping_fini(void)
Definition:
ping.c:1921
m0_clink
Definition:
chan.h:274
nlx_ping_client_params::debug
int debug
Definition:
ping.h:108
nlx_ping_init
void nlx_ping_init(void)
Definition:
ping.c:1916
m0_net_buffer
Definition:
net.h:1316
PING_DEF_CLIENT_THREADS
Definition:
ping.h:120
nlx_ping_client_params::server_tmid
int32_t server_tmid
Definition:
ping.h:107
nlx_ping_client_params::verbose
int verbose
Definition:
ping.h:109
error_injection.int
int
Definition:
error_injection.py:50
m0_net_xprt
Definition:
net.h:124
nlx_ping_client_params::client_id
int client_id
Definition:
ping.h:95
nlx_ping_client_params::send_msg_size
int send_msg_size
Definition:
ping.h:97
nlx_ping_client_params
Definition:
ping.h:91
nlx_ping_ctx::pc_compare_buf
const char * pc_compare_buf
Definition:
ping.h:69
nlx_ping_ctx::pc_dom
struct m0_net_domain pc_dom
Definition:
ping.h:43
nlx_ping_ctx::pc_nr_bufs
uint32_t pc_nr_bufs
Definition:
ping.h:53
nlx_ping_ops::pf
int(* pf)(const char *format,...) __attribute__((format(printf
Definition:
ping.h:32
m0_net_transfer_mc
Definition:
net.h:811
nlx_ping_ctx::pc_ops
const struct nlx_ping_ops * pc_ops
Definition:
ping.h:41
__attribute__
enum m0_md_lustre_logrec_type __attribute__
Definition:
balloc.c:2745
PING_DEF_BUFS
Definition:
ping.h:118
nlx_ping_ctx::pc_seg_shift
uint32_t pc_seg_shift
Definition:
ping.h:57
nlx_ping_ctx::pc_ident
const char * pc_ident
Definition:
ping.h:68
nlx_ping_ctx::pc_portal
uint32_t pc_portal
Definition:
ping.h:46
PING_DEF_BULK_TIMEOUT
Definition:
ping.h:125
nlx_ping_client_params::server_pid
uint32_t server_pid
Definition:
ping.h:105
nlx_ping_ctx::pc_msg_timeout
int pc_msg_timeout
Definition:
ping.h:71
nlx_ping_server_spawn
void nlx_ping_server_spawn(struct m0_thread *server_thread, struct nlx_ping_ctx *sctx)
Definition:
ping.c:1496
nlx_ping_client_params::client_tmid
int32_t client_tmid
Definition:
ping.h:103
nlx_ping_client_params::ops
const struct nlx_ping_ops * ops
Definition:
ping.h:92
nlx_ping_client_params::server_network
const char * server_network
Definition:
ping.h:104
nlx_ping_client_params::bulk_size
uint64_t bulk_size
Definition:
ping.h:96
nlx_ping_client_params::client_network
const char * client_network
Definition:
ping.h:100
PING_SERVER_PORTAL
Definition:
ping.h:115
nlx_ping_client_params::client_pid
uint32_t client_pid
Definition:
ping.h:101
m0_net_domain
Definition:
net.h:376
nlx_ping_ctx::pc_wq_chan
struct m0_chan pc_wq_chan
Definition:
ping.h:78
nlx_ping_ctx::pc_tm
struct m0_net_transfer_mc pc_tm
Definition:
ping.h:64
nlx_ping_ctx::pc_rtmid
int32_t pc_rtmid
Definition:
ping.h:51
PING_DEF_LOOPS
Definition:
ping.h:122
nlx_ping_ctx::pc_network
const char * pc_network
Definition:
ping.h:44
nlx_ping_ctx::pc_rnetwork
const char * pc_rnetwork
Definition:
ping.h:48
nlx_ping_ctx::pc_errors
struct m0_atomic64 pc_errors
Definition:
ping.h:86
SEC_PER_MIN
Definition:
ping.h:140
PING_MAX_BUFFER_SIZE
Definition:
ping.h:130
SEC_PER_HR
Definition:
ping.h:139
nlx_ping_ctx::pc_sync_events
bool pc_sync_events
Definition:
ping.h:77
sctx
static struct m0_rpc_server_ctx sctx
Definition:
console.c:88
nlx_ping_ctx::pc_blocked_count
uint64_t pc_blocked_count
Definition:
ping.h:84
nlx_ping_print_qstats_tm
void nlx_ping_print_qstats_tm(struct nlx_ping_ctx *ctx, bool reset)
Definition:
ping.c:136
nlx_ping_ctx::pc_max_recv_msgs
int pc_max_recv_msgs
Definition:
ping.h:59
m0_thread
Definition:
thread.h:110
nlx_ping_ctx::pc_net_clink
struct m0_clink pc_net_clink
Definition:
ping.h:82
nlx_ping_ctx::pc_tmid
int32_t pc_tmid
Definition:
ping.h:47
m0_chan
Definition:
chan.h:229
nlx_ping_client_params::nr_bufs
unsigned int nr_bufs
Definition:
ping.h:94
nlx_ping_ctx::pc_retries
struct m0_atomic64 pc_retries
Definition:
ping.h:87
nlx_ping_ctx::pc_net_signal_count
uint64_t pc_net_signal_count
Definition:
ping.h:83
PING_SEGMENT_SIZE
Definition:
ping.h:127
nlx_ping_ctx::pc_worked_count
uint64_t pc_worked_count
Definition:
ping.h:85
ctx
static struct fdmi_ctx ctx
Definition:
main.c:80
nlx_ping_ctx::pc_interfaces
char ** pc_interfaces
Definition:
ping.h:76
nlx_ping_ctx::pc_wq_signal_count
uint64_t pc_wq_signal_count
Definition:
ping.h:80
nlx_ping_ctx::pc_nbs
struct m0_net_buffer * pc_nbs
Definition:
ping.h:61
m0_list
Definition:
list.h:72
nlx_ping_ctx::pc_buf_callbacks
const struct m0_net_buffer_callbacks * pc_buf_callbacks
Definition:
ping.h:62
hist.format
format
Definition:
hist.py:128
nlx_ping_client_params::loops
int loops
Definition:
ping.h:93
nlx_ping_ctx::pc_bulk_timeout
int pc_bulk_timeout
Definition:
ping.h:70
nlx_ping_ctx::pc_nr_recv_bufs
uint32_t pc_nr_recv_bufs
Definition:
ping.h:54
nlx_ping_client_params::bulk_timeout
int bulk_timeout
Definition:
ping.h:98
PING_CLIENT_PORTAL
Definition:
ping.h:113
bitmap.h
nlx_ping_client_params::client_portal
uint32_t client_portal
Definition:
ping.h:102
m0_bitmap
Definition:
bitmap.h:42
nlx_ping_ctx::pc_ready
bool pc_ready
Definition:
ping.h:75
nlx_ping_print_qstats_total
int nlx_ping_print_qstats_total(const char *ident, const struct nlx_ping_ops *ops)
Definition:
ping.c:151
nlx_ping_server_should_stop
void nlx_ping_server_should_stop(struct nlx_ping_ctx *ctx)
Definition:
ping.c:1485
PING_DEF_SEGMENTS
Definition:
ping.h:131
params
Definition:
common.h:34
PING_MIN_BUFS
Definition:
ping.h:119
nlx_ping_ctx::pc_segments
uint32_t pc_segments
Definition:
ping.h:55
nlx_ping_ctx::pc_wq_clink
struct m0_clink pc_wq_clink
Definition:
ping.h:79
nlx_ping_client
void nlx_ping_client(struct nlx_ping_client_params *params)
Definition:
ping.c:1837
nlx_ping_ctx::pc_verbose
int pc_verbose
Definition:
ping.h:88
nlx_ping_ctx::pc_bulk_size
uint64_t pc_bulk_size
Definition:
ping.h:60
nlx_ping_parse_uint64
uint64_t nlx_ping_parse_uint64(const char *s)
Definition:
ping.c:171
nlx_ping_ctx::pc_tm_debug
int pc_tm_debug
Definition:
ping.h:74
nlx_ping_ctx::pc_net_chan
struct m0_chan pc_net_chan
Definition:
ping.h:81
PING_DEF_MIN_RECV_SIZE
Definition:
ping.h:136
nlx_ping_client_params::server_portal
uint32_t server_portal
Definition:
ping.h:106
nlx_ping_ctx::pc_nbbm
struct m0_bitmap pc_nbbm
Definition:
ping.h:63
PING_SERVER_TMID
Definition:
ping.h:116
nlx_ping_ctx::pc_status
int32_t pc_status
Definition:
ping.h:52
nlx_ping_ops::pqs
int(*) void(* pqs)(struct nlx_ping_ctx *ctx, bool reset)
Definition:
ping.h:34
ctx
Definition:
nucleus.c:42
PING_MAX_SEGMENTS
Definition:
ping.h:129
m0_atomic64
Definition:
atomic64.h:37
PING_DEF_MSG_TIMEOUT
Definition:
ping.h:124
ops
struct m0_fom_ops ops
Definition:
io_foms.c:623
nlx_ping_ctx::pc_min_recv_size
int pc_min_recv_size
Definition:
ping.h:58
PING_MAX_CLIENT_THREADS
Definition:
ping.h:121
m0_mutex
Definition:
mutex.h:47
s
static struct m0_addb2_source * s
Definition:
consumer.c:39
nlx_ping_ctx
Definition:
ping.h:40
PING_CLIENT_DYNAMIC_TMID
Definition:
ping.h:114
PING_SEGMENT_SHIFT
Definition:
ping.h:128
nlx_ping_ctx::pc_xprt
const struct m0_net_xprt * pc_xprt
Definition:
ping.h:42
nlx_ping_ctx::pc_dom_debug
int pc_dom_debug
Definition:
ping.h:73
nlx_ping_ctx::pc_mutex
struct m0_mutex pc_mutex
Definition:
ping.h:65
nlx_ping_client_params::msg_timeout
int msg_timeout
Definition:
ping.h:99
PING_MSG_OVERHEAD
Definition:
ping.h:134
nlx_ping_ctx::pc_pid
uint32_t pc_pid
Definition:
ping.h:45
nlx_ping_ctx::pc_seg_size
uint32_t pc_seg_size
Definition:
ping.h:56
nlx_ping_ctx::pc_work_queue
struct m0_list pc_work_queue
Definition:
ping.h:67
m0_net_buffer_callbacks
Definition:
net.h:1271
net
lnet
st
ping.h
Generated on Thu Apr 14 2022 14:02:58 for Motr by
1.8.14