-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Power saving API #235
Comments
Hi, So far we haven't seen application use-cases, but I can see these being useful for certain applications. We'll add this to our backlog. Currently, the logical place for power saving is |
Hi @MatiasElo, One can imagine some cases:
I am not saying 'to save the planet' but to reduce power consumption (costs) when it makes sense... and frankly 'some' setups may overheat at full power on all cores. Now, odp_schedule() will be ideal but an API at pktin level may cover part of the cases... FYI next release of nfp (my ofp) will provide a 'power' example and a patch on top of odp-dpdk/linux-generic. |
Hi @MatiasElo, Please have a look at the odp-dpdk patch and API utilization example: https://github.com/NetInoSoftware/nfp/blob/master/example/fpm_power/0001-pktin-Add-RX-interrupt-management-API.patch As you said, odp_schedule() would be the logical place for power saving but the API proposed by this patch may suffice for 'direct mode' implementations. Best regards |
Hi @bogdanPricope, thanks for the examples. Adding the new APIs will be a bigger task, but perhaps this functionality could be added to |
Based on quick testing this seems to work: MatiasElo@c29b8b1 |
Hi @MatiasElo, a requirement for my use case is to wait for multiple pktins (maybe from different interfaces). I guess a change on odp_pktin_recv_mq_tmo() is also needed. |
Okay, implementing that will be more complex but should still be possible. |
Hi,
Have you consider adding API/implementation to reduce power consumption: e.g. sleeping the workers when there is not traffic and awake them on RX interrupts?
DPDK was some API for that: rte_eth_dev_rx_intr_enable()/rte_eth_dev_rx_intr_disable()/rte_eth_dev_rx_intr_ctl_q()/rte_epoll_wait().
Best regards
The text was updated successfully, but these errors were encountered: