No, it is not PMD that runs the processor in a polling loop. It is the application itself, thay may or may not busy loop, depending on application programmers choice.
From one of my earlier references [2]:
"we found that a poll mode driver (PMD) thread accounted for approximately 99.7 percent CPU occupancy (a full core utilization)." And further on: "we found that the thread kept spinning on the following code block: *for ( ; ; ) {for ( i = 0; i < poll_cnt; i ++) {dp_netdev_process_rxq_port (pmd, list[i].port, poll_list[i].rx) ;}}* This indicates that the thread was continuously monitoring and executing the receiving data path." [2] S. Fu, J. Liu, and W. Zhu, “Multimedia Content Delivery with Network Function Virtualization: The Energy Perspective,” IEEE MultiMedia, vol. 24, no. 3, pp. 38–47, 2017, ISSN: 1941-0166. DOI: 10.1109/MMUL.2017.3051514. On Tue, Feb 23, 2021 at 12:59 PM Pawel Malachowski < pawmal-nanog@freebsd.lublin.pl> wrote:
Dnia Mon, Feb 22, 2021 at 12:45:52PM +0100, Etienne-Victor Depasquale napisał(a):
Every research paper I've read indicates that, regardless of whether it has packets to process or not, DPDK PMDs (poll-mode drivers) prevent the CPU from falling into an LPI (low-power idle).
When it has no packets to process, the PMD runs the processor in a polling loop that keeps utilization of the running core at 100%.
No, it is not PMD that runs the processor in a polling loop. It is the application itself, thay may or may not busy loop, depending on application programmers choice.
-- Pawel Malachowski @pawmal80
-- Ing. Etienne-Victor Depasquale Assistant Lecturer Department of Communications & Computer Engineering Faculty of Information & Communication Technology University of Malta Web. https://www.um.edu.mt/profile/etiennedepasquale