The failed core stack looks like this:
Program terminated with signal sigill, illegal instruction.#0 0X00000000036A3FDD inchrte_cpu_get_flag_enabled () [Current thread is 1(Thread0x7fc26fda21a0(LWP10988) ] (gdb) bt#0 0X00000000036A3FDD inchrte_cpu_get_flag_enabled () #1 0x0000000003694f4e inchrte_hash_crc_init_alg () #2 0x000000000388074f inch__libc_csu_init () #3 0x00007fc26df6092e inch__libc_start_main () from/lib64/libc.so.6#4 0x0000000000bec929 inch_start ()
The reason for core is obvious: "Illegal instruction", instructions are illegal, check the assembly code at the core:
The SHRX directive is part of the bmi2 instruction set to see if there is a bmi2 instruction set on the machine running the binary:
Cat/proc/cpuinfo | grep flags
Found that there is no bmi2 instruction set on the CPU, so the core is dropped.
So the root cause is: The machine that compiles the DPDK library has a higher CPU version, supports the bmi2 instruction, but the CPU version of the machine running DPDK is lower, and bmi2 instructions are not supported.
Blog posted on the web said that when compiling DPDK Config_rte_machine set to the default can solve, we try to fruitless, finally found a lower CPU version of the machine compiled a complete set of DPDK Library,core did not appear. However, this solution is only expedient, in the long run, or to do a good job of different CPUs and models of adaptation.
Link the DPDK process start core in illegal instruction