Due to their constrained nature, Embedded Linux applications typically have to be optimized till they meet target requirements of throughput, responsiveness, availability or even security. Traditionally the only ways to do that were software optimizations or by prototyping the application on alternate hardware platforms, which usually comes with other problems like increased cost, complexity and longer development time. With the availability of Full Embedded Linux on configurable soft core processors, high level co-design tools can now be applied at the software application level instead of at the hardware or assembly level. This class presents this optimization methodology in the context of real-life software optimization examples.