@@ -916,7 +916,7 @@ CONFIG_RTE_LIBRTE_BITRATE=y
CONFIG_RTE_LIBRTE_LATENCY_STATS=y
#
-# Compile librte_telemetry
+# Compile librte_telemetry legacy support
#
CONFIG_RTE_LIBRTE_TELEMETRY=n
@@ -60,7 +60,7 @@ else
CFLAGS += -DALLOW_EXPERIMENTAL_API
CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)
-LDLIBS += -lm
+LDLIBS += -lm -lrte_telemetry
# workaround for a gcc bug with noreturn attribute
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12603
@@ -68,10 +68,6 @@ ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
CFLAGS_main.o += -Wno-return-type
endif
-ifeq ($(CONFIG_RTE_LIBRTE_TELEMETRY),y)
-LDLIBS += -lrte_telemetry
-endif
-
include $(RTE_SDK)/mk/rte.extapp.mk
endif
endif
@@ -46,9 +46,7 @@
#include <rte_spinlock.h>
#include <rte_power_empty_poll.h>
#include <rte_metrics.h>
-#ifdef RTE_LIBRTE_TELEMETRY
#include <rte_telemetry.h>
-#endif
#include "perf_core.h"
#include "main.h"
@@ -2123,7 +2121,7 @@ update_telemetry(__attribute__((unused)) struct rte_timer *tim,
if (ret < 0)
RTE_LOG(WARNING, POWER, "failed to update metrcis\n");
}
-#ifdef RTE_LIBRTE_TELEMETRY
+
static int
handle_app_stats(const char *cmd __rte_unused,
const char *params __rte_unused,
@@ -2141,7 +2139,7 @@ handle_app_stats(const char *cmd __rte_unused,
return used;
}
-#endif
+
static void
telemetry_setup_timer(void)
{
@@ -2541,10 +2539,8 @@ main(int argc, char **argv)
rte_spinlock_init(&stats[lcore_id].telemetry_lock);
}
rte_timer_init(&telemetry_timer);
-#ifdef RTE_LIBRTE_TELEMETRY
rte_telemetry_register_cmd("/l3fwd-power/stats",
handle_app_stats);
-#endif
rte_eal_mp_remote_launch(main_telemetry_loop, NULL,
SKIP_MASTER);
}
@@ -12,11 +12,7 @@ if not dpdk_conf.has('RTE_LIBRTE_POWER')
endif
allow_experimental_apis = true
-deps += ['power', 'timer', 'lpm', 'hash', 'metrics']
+deps += ['power', 'timer', 'lpm', 'hash', 'metrics', 'telemetry']
sources = files(
'main.c', 'perf_core.c'
)
-
-if dpdk_conf.has('RTE_LIBRTE_TELEMETRY')
- deps += ['telemetry']
-endif
@@ -4,8 +4,9 @@
include $(RTE_SDK)/mk/rte.vars.mk
DIRS-$(CONFIG_RTE_LIBRTE_KVARGS) += librte_kvargs
+DIRS-y += librte_telemetry
DIRS-$(CONFIG_RTE_LIBRTE_EAL) += librte_eal
-DEPDIRS-librte_eal := librte_kvargs
+DEPDIRS-librte_eal := librte_kvargs librte_telemetry
DIRS-$(CONFIG_RTE_LIBRTE_PCI) += librte_pci
DEPDIRS-librte_pci := librte_eal
DIRS-$(CONFIG_RTE_LIBRTE_RING) += librte_ring
@@ -22,8 +23,6 @@ DIRS-$(CONFIG_RTE_LIBRTE_CFGFILE) += librte_cfgfile
DEPDIRS-librte_cfgfile := librte_eal
DIRS-$(CONFIG_RTE_LIBRTE_CMDLINE) += librte_cmdline
DEPDIRS-librte_cmdline := librte_eal librte_net
-DIRS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += librte_telemetry
-DEPDIRS-librte_telemetry := librte_eal
DIRS-$(CONFIG_RTE_LIBRTE_ETHER) += librte_ethdev
DEPDIRS-librte_ethdev := librte_net librte_eal librte_mempool librte_ring
DEPDIRS-librte_ethdev += librte_mbuf
@@ -86,6 +86,8 @@ eal_long_options[] = {
{OPT_LEGACY_MEM, 0, NULL, OPT_LEGACY_MEM_NUM },
{OPT_SINGLE_FILE_SEGMENTS, 0, NULL, OPT_SINGLE_FILE_SEGMENTS_NUM},
{OPT_MATCH_ALLOCATIONS, 0, NULL, OPT_MATCH_ALLOCATIONS_NUM},
+ {OPT_TELEMETRY, 0, NULL, OPT_TELEMETRY_NUM },
+ {OPT_NO_TELEMETRY, 0, NULL, OPT_NO_TELEMETRY_NUM },
{0, 0, NULL, 0 }
};
@@ -1455,6 +1457,11 @@ eal_parse_common_option(int opt, const char *optarg,
return -1;
}
break;
+ case OPT_TELEMETRY_NUM:
+ break;
+ case OPT_NO_TELEMETRY_NUM:
+ conf->no_telemetry = 1;
+ break;
/* don't know what to do, leave this to caller */
default:
@@ -1698,6 +1705,8 @@ eal_common_usage(void)
" --"OPT_IN_MEMORY" Operate entirely in memory. This will\n"
" disable secondary process support\n"
" --"OPT_BASE_VIRTADDR" Base virtual address\n"
+ " --"OPT_TELEMETRY" Enable telemetry support (on by default)\n"
+ " --"OPT_NO_TELEMETRY" Disable telemetry support\n"
"\nEAL options for DEBUG use only:\n"
" --"OPT_HUGE_UNLINK" Unlink hugepage files after init\n"
" --"OPT_NO_HUGE" Use malloc instead of hugetlbfs\n"
@@ -82,6 +82,7 @@ struct internal_config {
rte_cpuset_t ctrl_cpuset; /**< cpuset for ctrl threads */
volatile unsigned int init_complete;
/**< indicates whether EAL has completed initialization */
+ unsigned int no_telemetry; /**< true to disable Telemetry */
};
extern struct internal_config internal_config; /**< Global EAL configuration. */
@@ -69,6 +69,10 @@ enum {
OPT_IOVA_MODE_NUM,
#define OPT_MATCH_ALLOCATIONS "match-allocations"
OPT_MATCH_ALLOCATIONS_NUM,
+#define OPT_TELEMETRY "telemetry"
+ OPT_TELEMETRY_NUM,
+#define OPT_NO_TELEMETRY "no-telemetry"
+ OPT_NO_TELEMETRY_NUM,
OPT_LONG_MAX_NUM
};
@@ -19,6 +19,7 @@ LDLIBS += -lexecinfo
LDLIBS += -lpthread
LDLIBS += -lgcc_s
LDLIBS += -lrte_kvargs
+LDLIBS += -lrte_telemetry
EXPORT_MAP := ../rte_eal_version.map
@@ -44,6 +44,7 @@
#include <rte_option.h>
#include <rte_atomic.h>
#include <malloc_heap.h>
+#include <rte_telemetry.h>
#include "eal_private.h"
#include "eal_thread.h"
@@ -952,6 +953,14 @@ rte_eal_init(int argc, char **argv)
rte_eal_init_alert("Cannot clear runtime directory\n");
return -1;
}
+ if (!internal_config.no_telemetry) {
+ const char *error_str;
+ if (rte_telemetry_init(rte_eal_get_runtime_dir(),
+ &error_str) != 0) {
+ rte_eal_init_alert(error_str);
+ return -1;
+ }
+ }
eal_mcfg_complete();
@@ -18,4 +18,4 @@ sources += files(
'eal_timer.c',
)
-deps += ['kvargs']
+deps += ['kvargs', 'telemetry']
@@ -20,6 +20,7 @@ LDLIBS += -lpthread
LDLIBS += -lgcc_s
LDLIBS += -lrt
LDLIBS += -lrte_kvargs
+LDLIBS += -lrte_telemetry
ifeq ($(CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES),y)
LDLIBS += -lnuma
endif
@@ -51,6 +51,7 @@
#include <malloc_heap.h>
#include <rte_vfio.h>
#include <rte_option.h>
+#include <rte_telemetry.h>
#include "eal_private.h"
#include "eal_thread.h"
@@ -1291,6 +1292,14 @@ rte_eal_init(int argc, char **argv)
rte_eal_init_alert("Cannot clear runtime directory\n");
return -1;
}
+ if (!internal_config.no_telemetry) {
+ const char *error_str;
+ if (rte_telemetry_init(rte_eal_get_runtime_dir(),
+ &error_str) != 0) {
+ rte_eal_init_alert(error_str);
+ return -1;
+ }
+ }
eal_mcfg_complete();
@@ -21,7 +21,7 @@ sources += files(
'eal_vfio_mp_sync.c',
)
-deps += ['kvargs']
+deps += ['kvargs', 'telemetry']
if has_libnuma == 1
dpdk_conf.set10('RTE_EAL_NUMA_AWARE_HUGEPAGES', true)
endif
@@ -12,7 +12,10 @@ subdir(exec_env)
subdir(arch_subdir)
allow_experimental_apis = true
-deps += 'kvargs'
+deps += ['kvargs']
+if not is_windows
+ deps += ['telemetry']
+endif
if dpdk_conf.has('RTE_USE_LIBBSD')
ext_deps += libbsd
endif
@@ -12,7 +12,7 @@ CFLAGS += -DALLOW_EXPERIMENTAL_API
CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)
LDLIBS += -lrte_net -lrte_eal -lrte_mempool -lrte_ring
-LDLIBS += -lrte_mbuf -lrte_kvargs -lrte_meter
+LDLIBS += -lrte_mbuf -lrte_kvargs -lrte_meter -lrte_telemetry
EXPORT_MAP := rte_ethdev_version.map
@@ -24,10 +24,6 @@ SRCS-y += rte_tm.c
SRCS-y += rte_mtr.c
SRCS-y += ethdev_profile.c
-ifeq ($(CONFIG_RTE_LIBRTE_TELEMETRY),y)
-LDLIBS += -lrte_telemetry
-endif
-
#
# Export include files
#
@@ -25,8 +25,4 @@ headers = files('rte_ethdev.h',
'rte_tm.h',
'rte_tm_driver.h')
-deps += ['net', 'kvargs', 'meter']
-
-if dpdk_conf.has('RTE_LIBRTE_TELEMETRY')
- deps += ['telemetry']
-endif
+deps += ['net', 'kvargs', 'meter', 'telemetry']
@@ -38,9 +38,7 @@
#include <rte_kvargs.h>
#include <rte_class.h>
#include <rte_ether.h>
-#ifdef RTE_LIBRTE_TELEMETRY
#include <rte_telemetry.h>
-#endif
#include "rte_ethdev.h"
#include "rte_ethdev_driver.h"
@@ -5192,7 +5190,6 @@ rte_eth_devargs_parse(const char *dargs, struct rte_eth_devargs *eth_da)
return result;
}
-#ifdef RTE_LIBRTE_TELEMETRY
static int
handle_port_list(const char *cmd __rte_unused,
const char *params __rte_unused,
@@ -5287,17 +5284,14 @@ handle_port_link_status(const char *cmd __rte_unused,
return ret >= buf_len ? -1 : ret;
}
-#endif
RTE_INIT(ethdev_init_log)
{
rte_eth_dev_logtype = rte_log_register("lib.ethdev");
if (rte_eth_dev_logtype >= 0)
rte_log_set_level(rte_eth_dev_logtype, RTE_LOG_INFO);
-#ifdef RTE_LIBRTE_TELEMETRY
rte_telemetry_register_cmd("/ethdev/list", handle_port_list);
rte_telemetry_register_cmd("/ethdev/xstats", handle_port_xstats);
rte_telemetry_register_cmd("/ethdev/link_status",
handle_port_link_status);
-#endif
}
@@ -9,12 +9,8 @@ LIB = librte_rawdev.a
# build flags
CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)
-LDLIBS += -lrte_eal
-
-ifeq ($(CONFIG_RTE_LIBRTE_TELEMETRY),y)
CFLAGS += -DALLOW_EXPERIMENTAL_API
-LDLIBS += -lrte_telemetry
-endif
+LDLIBS += -lrte_eal -lrte_telemetry
# library source files
SRCS-y += rte_rawdev.c
@@ -4,7 +4,5 @@
sources = files('rte_rawdev.c')
headers = files('rte_rawdev.h', 'rte_rawdev_pmd.h')
-if dpdk_conf.has('RTE_LIBRTE_TELEMETRY')
- allow_experimental_apis = true
- deps += ['telemetry']
-endif
+allow_experimental_apis = true
+deps += ['telemetry']
@@ -29,9 +29,7 @@
#include <rte_common.h>
#include <rte_malloc.h>
#include <rte_errno.h>
-#ifdef RTE_LIBRTE_TELEMETRY
#include <rte_telemetry.h>
-#endif
#include "rte_rawdev.h"
#include "rte_rawdev_pmd.h"
@@ -547,7 +545,6 @@ rte_rawdev_pmd_release(struct rte_rawdev *rawdev)
return 0;
}
-#ifdef RTE_LIBRTE_TELEMETRY
static int
handle_dev_list(const char *cmd __rte_unused,
const char *params __rte_unused,
@@ -619,15 +616,12 @@ handle_dev_xstats(const char *cmd __rte_unused,
free(rawdev_xstats);
return used;
}
-#endif
RTE_INIT(librawdev_init_log)
{
librawdev_logtype = rte_log_register("lib.rawdev");
if (librawdev_logtype >= 0)
rte_log_set_level(librawdev_logtype, RTE_LOG_INFO);
-#ifdef RTE_LIBRTE_TELEMETRY
rte_telemetry_register_cmd("/rawdev/list", handle_dev_list);
rte_telemetry_register_cmd("/rawdev/xstats", handle_dev_xstats);
-#endif
}
@@ -14,17 +14,16 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_eal/include
CFLAGS += -I$(RTE_SDK)/lib/librte_eal/$(ARCH_DIR)/include
CFLAGS += -pthread
-LDLIBS += -lrte_eal
LDLIBS += -lpthread
EXPORT_MAP := rte_telemetry_version.map
# library source files
-SRCS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += telemetry.c
-SRCS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += telemetry_legacy.c
+SRCS-y += telemetry.c
+SRCS-y += telemetry_legacy.c
# export include files
-SYMLINK-$(CONFIG_RTE_LIBRTE_TELEMETRY)-include := rte_telemetry.h
-SYMLINK-$(CONFIG_RTE_LIBRTE_TELEMETRY)-include += rte_telemetry_json.h
+SYMLINK-y-include := rte_telemetry.h
+SYMLINK-y-include += rte_telemetry_json.h
include $(RTE_SDK)/mk/rte.lib.mk
@@ -7,4 +7,3 @@ sources = files('telemetry.c', 'telemetry_legacy.c')
headers = files('rte_telemetry.h', 'rte_telemetry_json.h')
cflags += '-DALLOW_EXPERIMENTAL_API'
includes += include_directories('../librte_metrics')
-dpdk_app_link_libraries += ['telemetry']
@@ -85,6 +85,6 @@ int rte_telemetry_register_cmd(const char *cmd, telemetry_cb fn);
* -1 on failure.
*/
__rte_experimental
-int rte_telemetry_init(void);
+int rte_telemetry_init(const char *runtime_dir, const char **err_str);
#endif
@@ -14,7 +14,6 @@
#include <rte_common.h>
#include <rte_spinlock.h>
#include <rte_version.h>
-#include <rte_option.h>
#include "rte_telemetry.h"
#include "rte_telemetry_legacy.h"
@@ -300,26 +299,13 @@ telemetry_v2_init(const char *runtime_dir, const char **err_str)
}
int32_t
-rte_telemetry_init(void)
+rte_telemetry_init(const char *runtime_dir, const char **err_str)
{
- const char *error_str;
- if (telemetry_v2_init(rte_eal_get_runtime_dir(), &error_str) != 0) {
- printf("Error initialising telemetry - %s", error_str);
+ if (telemetry_v2_init(runtime_dir, err_str) != 0) {
+ printf("Error initialising telemetry - %s", *err_str);
return -1;
}
- if (telemetry_legacy_init(rte_eal_get_runtime_dir(), &error_str)
- != 0)
- printf("No telemetry legacy support- %s", error_str);
+ if (telemetry_legacy_init(runtime_dir, err_str) != 0)
+ printf("No telemetry legacy support- %s", *err_str);
return 0;
}
-
-static struct rte_option option = {
- .name = "telemetry",
- .usage = "Enable telemetry backend",
- .cb = &rte_telemetry_init,
- .enabled = 0
-};
-
-RTE_INIT(telemetry_register_op) {
- rte_option_register(&option);
-}
@@ -10,8 +10,8 @@
# core libs which are widely reused, so their deps are kept to a minimum.
libraries = [
'kvargs', # eal depends on kvargs
+ 'telemetry', # basic info querying capability about dpdk processes
'eal', # everything depends on eal
- 'telemetry',
'ring', 'mempool', 'mbuf', 'net', 'meter', 'ethdev', 'pci', # core
'cmdline',
'metrics', # bitrate/latency stats depends on this
@@ -52,6 +52,9 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_ACL) += -lrte_acl
_LDLIBS-$(CONFIG_RTE_LIBRTE_JOBSTATS) += -lrte_jobstats
_LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += --whole-archive
_LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += -lrte_metrics
+ifeq ($(CONFIG_RTE_LIBRTE_TELEMETRY),y)
+_LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += -ljansson
+endif
_LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += --no-whole-archive
_LDLIBS-$(CONFIG_RTE_LIBRTE_BITRATE) += -lrte_bitratestats
_LDLIBS-$(CONFIG_RTE_LIBRTE_LATENCY_STATS) += -lrte_latencystats
@@ -74,6 +77,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_HASH) += -lrte_hash
_LDLIBS-$(CONFIG_RTE_LIBRTE_MEMBER) += -lrte_member
_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lrte_vhost
_LDLIBS-$(CONFIG_RTE_LIBRTE_KVARGS) += -lrte_kvargs
+_LDLIBS-y += -lrte_telemetry
_LDLIBS-$(CONFIG_RTE_LIBRTE_MBUF) += -lrte_mbuf
_LDLIBS-$(CONFIG_RTE_LIBRTE_NET) += -lrte_net
_LDLIBS-$(CONFIG_RTE_LIBRTE_ETHER) += -lrte_ethdev
@@ -90,7 +94,6 @@ _LDLIBS-$(CONFIG_RTE_DRIVER_MEMPOOL_RING) += -lrte_mempool_ring
_LDLIBS-$(CONFIG_RTE_LIBRTE_OCTEONTX2_MEMPOOL) += -lrte_mempool_octeontx2
_LDLIBS-$(CONFIG_RTE_LIBRTE_RING) += -lrte_ring
_LDLIBS-$(CONFIG_RTE_LIBRTE_PCI) += -lrte_pci
-_LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += -lrte_telemetry -ljansson
_LDLIBS-$(CONFIG_RTE_LIBRTE_EAL) += -lrte_eal
_LDLIBS-$(CONFIG_RTE_LIBRTE_CMDLINE) += -lrte_cmdline
_LDLIBS-$(CONFIG_RTE_LIBRTE_REORDER) += -lrte_reorder