- Throughput: can the application deliver the required levels of throughput, in terms of real world transactions?
- Latency: is the latency of each transaction within tolerances, or affected by virtualization
- Scalability: does throughput/latency change as load is increased (often asked in the context of – â€œdo I have enough future headroom?â€)
- Memory efficiency: Doing more work with less memory – multi-core is rapidly providing an increasing amount of CPU, but memory remains a premium
- Power-performance: Throughput relative to power, i.e. how much performance can I deliver for the power consumed
- Space-performance: How much performance can I get per rack unit
- Agility: What is the time taken to deploy a new application
… overview of the new performance and scalability improvements in Java Standard Edition 6 along with various industry standard and internally developed benchmark results to demonstrate the impact of these improvements.
These are short videos to walkthrough guidance and explain issues.
Judiciously added instrumentation allows you to more easily pinpoint the states that lead to poor performance or failure. Well designed events inform monitoring software and IT admins about whether the software is operating normally, in a degraded state, or has failed completely. Good tracing events in conjunction with perf counters related to the work of the software allow diagnosis and tracking of trends. Events targeted to the administrator can identify what work was being done for which user context when a failure occurs.
Modern systems seek to maximize execution efficiency in three ways: by giving a thread an affinity for the processor on which it most recently ran, by giving a thread an affinity for the processor that is “closest” to the memory that the thread needs to access (lgroups in the Solaris OS), and by using large L2 and L3 caches. Sometimes these policies are not enough to ensure efficient and scalable execution.
Intelligent policy-based scheduling would help, but the operating system can only do so much. An experienced competent analyst with sufficient knowledge of the workload can make the crucial difference between a smooth-running efficient system and an unscalable, erratically performing system.