Hello, Stephen,
Good dayThe issue is not caused by DPDK itself, but arises when the DPDK worker process attempts to set affinity to a cpuset that exceeds the limits set by the cgroup cpuset settings.Original error prints are:PANIC in rte_eal_init():Cannot set affinity# Callstacks.Finding the detailed reason for the failure was challenging, so I added extra print statements to help diagnose the issue.I understand your concern about maintaining OS independence with the rte_thread functions. This change aims to provide more context when errors occur, facilitating quicker troubleshooting. I agree that this introduces more code and could be seen as platform-specific. Perhaps we could implement this conditionally, only for platforms where such detailed logging is supported and useful.At 2024-04-24 23:50:21, "Stephen Hemminger" <stephen@networkplumber.org> wrote:>On Tue, 23 Apr 2024 11:02:43 +0800 >Jianyue Wu <wujianyue000@163.com> wrote: > >> Improve the robustness of setting thread affinity in DPDK >> by adding detailed error logging. > >Is this an error you saw in your application or something inside DPDK? > >> Changes: >> 1. Check the return value of pthread_setaffinity_np() and log an error >> if the call fails. > >Not sure this is necessary. The rte_thread functions are intended to >be os independent wrapper for threads. Does it need to be this chatty. > >> 2. Include the current thread name, the intended CPU set, and a detailed >> error message in the log. > >This introduces a more code and ends up being Linux/BSD specific only >for the case where application did something wrong.