Uncover the mysteries of Linux swap

Source: Internet
Author: User

Swap, that is, in the Swap zone, how many people care about it except when installing Linux? In fact, Swap adjustment is crucial to the performance of Linux servers, especially Web servers. By adjusting Swap, the system performance bottleneck is sometimes crossed to save system upgrade costs.

The principle of Swap is a complicated problem, which requires a lot of space. Here, we will only give a brief introduction. We will discuss in detail the implementation details of Swap in future articles.

As we all know, modern operating systems have implemented the "virtual memory" technology, which not only breaks through the physical memory restrictions in terms of functionality, so that programs can manipulate space larger than the actual physical memory, more importantly, "Virtual Memory" isolates the security protection network of each process so that each process is not disturbed by other programs.

Swap
The role of space can be simply described as: when the system's physical memory is not enough, you need to release a part of the physical memory for the current running program to use. The released space may come from
Some programs that have not been operated for a long time, these released spaces are temporarily saved to the Swap space, and when those programs are to run, then, the stored data is restored from Swap to the memory. In this way, the system
Swap is always switched when the physical memory is insufficient.

Computer users often encounter this phenomenon. For example, when you use a Windows system, you can run multiple programs at the same time. When you switch to a program that has not been noticed for a long time, you will hear the hard disk "burst" straight
. This is because the memory of this program is "stolen" by frequently running programs and put in the Swap area. Therefore, once the program is placed on the front end, it will retrieve its data from the Swap area,
Put it into the memory, and then run.

It should be noted that not all data exchanged from the physical memory will be put into Swap (if so, Swap will be overwhelmed ), A considerable amount of data is directly exchanged to the file system.
System. For example, some programs open some files and read and write the files (in fact, each program must open at least one file, that is, run the program itself ), when you need to swap out the memory space of these programs,
There is no need to put the data in the file
Swap space is in, but you can directly put it in the file. If it is a file read operation, the memory data is directly released and does not need to be exchanged, because it can be directly restored from the file system when needed next time; for example:
If you write a file, you only need to save the changed data to the file for recovery. However, the data of objects generated using the malloc and new functions is different. They need Swap space because they are
The file system does not have the corresponding "reserve" file, so it is called "Anonymous" (Anonymous) memory data. This type of data also includes some status and variable data in the stack. So Swap
The space is the swap space for "anonymous" data.

128 M Swap limit exceeded

It is often seen that some Linux (Chinese version) Installation manuals have such instructions: Swap space cannot exceed 128 MB. Why is there such a saying? Before explaining the history of the number "M", I would like to give a question: there is no m limit at all! The current limit is 2 GB!

Swap
The size of each page is the same as that of the Memory Page, facilitating data exchange between Swap space and memory. The first page of the Swap space is used in the earlier version of Linux to implement the Swap space.
As a "Bit ing" (Bit
Map ). This means that each bit on the first page corresponds to a page of Swap space. If this parameter is set to 1, Swap is available on this page. If it is set to 0, this page is a bad block and cannot be used. In this case,
The first Swap ing bit should be 0, because the first page of Swap is the ing page. In addition, the last 10 ing bits are also occupied to represent the version of Swap (the original version is
Swap_space, the current version is swapspace2 ). If the size of one page is s, the implementation of this Swap can manage "8 * (s-
10)-1 "Swap page. For i386 systems, if s = 4096, the total space size is 133890048. If 1 MB = 2 ^ 20
In bytes, the size is exactly 128 MB.

To manage the Swap space in this way, it is necessary to prevent bad blocks in the Swap space. If the system checks that Swap has bad blocks, 0 is marked on the corresponding bit ing, indicating that this page is unavailable. In this way, the system generates errors instead of Bad blocks when using Swap.

Currently, system designers believe that:

1. The hard disk is of good quality and there are few bad disks.

2. Even if there are not many, you only need to list the Bad blocks, instead of creating a ing for each page.

3. If there are many bad blocks, this hard disk should not be used as the Swap space.
Therefore, in Linux, the bitmap method is removed, and the M limit is also removed. Direct access with address, limited to 2G.

Impact of Swap configuration on Performance

If you allocate too much Swap space, the disk space will be wasted, and the Swap space is too small, the system will encounter an error.

If the system's physical memory is used up, the system will run slowly but still run. If the Swap space is used up, the system will encounter an error. For example, a Web server can be derived based on the number of requests
Multiple Service processes (or threads) are generated. If Swap space is used up, the service process cannot be started.
Memory "error. In severe cases, the service process may be deadlocked. Therefore, Swap space allocation is very important.

Generally, Swap space should be greater than or equal to the size of physical memory, and the minimum should not be less than 64 M. Generally, the size of Swap space should be 2-times that of physical memory. However, based on different applications
Different Configurations: For a small desktop system, only a small Swap space is required, while for a large server system, different sizes of Swap space are required depending on the situation. Especially for database servers and Web servers
Server, as the traffic increases, the requirements for Swap space will also increase. For specific configuration, see the description of each server product.

In addition, the number of Swap partitions has a great impact on the performance. Because the Swap operation is disk IO
If there are multiple Swap areas, the Swap space allocation will operate on all Swap in turn, which will greatly balance the IO load and speed up Swap switching. If only
There is a swap zone, and all the swap operations will make the swap zone very busy, so that the system is waiting for most of the time, the efficiency is very low. The performance monitoring tool will find that the CPU is not very busy at this time, but the system
Slow. This shows that the bottleneck lies in I/O, and it cannot be solved by increasing the CPU speed.
System Performance Monitoring

The allocation of Swap space is important, but the performance monitoring during system operation is more valuable. Through performance monitoring tools, you can check the performance indicators of the system and find the bottleneck of the system performance. This article only describes some Swap-related commands and usage in Solaris.

The most common command is the Vmstat command (which is available on most Unix platforms), which allows you to view most performance metrics.

For example:
# Vmstat 3
Procs memory swap io system cpu
R B w swpd free buff cache si so bi bo in cs us sy id
0 0 0 0 93880 3304 0 0 10 2 19372 10 0 0 99
0 0 0 0 93880 3304 0 0 0 19372 8 0 0 109
0 0 0 0 93880 3304 0 0 0 19372 6 0 0 112
............

Command description:
Parameters after vmstat specify the time interval for performance indicator capture. 3 indicates capture every three seconds. The first line of data does not need to be viewed and has no value. It only reflects the average performance since the startup. Starting from the second line, the system performance indicators within three seconds are reflected. Swap-related performance indicators include the following:

W under procs
It indicates the number of processes that need to be released and swapped out in the current (within three seconds.

Swpd under memory
It indicates the size of the swap space used.

Si, so under swap
Si indicates the total number of swap memories exchanged per second (within three seconds), measured in Kbytes. So indicates the total number of swap memories exchanged per second (within three seconds, the Unit is Kbytes.
The larger the number of indicators, the more busy the system. The system busy level of these indicators depends on the specific configuration of the system. During normal system operation, the system administrator should write down the values of these indicators and compare them when a system problem occurs. Then, the system administrator will soon find the problem, standard indicators for normal operation of the system are formulated for performance monitoring.

In addition, you can use Swapon-s to easily view the current usage of swap resources. For example:
# Swapon-S
Filename type size used priority
/Dev/hda9 partition 361420 0 3

It is easy to see the size of swap space used and unused resources.

Swap load should be kept below 30% to ensure good system performance.

System commands for swap operations

To increase the swap space, take the following steps:
1) become a Super User
$ Su-Root

2) create a swap file
# Dd If =/dev/Zero of = swapfile BS = 1024 COUNT = 65536

Create a swap file with continuous space.

3) activate the swap file
#/Usr/sbin/Swapon swapfile

Swapfile refers to the swap file created in the previous step. 4) now the newly added swap file has taken effect, but after the system restarts, it does not remember the previous steps. Therefore, you must record the file name and swap type in the/etc/fstab file, for example:
/Path/swapfile none swap SW, PRI = 3 0 0

5) check whether the swap file is added
/Usr/sbin/Swapon-S

Delete unnecessary swap space.
1) become a Super User

2) use the swapoff command to reclaim swap space.
#/Usr/sbin/swapoff swapfile

3) edit the/etc/fstab file and remove the entity of the swap file.

4) reclaim the file from the file system.
# Rm swapfile

5) Of course, if the swap space is not a file but a partition, you need to create a new file system and then mount it to the original file system.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.