System Performance Analysis
System performance analysis is easy to talk about but difficult to understand.
Everyone knows when a computer system is slow, but it's much more challenging to get the most out of any given configuration, many different factors play a role in determining your system's response. Usage patterns, I/O configuration, CPU configuration, and software configuration all contribute to your system's behaviour.
Changing any of these variables can make a slow system much faster or make a fast system yield significantly worse performance.
A system that is well-configured and used appropriately will give better performance than one that is not. This statement tells you nothing about how to analyse a system, determine whether or not it's running well, and take steps to correct any problems you might find.
This page has three goals: to help you understand system performance, to give you the tools needed to monitor performance and determine what system components (if any) are not performing optimally, and to discuss the actions you can take to improve the performance of your system as a whole.
With an understanding of the issues involved; you will be able to make informed decisions about how to tune your IT systems. You can't optimise one aspect of performance without compromising another element such as security; therefore, it is essential to understand what necessary performance measurements mean and how they relate to each other.
How Users Perceive Performance
To a user, performance means: "How much time does it take to run my job?" For a system administrator, the question is much too simple: a user's job may take a long time to execute because it is either badly written or because it doesn't use the computer resources appropriately.
Furthermore, a system admin must also optimise performance for all system users, which is more complicated than just tuning for a single user. Listening to the problems of individual users is an excellent place to start. Complaints from users indicate that something may be wrong with your systems configuration, mainly if there is a sudden change in the systems perceived performance.
It is worthwhile understanding precisely user complaints about performance issues.
We have just discussed how users perceive performance; there is another equally important approach to this issue: the computers view of performance. All system performance issues are just resource contention issues.
In any computer system, there are three primary resources: the CPU, memory, and the I/O subsystem (e.g., disks and networks). From this viewpoint, performance tuning means ensuring that every user gets a fair share of available system resources.
Each resource has its own specific set of problems. The biggest challenge of a system administrator is figuring out which subsystem is really in trouble. Resource problems are complicated because all system resources interact with each other.
On any multi-user system, many programs want to use the CPU at the same time. Under most circumstances the operating system can allocate the CPU fairly; however, each process (or application requires a number of CPU cycles to be executed, and there are only so many cycles available in any one day. At some point, the CPU will not be able to get all the work done.
Before you decide to blame the CPU for your performance problems, think a bit about what we don't mean by CPU contention. We don't say that the system is short of memory or that it can't do I/O fast enough. Either of these situations can make your computer system appear very slow. However, the CPU may be spending most of its time idle; therefore; you can't just look at the system load and decide that you need a faster processor. If a CPU already spends a lot of time idle, buying an even faster processor will only increase its idle time. It will be even quicker at not doing any work.
Before you can fully comprehend your system, you also need to analyse it fully to discover what is happening with the memory and the I/O subsystems. In a way, CPU problems are the gap between memory and I/O problems. It's essential to ensure that you determine, which subsystem is really in trouble. Users often point at the CPU, but in most situations, both memory and I/O are equally (if not more) to blame.
Given that the system is short of CPU cycles, you have three alternatives:
- You can get your system users to run their batch jobs either during the night or at other low-system usage times (i.e., ensuring the computer is doing useful work 24 hours a day.
- You can prevent your systems from doing needless processing work.
- You can get your users to run their CPU intensive big jobs at a lower priority.
The Memory Subsystem
Memory contention happens when the memory requirements for the active processes exceed the available system physical memory; at this point, the system runs out of memory.
To control this memory deficiency without crashing the system or killing processes, the operating system begins paging: transferring portions of active processes to disk to recover used memory.
When this happens, system performance decreases dramatically. Paging is different from swapping, which moves entire processes to disk, reclaiming all their memory allocations.
Paging and swapping is an indication that the computer system is not able to provide enough memory for all the running system and user application processes.
The I/O Subsystem
The I/O subsystem is a common source of resource contention problems. A finite amount of I/O bandwidth must be shared by all the applications that currently run.
The system's I/O buses can transfer only so many megabytes per second; individual devices are even more limited. Each kind of device has its peculiarities and, therefore, its problems.
The disk and network subsystems are particularly crucial to overall performance. Disk bandwidth issues have two general forms; maximising per-process transfer rates and maximising aggregate transfer rates:
- Per-process transfer rate is the I/O rate that a single application is able to read and write its data.
- Aggregate transfer rate is the maximum total I/O bandwidth that the system can provide to all applications that run.
Network I/O problems, take two methods: a network is either overloaded, or it can lose its data integrity. When a network is overloaded, the total amount of data that needs to be transferred across it is greater than the full capacity of the network; therefore, the definitive transfer rate for any user system task is fairly slow.
Network loading problems can usually be resolved by changing the network's architecture.
You can split a single network into several smaller networks, called subnets, or if already done, you can rearrange systems communication within each subnet. Network integrity problems occur when the network is faulty and intermittently transfers data incorrectly.
To deliver the correct data to the applications over a network, the network protocols will need to transmit each data block multiple times. Consequently, applications that use the network will run very slowly, and the only way to fix an integrity problem is to locate, isolate and replace the faulty part of the network.
System Performance Analysis Summary
From the perspective of system resources, there is a fundamental solution to all resource contention problems; buy more of whatever resource you lack. That is to buy more computers, more memory, more disks and disk controllers, or if cloud-based scale up the virtual systems resources. These are expensive and therefore, painful approaches to resolve system performance problems.
The fundamental motivation behind system tuning is to get the most you can out of the hardware you already use. However, even if you decide that an upgrade is your only solution, you will find that your investment in performance tuning pays off.
Your performance analysis work will show you exactly how the system should be upgraded, you will know whether you need more memory, faster disks, or a completely new CPU.
The System Performance Analysis information shown above is mostly generic and based on best-practice, therefore to get a better understanding on what we can do for your business, all we ask is that you contact us, to discuss your cybersecurity and performance analysis needs, to protect your IT systems and data. Cyberteam Security Professionals are on-premise and cloud system reliability trained and certified engineers.
Click here to contact us