Designing High-Performance Networking Applications: Essential Insights for Developers of IXP2XXX Network Processor-based Systems

Performance is your reality. Forget everything else.
Harold S. Geneen
Performance tuning is usually the final phase of Intel IXP Network Processor application development. In this phase of development, your goal is to use performance analysis results to identify performance bottlenecks and to modify the application source code and design, if necessary, to eliminate the bottlenecks. Understanding application bottlenecks in a multi-threaded, multi-processor application for IXP network processors can be a challenging task, one requiring a clear focus and deep understanding of both the IXP network processor architecture and the application design. However, you can master this task by following a consistent methodology that looks for and attacks bottlenecks in a certain order.
In this chapter, you learn how specific bottlenecks can be overcome by performance-tuning optimizations first. Then you can follow a performance-tuning checklist which identifies a list of steps that can lead a high-performance, highly tuned application design. Throughout this chapter, we assume that you are using the IXP2XXX Network Processor Architecture Tool (AT). Although you could do performance tuning using back-of-the-envelope analysis, you should find that it's a lot quicker and more effective to use the precise performance analysis performed by AT.
When the number of instruction cycles in a critical path exceeds the microengine cycle budget, the application has a microengine compute bottleneck. You can eliminate this bottleneck in one of two ways:
Increase the microengine cycle budget for the critical path.
Reduce the instruction cycle count of the...