check_tsc_flags() parses /proc/cpuinfo and prints warning messages if any cores don't have constant_tsc and nonstop_tsc. It has no functional meaning. This consumes a noticeable amount of time in secondary processes - on my test system, it consumes 21ms out of the 66ms total execution time for rte_eal_init().
So let's just skip checking these flags in secondary processes. Since the primary process is already parsing the entirety of /proc/cpuinfo, the warning printed in the primary process should be sufficient. Signed-off-by: Jim Harris <james.r.har...@intel.com> --- lib/librte_eal/linux/eal/eal_timer.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/librte_eal/linux/eal/eal_timer.c b/lib/librte_eal/linux/eal/eal_timer.c index 76ec17034..ce447d43b 100644 --- a/lib/librte_eal/linux/eal/eal_timer.c +++ b/lib/librte_eal/linux/eal/eal_timer.c @@ -198,6 +198,15 @@ check_tsc_flags(void) char line[512]; FILE *stream; + if (rte_eal_process_type() != RTE_PROC_PRIMARY) { + /* This function just prints warnings if TSC is not constant + * and has no functional meaning. It also checks *all* cores + * on the system, not just the ones configured for this process. + * So don't bother rechecking again in secondary processes. + */ + return; + } + stream = fopen("/proc/cpuinfo", "r"); if (!stream) { RTE_LOG(WARNING, EAL, "WARNING: Unable to open /proc/cpuinfo\n");