@@ -163,6 +163,19 @@ Debugging options
By default, trace output will created at ``home`` directory and parameter
must be specified once only.
+* ``--trace-bufsz=<val>``
+
+ Specify maximum size of allocated memory for trace output for each thread.
+ Valid unit can be either ``B`` or ``K`` or ``M`` for ``Bytes``, ``KBytes``
+ and ``MBytes`` respectively. For example:
+
+ Configuring ``2MB`` as a maximum size for trace output file::
+
+ --trace-bufsz=2M
+
+ By default, size of trace output file is ``1MB`` and parameter
+ must be specified once only.
+
Other options
~~~~~~~~~~~~~
@@ -70,6 +70,7 @@ eal_long_options[] = {
{OPT_LOG_LEVEL, 1, NULL, OPT_LOG_LEVEL_NUM },
{OPT_TRACE, 1, NULL, OPT_TRACE_NUM },
{OPT_TRACE_DIR, 1, NULL, OPT_TRACE_DIR_NUM },
+ {OPT_TRACE_BUF_SIZE, 1, NULL, OPT_TRACE_BUF_SIZE_NUM },
{OPT_MASTER_LCORE, 1, NULL, OPT_MASTER_LCORE_NUM },
{OPT_MBUF_POOL_OPS_NAME, 1, NULL, OPT_MBUF_POOL_OPS_NAME_NUM},
{OPT_NO_HPET, 0, NULL, OPT_NO_HPET_NUM },
@@ -1440,6 +1441,15 @@ eal_parse_common_option(int opt, const char *optarg,
break;
}
+ case OPT_TRACE_BUF_SIZE_NUM: {
+ if (eal_trace_bufsz_args_save(optarg) < 0) {
+ RTE_LOG(ERR, EAL, "invalid parameters for --"
+ OPT_TRACE_BUF_SIZE "\n");
+ return -1;
+ }
+ break;
+ }
+
case OPT_LCORES_NUM:
if (eal_parse_lcores(optarg) < 0) {
RTE_LOG(ERR, EAL, "invalid parameter for --"
@@ -1724,6 +1734,13 @@ eal_common_usage(void)
" By default, trace output will created at\n"
" $HOME directory and parameter must be\n"
" specified once only.\n"
+ " --"OPT_TRACE_BUF_SIZE"=<int>\n"
+ " Specify maximum size of allocated memory\n"
+ " for trace output for each thread. Valid\n"
+ " unit can be either 'B|K|M' for 'Bytes',\n"
+ " 'KBytes' and 'MBytes' respectively.\n"
+ " Default is 1MB and parameter must be\n"
+ " specified once only.\n"
" -v Display version information on startup\n"
" -h, --help This help\n"
" --"OPT_IN_MEMORY" Operate entirely in memory. This will\n"
@@ -64,6 +64,9 @@ eal_trace_init(void)
/* Generate UUID ver 4 with total size of events and number of events */
trace_uuid_generate();
+ /* Apply buffer size configuration for trace output */
+ trace_bufsz_args_apply();
+
/* Generate CTF TDSL metadata */
if (trace_metadata_create() < 0)
goto fail;
@@ -193,6 +193,36 @@ trace_args_apply(const char *arg)
return 0;
}
+int
+eal_trace_bufsz_args_save(char const *optarg)
+{
+ struct trace *trace = trace_obj_get();
+ uint64_t bufsz;
+
+ if (optarg == NULL) {
+ trace_err("no optarg is passed");
+ return -EINVAL;
+ }
+
+ bufsz = rte_str_to_size(optarg);
+ if (bufsz == 0) {
+ trace_err("buffer size cannot be zero");
+ return -EINVAL;
+ }
+
+ trace->buff_len = bufsz;
+ return 0;
+}
+
+void
+trace_bufsz_args_apply(void)
+{
+ struct trace *trace = trace_obj_get();
+
+ if (trace->buff_len == 0)
+ trace->buff_len = 1024 * 1024; /* 1MB */
+}
+
int
eal_trace_dir_args_save(char const *optarg)
{
@@ -37,6 +37,8 @@ enum {
OPT_TRACE_NUM,
#define OPT_TRACE_DIR "trace-dir"
OPT_TRACE_DIR_NUM,
+#define OPT_TRACE_BUF_SIZE "trace-bufsz"
+ OPT_TRACE_BUF_SIZE_NUM,
#define OPT_MASTER_LCORE "master-lcore"
OPT_MASTER_LCORE_NUM,
#define OPT_MBUF_POOL_OPS_NAME "mbuf-pool-ops-name"
@@ -100,6 +100,7 @@ struct trace_point_head *trace_list_head_get(void);
const char *trace_mode_to_string(enum rte_trace_mode mode);
const char *trace_area_to_string(enum trace_area_e area);
int trace_args_apply(const char *arg);
+void trace_bufsz_args_apply(void);
bool trace_has_duplicate_entry(void);
void trace_uuid_generate(void);
int trace_metadata_create(void);
@@ -114,5 +115,6 @@ void eal_trace_fini(void);
int eal_trace_args_save(const char *optarg);
void eal_trace_args_free(void);
int eal_trace_dir_args_save(const char *optarg);
+int eal_trace_bufsz_args_save(const char *optarg);
#endif /* __EAL_TRACE_H */