Tips for Integrating Optimization Into the Development Cycle (Continued)
Five Key Testing/Optimization Areas
It's important to know that you can test and/or tune five areas of the application to take advantage of the target server's capacity for concurrency. All five areas should be tested every time optimization occurs.
- Input/output. Tuning I/O for scalability means minimizing latency and optimizing throughput. This usually means sending as few large chunks of data as possible to maximize bandwidth, and to amortize the latency cost.
- Multi-threading and hyper-threading the scheduling apparatus. Operating systems schedule different threads or processes onto different processors. Applications that use multi-threading can also take advantage of multiple processors to enhance concurrency. Hyper-Threading Technology, which allows multiple threads to run on a single physical processor, has already appeared in the Intel Xeon processor. Intel has announced that in the future, Intel processors for the desktop will also incorporate this technology.
- Critical sections. Multi-threaded applications need synchronization points. These are called "critical sections"places in the application where only one thread can have access at a time. A lock usually protects critical sections, and access to the lock is required to execute this part of the code. Access is then serialized. Since any serialization point can be a performance limitation, eliminating contention and waits at critical sections is key to good application scalability.
- Data access and structures. Efficient data access is important for scalability, especially involving data drivers, which are the key targets here. If a processor has to wait for data, computing efficiency and scalability always suffer.
- Memory allocation and management. The ability to hide latency associated with memory access and memory management is one of the key methods for enhancing concurrency.
Back to top
|