Check the System Load on Linux
When the demands of a running program
cause it to request excessive resources from your server, you might experience
poor performance and system instability.
Uptime
Check the load on your server using the uptime
command.
$ uptime
15:16:45 up 41 days, 2:35, 2 users, load average: 0.01, 3.01, 2.70
The example shows the output from uptime
. When the command ran at
15:16:45, the server had been up for 41 days 2 hours and 35 minutes
,
there were two users logged on, and the load averages were 0.01
, 3.01
, and
2.70
.
The load average is the work the system is doing. The
three numbers show the load averages for the last minute, 5 minutes, and
15 minutes respectively. A load average of 1
reflects the
full workload of a single processor on the system. A load
of 2
on a system with two CPUs means that
those CPUs were working at maximum. On a
system with four CPUs, that 2
reflects a workload using about half of
the available processing power.
Under normal circumstances, you want the load average to be 70% of
your total CPU usage or less. You can check the number of CPUs available
to your instance by running the following command:
$ grep processor /proc/cpuinfo | wc -l
If the load averages show that the load is increasing and is higher than the
number of CPUs, you should investigate the cause. A load greater than the number
of CPUs means that the system is queuing up processor requests, which
reduces performance.
top
The top
command displays real-time information regarding the server's
resource usage. The first few lines provide a summary of the
resource utilization on your system. You can sort the list of
processes by CPU (P
) or memory use (M
), which allows you to quickly see
the biggest demands on your server's resources.
free
The free
command displays information about the server's memory usage.
The first lines provide a summary of the memory usage on your system.
The free column displays the amount of free memory, which is generally minimal
because unused memory is a wasted resource. The available column displays
how much memory is available to allocate to existing or new processes.
vmstat
The amount of system memory is one of the most common restraining factors.
The swap is an area of the hard drive where data is moved to free up
physical memory (RAM) for a process to use (not all servers have swap space configured).
If your system consumes most of its swap area, that might mean that the server is trying to do
more than its available memory permits not that it's low on memory.
If you have configured swap space and you suspect your server is running out
of standard memory, you can use vmstat
to show how much swapping is
occurring.
The following example displays a system's virtual memory statistics 10
times at 5-second intervals.
$ vmstat 5 10
procs -----------memory------------- ---swap---- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 3 138096 3904 140 584 14829 33632 16684 33633 1353 11562 64 9 16 11 0
7 4 156592 3800 132 492 53570 48618 54264 48622 2762 8148 20 5 50 24 0
2 7 258552 3040 128 668 37910 39822 39766 39826 2763 10861 43 8 23 26 0
7 4 261608 4312 116 776 41696 30854 42171 30855 2771 8631 26 6 33 35 0
3 4 259316 3824 112 576 44616 32316 44697 32320 2746 7087 15 4 52 28 0
0 5 257000 3376 116 880 25895 19847 26622 19848 1673 2877 1 2 68 29 0
4 4 263240 3384 124 1424 30018 21066 30497 21070 1732 4559 9 3 64 24 0
2 14 264656 5740 120 1812 27685 19030 28029 19031 2194 5345 11 3 51 35 0
6 3 338044 3764 132 1568 20087 31066 20470 31070 1798 9847 46 6 33 14 0
2 4 325904 4048 108 1172 13251 7190 13812 7190 1193 8838 38 5 24 32 0
In the example, the free column shows that the amount of free memory is
only around 4MB.
The si and so columns show the amount of data transferred
between the system's swap and its memory. In this example, you can see
there is lots of data being moved. so shows the amount of data being
moved to the swap to free up memory. si shows the amount of data being
pulled from the swap back into memory. This happens when a process needs the data to run.
When a server is constantly swapping into and out of memory, that
indicates that the load on it is too great for the available
resources. Use the top
command to identify the
processes that are consuming the most resources.
Summary
If top
and vmstat
indicate that the server is using all its resources,
you need to optimize your current set up. For example, you can
run some processing jobs outside peak hours, kill any unrequired
processes, and reconfigure other processes so they use fewer resources. You might
also want to consider increasing the size of your server to match
your requirements better.
If your application runs and looks healthy, check that it is listening for
network connections. See if the service is listening on the correct
socket by using the netstat
command. Review Checking Listening Ports with netstat
for more information.
Updated 12 months ago