FD.io VPP
v21.10.1-2-g0a485f517
Vector Packet Processing
inst_and_clock.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2020 Cisco and/or its affiliates.
3
* Licensed under the Apache License, Version 2.0 (the "License");
4
* you may not use this file except in compliance with the License.
5
* You may obtain a copy of the License at:
6
*
7
* http://www.apache.org/licenses/LICENSE-2.0
8
*
9
* Unless required by applicable law or agreed to in writing, software
10
* distributed under the License is distributed on an "AS IS" BASIS,
11
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
* See the License for the specific language governing permissions and
13
* limitations under the License.
14
*/
15
16
#include <
vnet/vnet.h
>
17
#include <perfmon/perfmon.h>
18
#include <
perfmon/intel/core.h
>
19
20
static
u8
*
21
format_inst_and_clock
(
u8
*s, va_list *args)
22
{
23
perfmon_node_stats_t
*ns = va_arg (*args,
perfmon_node_stats_t
*);
24
int
row = va_arg (*args,
int
);
25
26
switch
(row)
27
{
28
case
0:
29
s =
format
(s,
"%lu"
, ns->
n_calls
);
30
break
;
31
case
1:
32
s =
format
(s,
"%lu"
, ns->
n_packets
);
33
break
;
34
case
2:
35
s =
format
(s,
"%.2f"
, (
f64
) ns->
n_packets
/ ns->
n_calls
);
36
break
;
37
case
3:
38
s =
format
(s,
"%.2f"
, (
f64
) ns->
value
[1] / ns->
n_packets
);
39
break
;
40
case
4:
41
s =
format
(s,
"%.2f"
, (
f64
) ns->
value
[0] / ns->
n_packets
);
42
break
;
43
case
5:
44
s =
format
(s,
"%.2f"
, (
f64
) ns->
value
[0] / ns->
value
[1]);
45
break
;
46
}
47
return
s;
48
}
49
50
PERFMON_REGISTER_BUNDLE
(inst_and_clock) = {
51
.name =
"inst-and-clock"
,
52
.description =
"instructions/packet, cycles/packet and IPC"
,
53
.source =
"intel-core"
,
54
.type =
PERFMON_BUNDLE_TYPE_NODE
,
55
.events[0] = INTEL_CORE_E_INST_RETIRED_ANY_P,
56
.events[1] = INTEL_CORE_E_CPU_CLK_UNHALTED_THREAD_P,
57
.events[2] = INTEL_CORE_E_CPU_CLK_UNHALTED_REF_TSC,
58
.n_events = 3,
59
.format_fn =
format_inst_and_clock
,
60
.column_headers =
PERFMON_STRINGS
(
"Calls"
,
"Packets"
,
"Packets/Call"
,
61
"Clocks/Packet"
,
"Instructions/Packet"
,
62
"IPC"
),
63
};
perfmon_node_stats_t
Definition:
perfmon.h:140
perfmon_node_stats_t::n_packets
u64 n_packets
Definition:
perfmon.h:144
PERFMON_BUNDLE_TYPE_NODE
@ PERFMON_BUNDLE_TYPE_NODE
Definition:
perfmon.h:31
perfmon_node_stats_t::n_calls
u64 n_calls
Definition:
perfmon.h:143
format_inst_and_clock
static u8 * format_inst_and_clock(u8 *s, va_list *args)
Definition:
inst_and_clock.c:21
PERFMON_STRINGS
#define PERFMON_STRINGS(...)
Definition:
perfmon.h:226
f64
double f64
Definition:
types.h:142
format
description fragment has unexpected format
Definition:
map.api:433
core.h
u8
unsigned char u8
Definition:
types.h:56
perfmon_node_stats_t::value
u64 value[PERF_MAX_EVENTS]
Definition:
perfmon.h:149
vnet.h
PERFMON_REGISTER_BUNDLE
PERFMON_REGISTER_BUNDLE(inst_and_clock)
src
plugins
perfmon
intel
bundle
inst_and_clock.c
Generated on Sat Jan 8 2022 10:35:48 for FD.io VPP by
1.8.17