top command of linux related commands

top command of linux related commands

One of the things the backend people fear most is the sudden surge in server load, which may mean that eye-catching calls are coming soon. What to do in this case? The first reaction must be to log in to the server and click a top command to see Load Average. Today's article tells you how to look at this "Load Average".

Load Average

Many people are right to say that the Load Average indicator can indicate that the system load is high. So where is the pressure? How are these three values calculated? Maybe many people can't say it at once.

Let's start with the definition: * * the sum of the number of processes that the CPU is processing and waiting for the CPU to process over a period of time** The three figures represent the statistical values of 1 minute, 5 minutes and 15 minutes respectively.

Therefore, this value can really reflect the load of the server. However, this high value does not directly represent the performance problem of the machine. It may be because CPU intensive computing is in progress, or it may be because the operation queue is blocked due to I/O problems. Therefore, when we see this value soaring, we have to analyze specific problems. Upgrading the machine directly is simple and crude, but it can cure the symptoms rather than the root cause.

The top command looks line by line

The top command outputs a lot of parameters. We need to look at the real server load by combining other parameters.

First line:

top - 20:41:08 up 18 days,  5:24,  2 users,  load average: 0.04, 0.03, 0.05
    
top: current time  up: How long has the machine been running
users: How many users are there currently
load average: They are the loads in the past 1 minute, 5 minutes and 15 minutes respectively

The three values of load average should be paid attention to. As we all know, a CPU can only run one process in a time slice. The number of CPU cores directly affects the number of processes that the machine can run at the same time. Therefore, generally speaking, the value of load average should not exceed the total number of cores of this machine, which is basically no problem.

Second line:

Tasks: 216 total,   1 running, 215 sleeping,   0 stopped,   0 zombie
Tasks: How many processes are there currently
running: Running process
sleeping: Dormant process
stopped: Stopped process
zombie: Zombie process

The more running, the greater the natural pressure on the server.

Third line:

%Cpu(s):  0.2 us,  0.1 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

us: User process percentage CPU Utilization rate of
sy: System process CPU Utilization rate of
ni: User process space changed priority
id: free CPU Occupancy rate
wa: Waiting for input and output CPU Time percentage
hi: Hardware interrupt request
si: Software interrupt request
st: steal time

This line represents the CPU usage, which is too high for a long time, indicating that the user process takes up a lot of CPU time. If us+sy exceeds 80 or 90 for a long time, it may represent insufficient CPU performance and need to add CPU.

Line 4 & Line 5

KiB Mem : 65810456 total, 30324416 free,  9862224 used, 25623816 buff/cache
KiB Swap:  7999484 total,  7999484 free,        0 used. 54807988 avail Mem

total: Total memory
free: idle memory
used: Used
buffer/cache: Write cache/Read cache

The fourth and fifth lines are memory information and swap information respectively. All programs run in memory, so the performance of memory is very important to the server. However, when the free memory becomes less, we don't need to be too nervous. What you really need to see is the used information in swap. Swap partition is a swap area provided by the hard disk. When the physical memory is not enough, the operating system will put the temporarily unused data into swap. So when this value becomes high, it means that there is really not enough memory.

Line 5 down

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                  
19868 root      20   0 19.733g 369980  15180 S   0.7  0.6 129:53.91 java                                                                                                                                                                     
19682 root      20   0 19.859g 5.766g  22252 S   0.3  9.2 139:42.81 java                                                                                                                                                                     
54625 100       20   0   50868  33512   4104 S   0.3  0.1   0:04.68 fluentd                                                                               

PID:process id
USER:Process owner
PR:Priority. The higher the value, the higher the priority
NI:nice A negative value indicates high priority and a positive value indicates low priority
VIRT:The total amount of virtual memory used by the process
SWAP:The size of the virtual memory used by the process that was swapped out
RES:The amount of physical memory used by the process that has not been swapped out
SHR:Shared memory size
SHR:Shared memory size
S: Process status. D Indicates an uninterrupted sleep state; R Indicates operation; S Indicates sleep; T Represents tracking/stop it; Z Represents a zombie process.
%CPU:From last update to now CPU Percentage occupied;
%MEM:Percentage of physical memory used by the process;
TIME+:Used by the process CPU Total time, unit 1/100 Second;
COMMAND:Command name/command line

These are the process information, from which you can see the overview of which processes occupy system resources.

Other commands

top is, of course, our most common command to view system status. There are many other commands. vmstat, w, uptime, iostat are commonly used commands.

Keywords: Linux

Added by pskZero7 on Fri, 18 Feb 2022 01:17:53 +0200