Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 1687316 - [dpdk] EAL control threads do not comply with cpu affinity
Summary: [dpdk] EAL control threads do not comply with cpu affinity
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: dpdk
Version: 8.0
Hardware: All
OS: Unspecified
Target Milestone: rc
: 8.1
Assignee: David Marchand
QA Contact: Jean-Tsung Hsiao
Depends On: 1682308
Blocks: 1687319 1687320
TreeView+ depends on / blocked
Reported: 2019-03-11 09:03 UTC by David Marchand
Modified: 2019-04-11 20:03 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
: 1687319 1687320 (view as bug list)
Last Closed:
Type: Bug
Target Upstream Version:

Attachments (Terms of Use)

Description David Marchand 2019-03-11 09:03:02 UTC
Description of problem:

The problem affects both Linux and FreeBSD implementations.
When a dpdk control thread is created (interrupt handler thread, multi process thread, vhost reconn thread, etc...), EAL constructs the cpu affinity of the newly created thread by looking at all availables cpu and remove the cpus from the startup corelist/coremask parameter.
The startup cpu affinity list is not taken into account which can have an impact on other performance critical processes running on the system.

How reproducible:

Steps to Reproduce:
1. Start a dpdk application with a restricted cpu affinity list. Example:
taskset -c 0,1,2 testpmd -c 0x3 --no-pci --no-huge -m 512 -- -i --total-num-mbufs 2048

Actual results:
EAL started control threads out of the cpu affinity list:

$ grep -E '(Name|Cpus_allowed_list):' /proc/$(pidof testpmd)/task/*/status
/proc/87677/task/87677/status:Name:	testpmd
/proc/87677/task/87677/status:Cpus_allowed_list:	0
/proc/87677/task/87678/status:Name:	eal-intr-thread
/proc/87677/task/87678/status:Cpus_allowed_list:	2-27
/proc/87677/task/87679/status:Name:	rte_mp_handle
/proc/87677/task/87679/status:Cpus_allowed_list:	2-27
/proc/87677/task/87680/status:Name:	lcore-slave-1
/proc/87677/task/87680/status:Cpus_allowed_list:	1

Expected results:
Control threads should be kept in the initial cpu affinity list, not colliding with "datapath" threads specified via the coremask/corelist EAL parameters.

Additional info:

Bug reported upstream and fixed in commit:

Note You need to log in before you can comment on or make changes to this bug.