aboutsummaryrefslogtreecommitdiffstats
path: root/docs/cpta/trending/vhost-2n-clx-xxv710.rst
blob: 06f170946997d20a29de92fe04506f7115c6252a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
2n-clx-xxv710
-------------

64b-vhost-base-avf-testpmd
``````````````````````````

2t1c
::::

.. raw:: html

    <a name="64b-2t1c-base-avf-testpmd"></a>
    <center>
    Links to builds:
    <a href="https://packagecloud.io/app/fdio/master/search?dist=ubuntu%2Fbionic" target="_blank">vpp-ref</a>,
    <a href="https://jenkins.fd.io/view/csit/job/csit-vpp-perf-mrr-daily-master-2n-clx" target="_blank">csit-ref</a>
    <iframe width="1100" height="800" frameborder="0" scrolling="no" src="../_static/vpp/2n-clx-xxv710-64b-2t1c-vhost-base-avf-testpmd.html"></iframe>
    <p><br></p>
    </center>

4t2c
::::

.. raw:: html

    <a name="64b-4t2c-base-avf-testpmd"></a>
    <center>
    Links to builds:
    <a href="https://packagecloud.io/app/fdio/master/search?dist=ubuntu%2Fbionic" target="_blank">vpp-ref</a>,
    <a href="https://jenkins.fd.io/view/csit/job/csit-vpp-perf-mrr-daily-master-2n-clx" target="_blank">csit-ref</a>
    <iframe width="1100" height="800" frameborder="0" scrolling="no" src="../_static/vpp/2n-clx-xxv710-64b-4t2c-vhost-base-avf-testpmd.html"></iframe>
    <p><br></p>
    </center>

8t4c
::::

.. raw:: html

    <a name="64b-8t4c-base-avf-testpmd"></a>
    <center>
    Links to builds:
    <a href="https://packagecloud.io/app/fdio/master/search?dist=ubuntu%2Fbionic" target="_blank">vpp-ref</a>,
    <a href="https://jenkins.fd.io/view/csit/job/csit-vpp-perf-mrr-daily-master-2n-clx" target="_blank">csit-ref</a>
    <iframe width="1100" height="800" frameborder="0" scrolling="no" src="../_static/vpp/2n-clx-xxv710-64b-8t4c-vhost-base-avf-testpmd.html"></iframe>
    <p><br></p>
    </center>

64b-vhost-base-avf-vpp
``````````````````````

2t1c
::::

.. raw:: html

    <a name="64b-2t1c-base-avf-vpp"></a>
    <center>
    Links to builds:
    <a href="https://packagecloud.io/app/fdio/master/search?dist=ubuntu%2Fbionic" target="_blank">vpp-ref</a>,
    <a href="https://jenkins.fd.io/view/csit/job/csit-vpp-perf-mrr-daily-master-2n-clx" target="_blank">csit-ref</a>
    <iframe width="1100" height="800" frameborder="0" scrolling="no" src="../_static/vpp/2n-clx-xxv710-64b-2t1c-vhost-base-avf-vpp.html"></iframe>
    <p><br></p>
    </center>

4t2c
::::

.. raw:: html

    <a name="64b-4t2c-base-avf-vpp"></a>
    <center>
    Links to builds:
    <a href="https://packagecloud.io/app/fdio/master/search?dist=ubuntu%2Fbionic" target="_blank">vpp-ref</a>,
    <a href="https://jenkins.fd.io/view/csit/job/csit-vpp-perf-mrr-daily-master-2n-clx" target="_blank">csit-ref</a>
    <iframe width="1100" height="800" frameborder="0" scrolling="no" src="../_static/vpp/2n-clx-xxv710-64b-4t2c-vhost-base-avf-vpp.html"></iframe>
    <p><br></p>
    </center>

8t4c
::::

.. raw:: html

    <a name="64b-8t4c-base-avf-vpp"></a>
    <center>
    Links to builds:
    <a href="https://packagecloud.io/app/fdio/master/search?dist=ubuntu%2Fbionic" target="_blank">vpp-ref</a>,
    <a href="https://jenkins.fd.io/view/csit/job/csit-vpp-perf-mrr-daily-master-2n-clx" target="_blank">csit-ref</a>
    <iframe width="1100" height="800" frameborder="0" scrolling="no" src="../_static/vpp/2n-clx-xxv710-64b-8t4c-vhost-base-avf-vpp.html"></iframe>
    <p><br></p>
    </center>

64b-vhost-base-dpdk-testpmd
```````````````````````````

2t1c
::::

.. raw:: html

    <a name="64b-2t1c-base-dpdk-testpmd"></a>
    <center>
    Links to builds:
    <a href="https://packagecloud.io/app/fdio/master/search?dist=ubuntu%2Fbionic" target="_blank">vpp-ref</a>,
    <a href="https://jenkins.fd.io/view/csit/job/csit-vpp-perf-mrr-daily-master-2n-clx" target="_blank">csit-ref</a>
    <iframe width="1100" height="800" frameborder="0" scrolling="no" src="../_static/vpp/2n-clx-xxv710-64b-2t1c-vhost-base-dpdk-testpmd.html"></iframe>
    <p><br></p>
    </center>

4t2c
::::

.. raw:: html

    <a name="64b-4t2c-base-dpdk-testpmd"></a>
    <center>
    Links to builds:
    <a href="https://packagecloud.io/app/fdio/master/search?dist=ubuntu%2Fbionic" target="_blank">vpp-ref</a>,
    <a href="https://jenkins.fd.io/view/csit/job/csit-vpp-perf-mrr-daily-master-2n-clx" target="_blank">csit-ref</a>
    <iframe width="1100" height="800" frameborder="0" scrolling="no" src="../_static/vpp/2n-clx-xxv710-64b-4t2c-vhost-base-dpdk-testpmd.html"></iframe>
    <p><br></p>
    </center>

8t4c
::::

.. raw:: html

    <a name="64b-8t4c-base-dpdk-testpmd"></a>
    <center>
    Links to builds:
    <a href="https://packagecloud.io/app/fdio/master/search?dist=ubuntu%2Fbionic" target="_blank">vpp-ref</a>,
    <a href="https://jenkins.fd.io/view/csit/job/csit-vpp-perf-mrr-daily-master-2n-clx" target="_blank">csit-ref</a>
    <iframe width="1100" height="800" frameborder="0" scrolling="no" src="../_static/vpp/2n-clx-xxv710-64b-8t4c-vhost-base-dpdk-testpmd.html"></iframe>
    <p><br></p>
    </center>

64b-vhost-base-dpdk-vpp
```````````````````````

2t1c
::::

.. raw:: html

    <a name="64b-2t1c-base-dpdk-vpp"></a>
    <center>
    Links to builds:
    <a href="https://packagecloud.io/app/fdio/master/search?dist=ubuntu%2Fbionic" target="_blank">vpp-ref</a>,
    <a href="https://jenkins.fd.io/view/csit/job/csit-vpp-perf-mrr-daily-master-2n-clx" target="_blank">csit-ref</a>
    <iframe width="1100" height="800" frameborder="0" scrolling="no" src="../_static/vpp/2n-clx-xxv710-64b-2t1c-vhost-base-dpdk-vpp.html"></iframe>
    <p><br></p>
    </center>

4t2c
::::

.. raw:: html

    <a name="64b-4t2c-base-dpdk-vpp"></a>
    <center>
    Links to builds:
    <a href="https://packagecloud.io/app/fdio/master/search?dist=ubuntu%2Fbionic" target="_blank">vpp-ref</a>,
    <a href="https://jenkins.fd.io/view/csit/job/csit-vpp-perf-mrr-daily-master-2n-clx" target="_blank">csit-ref</a>
    <iframe width="1100" height="800" frameborder="0" scrolling="no" src="../_static/vpp/2n-clx-xxv710-64b-4t2c-vhost-base-dpdk-vpp.html"></iframe>
    <p><br></p>
    </center>

8t4c
::::

.. raw:: html

    <a name="64b-8t4c-base-dpdk-vpp"></a>
    <center>
    Links to builds:
    <a href="https://packagecloud.io/app/fdio/master/search?dist=ubuntu%2Fbionic" target="_blank">vpp-ref</a>,
    <a href="https://jenkins.fd.io/view/csit/job/csit-vpp-perf-mrr-daily-master-2n-clx" target="_blank">csit-ref</a>
    <iframe width="1100" height="800" frameborder="0" scrolling="no" src="../_static/vpp/2n-clx-xxv710-64b-8t4c-vhost-base-dpdk-vpp.html"></iframe>
    <p><br></p>
    </center>
an class="o">= session_node_lookup_fifo_event (ss->server_tx_fifo, e); s = format (s, " session node event: %s\n", found ? "found" : "not found"); } return s; } /** * Format stream session as per the following format * * verbose: * "Connection", "Rx fifo", "Tx fifo", "Session Index" * non-verbose: * "Connection" */ u8 * format_stream_session (u8 * s, va_list * args) { stream_session_t *ss = va_arg (*args, stream_session_t *); int verbose = va_arg (*args, int); transport_proto_vft_t *tp_vft; u8 *str = 0; tp_vft = session_get_transport_vft (ss->session_type); if (verbose == 1 && ss->session_state >= SESSION_STATE_ACCEPTING) str = format (0, "%-10u%-10u%-10lld", svm_fifo_max_dequeue (ss->server_rx_fifo), svm_fifo_max_enqueue (ss->server_tx_fifo), stream_session_get_index (ss)); if (ss->session_state == SESSION_STATE_READY || ss->session_state == SESSION_STATE_ACCEPTING) { s = format (s, "%U", tp_vft->format_connection, ss->connection_index, ss->thread_index, verbose); if (verbose == 1) s = format (s, "%v", str); if (verbose > 1) s = format (s, "%U", format_stream_session_fifos, ss, verbose); } else if (ss->session_state == SESSION_STATE_LISTENING) { s = format (s, "%-40U%v", tp_vft->format_listener, ss->connection_index, str); } else if (ss->session_state == SESSION_STATE_CONNECTING) { s = format (s, "%-40U%v", tp_vft->format_half_open, ss->connection_index, str); } else if (ss->session_state == SESSION_STATE_CLOSED) { s = format (s, "[CL] %U", tp_vft->format_connection, ss->connection_index, ss->thread_index, verbose); if (verbose == 1) s = format (s, "%v", str); if (verbose > 1) s = format (s, "%U", format_stream_session_fifos, ss, verbose); } else { clib_warning ("Session in state: %d!", ss->session_state); } vec_free (str); return s; } uword unformat_stream_session_id (unformat_input_t * input, va_list * args) { u8 *proto = va_arg (*args, u8 *); ip46_address_t *lcl = va_arg (*args, ip46_address_t *); ip46_address_t *rmt = va_arg (*args, ip46_address_t *); u16 *lcl_port = va_arg (*args, u16 *); u16 *rmt_port = va_arg (*args, u16 *); u8 *is_ip4 = va_arg (*args, u8 *); u8 tuple_is_set = 0; memset (lcl, 0, sizeof (*lcl)); memset (rmt, 0, sizeof (*rmt)); if (unformat (input, "tcp")) { *proto = TRANSPORT_PROTO_TCP; } if (unformat (input, "udp")) { *proto = TRANSPORT_PROTO_UDP; } else if (unformat (input, "%U:%d->%U:%d", unformat_ip4_address, &lcl->ip4, lcl_port, unformat_ip4_address, &rmt->ip4, rmt_port)) { *is_ip4 = 1; tuple_is_set = 1; } else if (unformat (input, "%U:%d->%U:%d", unformat_ip6_address, &lcl->ip6, lcl_port, unformat_ip6_address, &rmt->ip6, rmt_port)) { *is_ip4 = 0; tuple_is_set = 1; } else return 0; if (tuple_is_set) return 1; return 0; } uword unformat_stream_session (unformat_input_t * input, va_list * args) { stream_session_t **result = va_arg (*args, stream_session_t **); stream_session_t *s; u8 proto = ~0; ip46_address_t lcl, rmt; u32 lcl_port = 0, rmt_port = 0; u8 is_ip4 = 0, s_type = ~0, id_is_set = 0; if (unformat (input, "%U", unformat_stream_session_id, &proto, &lcl, &rmt, &lcl_port, &rmt_port, &is_ip4)) { id_is_set = 1; } else return 0; if (!id_is_set) { return 0; } s_type = session_type_from_proto_and_ip (proto, is_ip4); if (is_ip4) s = stream_session_lookup4 (&lcl.ip4, &rmt.ip4, clib_host_to_net_u16 (lcl_port), clib_host_to_net_u16 (rmt_port), s_type); else s = stream_session_lookup6 (&lcl.ip6, &rmt.ip6, clib_host_to_net_u16 (lcl_port), clib_host_to_net_u16 (rmt_port), s_type); if (s) { *result = s; return 1; } return 0; } uword unformat_transport_connection (unformat_input_t * input, va_list * args) { transport_connection_t **result = va_arg (*args, transport_connection_t **); u32 suggested_proto = va_arg (*args, u32); transport_connection_t *tc; u8 proto = ~0; ip46_address_t lcl, rmt; u32 lcl_port = 0, rmt_port = 0; u8 is_ip4 = 0, s_type = ~0, id_is_set = 0; if (unformat (input, "%U", unformat_stream_session_id, &proto, &lcl, &rmt, &lcl_port, &rmt_port, &is_ip4)) { id_is_set = 1; } else return 0; if (!id_is_set) { return 0; } proto = (proto == (u8) ~ 0) ? suggested_proto : proto; if (proto == (u8) ~ 0) return 0; s_type = session_type_from_proto_and_ip (proto, is_ip4); if (is_ip4) tc = stream_session_lookup_transport4 (&lcl.ip4, &rmt.ip4, clib_host_to_net_u16 (lcl_port), clib_host_to_net_u16 (rmt_port), s_type); else tc = stream_session_lookup_transport6 (&lcl.ip6, &rmt.ip6, clib_host_to_net_u16 (lcl_port), clib_host_to_net_u16 (rmt_port), s_type); if (tc) { *result = tc; return 1; } return 0; } static clib_error_t * show_session_command_fn (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd) { session_manager_main_t *smm = &session_manager_main; int verbose = 0, i; stream_session_t *pool; stream_session_t *s; u8 *str = 0, one_session = 0; if (!smm->is_enabled) { return clib_error_return (0, "session layer is not enabled"); } while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { if (unformat (input, "verbose %d", &verbose)) ; else if (unformat (input, "verbose")) verbose = 1; else if (unformat (input, "%U", unformat_stream_session, &s)) { one_session = 1; } else return clib_error_return (0, "unknown input `%U'", format_unformat_error, input); } if (one_session) { vlib_cli_output (vm, "%U", format_stream_session, s, 3); return 0; } for (i = 0; i < vec_len (smm->sessions); i++) { u32 once_per_pool; pool = smm->sessions[i]; once_per_pool = 1; if (pool_elts (pool)) { vlib_cli_output (vm, "Thread %d: %d active sessions", i, pool_elts (pool)); if (verbose) { if (once_per_pool && verbose == 1) { str = format (str, "%-50s%-15s%-10s%-10s%-10s", "Connection", "State", "Rx-f", "Tx-f", "S-idx"); vlib_cli_output (vm, "%v", str); vec_reset_length (str); once_per_pool = 0; } /* *INDENT-OFF* */ pool_foreach (s, pool, ({ vec_reset_length (str); str = format (str, "%U", format_stream_session, s, verbose); vlib_cli_output (vm, "%v", str); })); /* *INDENT-ON* */ } } else vlib_cli_output (vm, "Thread %d: no active sessions", i); vec_reset_length (str); } vec_free (str); return 0; } /* *INDENT-OFF* */ VLIB_CLI_COMMAND (vlib_cli_show_session_command) = { .path = "show session", .short_help = "show session [verbose [nnn]]", .function = show_session_command_fn, }; /* *INDENT-ON* */ static int clear_session (stream_session_t * s) { application_t *server = application_get (s->app_index); server->cb_fns.session_disconnect_callback (s); return 0; } static clib_error_t * clear_session_command_fn (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd) { session_manager_main_t *smm = &session_manager_main; u32 thread_index = 0, clear_all = 0; u32 session_index = ~0; stream_session_t **pool, *session; if (!smm->is_enabled) { return clib_error_return (0, "session layer is not enabled"); } while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { if (unformat (input, "thread %d", &thread_index)) ; else if (unformat (input, "session %d", &session_index)) ; else if (unformat (input, "all")) clear_all = 1; else return clib_error_return (0, "unknown input `%U'", format_unformat_error, input); } if (!clear_all && session_index == ~0) return clib_error_return (0, "session <nn> required, but not set."); if (session_index != ~0) { session = stream_session_get_if_valid (session_index, thread_index); if (!session) return clib_error_return (0, "no session %d on thread %d", session_index, thread_index); clear_session (session); } if (clear_all) { /* *INDENT-OFF* */ vec_foreach (pool, smm->sessions) { pool_foreach(session, *pool, ({ clear_session (session); })); }; /* *INDENT-ON* */ } return 0; } /* *INDENT-OFF* */ VLIB_CLI_COMMAND (clear_session_command, static) = { .path = "clear session", .short_help = "clear session thread <thread> session <index>", .function = clear_session_command_fn, }; /* *INDENT-ON* */ static clib_error_t * show_session_fifo_trace_command_fn (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd) { stream_session_t *s = 0; u8 is_rx = 0, *str = 0; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { if (unformat (input, "%U", unformat_stream_session, &s)) ; else if (unformat (input, "rx")) is_rx = 1; else if (unformat (input, "tx")) is_rx = 0; else return clib_error_return (0, "unknown input `%U'", format_unformat_error, input); } if (!SVM_FIFO_TRACE) { vlib_cli_output (vm, "fifo tracing not enabled"); return 0; } if (!s) { vlib_cli_output (vm, "could not find session"); return 0; } str = is_rx ? svm_fifo_dump_trace (str, s->server_rx_fifo) : svm_fifo_dump_trace (str, s->server_tx_fifo); vlib_cli_output (vm, "%v", str); return 0; } /* *INDENT-OFF* */ VLIB_CLI_COMMAND (show_session_fifo_trace_command, static) = { .path = "show session fifo trace", .short_help = "show session fifo trace <session>", .function = show_session_fifo_trace_command_fn, }; /* *INDENT-ON* */ static clib_error_t * session_replay_fifo_command_fn (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd) { stream_session_t *s = 0; u8 is_rx = 0, *str = 0; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { if (unformat (input, "%U", unformat_stream_session, &s)) ; else if (unformat (input, "rx")) is_rx = 1; else return clib_error_return (0, "unknown input `%U'", format_unformat_error, input); } if (!SVM_FIFO_TRACE) { vlib_cli_output (vm, "fifo tracing not enabled"); return 0; } if (!s) { vlib_cli_output (vm, "could not find session"); return 0; } str = is_rx ? svm_fifo_replay (str, s->server_rx_fifo, 0, 1) : svm_fifo_replay (str, s->server_tx_fifo, 0, 1); vlib_cli_output (vm, "%v", str); return 0; } /* *INDENT-OFF* */ VLIB_CLI_COMMAND (session_replay_fifo_trace_command, static) = { .path = "session replay fifo", .short_help = "session replay fifo <session>", .function = session_replay_fifo_command_fn, }; /* *INDENT-ON* */ static clib_error_t * session_enable_disable_fn (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd) { u8 is_en = 1; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { if (unformat (input, "enable")) is_en = 1; else if (unformat (input, "disable")) is_en = 0; else return clib_error_return (0, "unknown input `%U'", format_unformat_error, input); } return vnet_session_enable_disable (vm, is_en); } /* *INDENT-OFF* */ VLIB_CLI_COMMAND (session_enable_disable_command, static) = { .path = "session", .short_help = "session [enable|disable]", .function = session_enable_disable_fn, }; /* *INDENT-ON* */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */