Identification of critical resources
In general, the performance of a given workload is determined by the availability and speed of one or two critical system resources. The analyst must identify those resources correctly or risk falling into an endless trial-and-error operation.
Systems have both real, logical, and possibly virtual resources. Critical real resources are generally easier to identify, because more system performance tools are available to assess the utilization of real resources. The real resources that most often affect performance are as follows:
- CPU cycles
- Memory
- I/O bus
- Various adapters
- Disk space
- Network access
Logical resources are less readily identified. Logical resources are generally programming abstractions that partition real resources. The partitioning is done to share and manage the real resource.
You can use virtual resources on POWER5-based IBM System p systems, including Micro-Partitioning®, virtual Serial Adapter, virtual SCSI and virtual Ethernet.
Some examples of real resources and the logical and virtual resources built on them are as follows:
CPU
- Processor time slice
- CPU entitlement or Micro-Partitioning
- Virtual Ethernet
Memory
- Page frames
- Stacks
- Buffers
- Queues
- Tables
- Locks and semaphores
Disk space
- Logical volumes
- File systems
- Files
- Logical partitions
- Virtual SCSI
Network access
- Sessions
- Packets
- Channels
- Shared Ethernet
It is important to be aware of logical and virtual resources as well as real resources. Threads can be blocked by a lack of logical resources just as for a lack of real resources, and expanding the underlying real resource does not necessarily ensure that additional logical resources will be created. For example, the NFS server daemon, or nfsd daemon on the server is required to handle each pending NFS remote I/O request. The number of nfsd daemons therefore limits the number of NFS I/O operations that can be in progress simultaneously. When a shortage of nfsd daemons exists, system instrumentation might indicate that various real resources, like the CPU, are used only slightly. You might have the false impression that your system is under-used and slow, when in fact you have a shortage of nfsd daemons which constrains the rest of the resources. A nfsd daemon uses processor cycles and memory, but you cannot fix this problem simply by adding real memory or upgrading to a faster CPU. The solution is to create more of the logical resource, the nfsd daemons.
Logical resources and bottlenecks can be created inadvertently during application development. A method of passing data or controlling a device may, in effect, create a logical resource. When such resources are created by accident, there are generally no tools to monitor their use and no interface to control their allocation. Their existence may not be appreciated until a specific performance problem highlights their importance.