-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in 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: