ip_tryforward() is used in run to completion forwarding scenario. Current rtalloc API has serious problem on system with many CPU cores and, especially, when network cards has many concurrent working queues. Lock contention on the rtentry's mutex kills the performance.
This patch changes ip_tryforward() to use new FIB4 KPI. The main benefit this KPI gets from holding all needed information in the on-stack allocated structure, so there is no need to hold rtentry mutex, thus there is no lock contention.
Details
Details
- Reviewers
melifaro olivier - Group Reviewers
network - Commits
- rS309257: Rework ip_tryforward() to use FIB4 KPI.
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
I can't understand the code, but regarding only the performance benefit it's great :-)
Improvement on a 8 cores Intel Xeon with Chelsio, full details:
Improvement on a 4cores Atom, full detail :
Improvement on a 8 cores Atom with Chelsio, full details: