The following is a detailed introduction to the use of the top command in Linux, the need for friends can come to the reference
View multi-core CPU commands
Mpstat-p All and sar-p all
Description:sar-p all > Aaa.txt redirect output to file Aaa.txt
The top command is often used to monitor Linux system conditions, such as CPU, memory usage, the programmer basically knows this command, but it is strange to use it very few people, such as the top monitoring view of the memory value of the meaning of a lot of distortion.
This article covers the meaning of various data in the top view and the sorting of the fields of each process (task) in the view through top monitoring of a running Web server.
Top Enter view
Top View 01
Top View 01 is a basic view of just entering top, and we'll combine this view to explain what each data means.
Copy CodeThe code is as follows:
First line:
10:01:23-Current system time
126 days, 14:29-the system has been running for 126 day, 14 hours, 29 minutes (not restarted during this period)
2 users-currently has 2 users logged into the system
The three numbers behind the load average:1.15, 1.42, 1.44-load average are 1-minute, 5-minute, 15-minute loads respectively.
The load average data is the number of active processes that are checked every 5 seconds and then calculated by a particular algorithm. If this number is divided by the number of logical CPUs, the result above 5 indicates that the system is overloaded.
Copy CodeThe code is as follows:
Second line:
tasks-task (process), the system now has a total of 183 processes, of which there are 1 in the running, 182 in hibernation (sleep), 0 in the stoped state, and 0 in the zombie State (zombie).
Copy CodeThe code is as follows:
Third line: CPU status
6.7% us-The percentage of CPU consumed by user space.
0.4% sy-The percentage of CPU consumed by the kernel space.
0.0% ni-The percentage of CPU that has changed the priority of the process
92.9% id-Idle CPU percentage
0.0% Wa-io waiting for CPU percentage
0.0% hi-Hard Interrupt (Hardware IRQ)% of CPU occupied
0.0% si-Soft Interrupt (software interrupts)% of CPU occupied
In this case the CPU usage ratio is different from the Windows concept, and if you don't understand the user space and kernel space, it needs to be recharged.
Copy CodeThe code is as follows:
Line four: Memory status
8306544k total-Total Physical memory (8GB)
7775876k used-Total Memory in use (7.7GB)
530668k free-Total free memory (530M)
79236k buffers-Cache Memory (79M)
Copy CodeThe code is as follows:
Line five: Swap swap partition
2031608k total-Swap Area total (2GB)
Total swap area used by 2556k used-(2.5M)
2029052k free-Total Idle swap area (2GB)
4231276k cached-Buffer Swap area total (4GB)
The point here is that this data cannot be understood in the memory concept of Windows, which is "dangerous" if you press windows: The total amount of memory in 8G is only 530M of available memory. The memory management of Linux has its particularity, the complex point needs a book to explain, here is simply to say the point and our traditional concept (Windows) is different.
The total amount of memory in use in row four (used) refers to the amount of memory that is now controlled by the system kernel, and the total amount of free memory that the kernel has not included in its control range. The memory that is included in kernel management is not always in use, but also includes the memory that has been used in the past that can now be reused, and the kernel does not return these reusable memory to free, so there is less memory on Linux, but don't worry about it.
If you are accustomed to calculating the number of available memory, here is an approximate formula: The fourth line of Free + fourth row of buffers + fifth row of cached, press this formula for this server's available memory: 530668+79236+4231276 = 4.7GB.
For memory monitoring, in the top we have to monitor the fifth line swap partition used, if this value is constantly changing, indicating that the kernel is constantly in memory and swap data exchange, which is really not enough memory.
Copy CodeThe code is as follows:
Line Six is a blank line
Copy CodeThe code is as follows:
Line seventh below: status monitoring of each process (Task)
pid-Process ID
user-Process Owner
pr-Process Priority
The Ni-nice value. Negative values indicate high priority, positive values indicate low priority
The total amount of virtual memory used by the virt-process, in kilobytes. Virt=swap+res
The size, in kilobytes, of the physical memory used by the res-process and not swapped out. Res=code+data
shr-shared memory size, in kilobytes
S-process state. d= non-disruptive sleep status r= run s= sleep t= track/stop z= zombie Process
%cpu-percentage of CPU time that was last updated to current
Percentage of physical memory used by the%mem-process
Total CPU time used by the time+-process, Unit 1/100 sec
command-Process Name (command name/command line)
Multi-u multi-core CPU monitoring
In the top basic view, press the keypad number "1" to monitor the status of each logical CPU:
Top View 02
Observe that the server has 16 logical CPUs, which are actually 4 physical CPUs.
Process Field Sort
By default, when Top is reached, the processes are sorted by CPU consumption, the Java process with process ID 14210 in top view 01 is ranked first (CPU occupied 100%), and the Java process with process ID 14183 is ranked second (CPU consumption 12%). You can change the sort field by keyboard instructions, for example, to monitor which process consumes the most mem, I use the following method:
1. Tap the keyboard "B" (Turn on/off the highlight effect) and the top view changes as follows:
Top View 03
We found that the "top" process with process ID 10704 was highlighted, and the top process was the only running state (runing) that was shown in the second row of the view, and you could turn off or turn on the highlight of the running process by tapping the "Y" key.
2. Tap the keyboard "X" (The highlight effect on/off the row sequence), and the top view changes as follows:
Top View 04
As you can see, the top default sort column is "%cpu".
3. Use SHIFT + > or SHIFT + < To change the column to the right or left by pressing SHIFT + >:
Top View 05
The view is now sorted according to%mem.
Change the Process display field
1. Tap the "F" key and top into another view, where you can arrange the display fields in the base view:
Top View 06
Here is a list of all the process fields that can be displayed in the top Basic view, fields with "*" and uppercase letters are visible, fields without "*" and lowercase are not displayed. If you want to display the "CODE" and "DATA" two fields in the base view, you can tap the "R" and "s" Keys:
Top View 07
2. "Enter" to return to the basic view, you can see more "CODE" and "DATA" two fields:
Top View 08
Additions to the top command
The top command is the preferred command for system monitoring on Linux, but sometimes it does not reach our requirements, such as the current server, where top monitoring has a lot of limitations. This server runs the WebSphere cluster, there are two node services, is "Top view 01" in the eldest, the old 22 Java processes, the top command is the smallest monitoring unit of the process, so I do not see the number of Java threads and customer connections, And these two indicators are very important indicators of Java Web Services, usually I use PS and netstate two commands to supplement the top of the shortcomings.
Copy CodeThe code is as follows:
To monitor the number of Java threads:
ps-elf | grep java | Wc-l
Copy CodeThe code is as follows:
Monitor network client connections:
Netstat-n | grep TCP | grep Listening Port | Wc-l
The above two commands, can change the parameters of grep, to achieve more detailed monitoring requirements.
Under the guidance of the idea of "everything is a file" in the Linux system, the running state of all processes can be obtained by file. system root/proc, each digital subdirectory name is the PID of the running process, into any process directory, through which files or directories to observe the process of the various operational indicators, such as the task directory is used to describe the thread of the process, Therefore, you can also get the number of threads running in a process by using the following method (PID refers to the process ID):
Copy CodeThe code is as follows:
Ls/proc/pid/task | Wc-l
There is also a command pmap in Linux to output the state of the process memory that can be used to analyze the thread stack:
Copy CodeThe code is as follows:
Pmap PID switch from: http://blog.csdn.net/dxl342/article/details/53507673
A detailed explanation of the Linux top command usage