导航:首页 > 操作系统 > linux进程swap

linux进程swap

发布时间:2022-12-20 07:46:47

linux系统中如何调整swap大小

这里我要跟大家介绍的是Linux系统中调整swap大小的 方法 。欢迎大家阅读。

Linux系统中调整swap大小的方法

1、使用free命令带上m参数,查看swap文件大小,官方建议在RAM是2到4.5G时,swap是RAM的2倍;如果RAM大于等于4G则swap等于RAM即可

2、也可用cat 查看etc目录下的swaps文件,如下图

3、创建一个swap文件

复制内容到剪贴板

########

dd if=/dev/zero of=/tmp/swap bs=1MB count=1024

########

以下仅供参考:不用看

Creating a swap file

First of, make sure the file system the disk you wish to swap on is properly mounted. For the purposes of this tutorial we will assume the disk is mounted as /mnt and we want to use the file /mnt/myswap.swp for swapping.

使用下面的命令创建一个1G的swap文件

复制内容到剪贴板

Use the following command to create a 1024MB file that we will use for swapping

########

dd if=/dev/zero of=/mnt/myswap.swp bs=1024MB count=1

########

4、制作一个swap文件,如果觉得繁琐,可以将mkswap文件挂载到tmp目录下,例如:

复制内容到剪贴板

########

mkswap /tmp/swap

########

以下仅供参考:不用看

Preparing the swap file

Before we enable the swap file we must first set it up. The following command accomplishes just that:

########

mkswap /mnt/myswap.swp

########

5、使用swapon 启动/tmp/swap

复制内容到剪贴板

########

swapon /tmp/swap

########

使用一个swap分区,如果已经有一个swap分区,该步骤可以省略

以下仅供参考:不用看

Using a swap partition

Setting up a swap partition is a bit more difficult, as the partition must be first created then formatted using the linux-swap file system. Once that is done, assuming the swap partition is at/dev/scsi/host0/bus0/target0/lun0/part5 (common for v24 USB drives with mutiple partitions), the only command that needs be issued is:

6、再次使用free查看增加后的swap大小

7、如果只想增加swap大小,请忽略以下的操作,重要!!如果不使用刚才增加的1G的swap文件,使用下面的swapoff命令,可以关闭,这样swap文件就缩小了1G

使用swapoff关闭swap文件

复制内容到剪贴板

########

swapoff /tmp/swap

########

注意事项:如果只想增加swap大小,请忽略第7步的所有操作。

Ⅱ linux下查看哪些进程在占用swap

1、使用top命令查看当前进程swap占用
2、使用脚本文件
#!/bin/bash

# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
do
let SUM=$SUM+$SWAP
done
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
let OVERALL=$OVERALL+$SUM
SUM=0

done
echo "Overall swap used: $OVERALL"
注意:使用sudo或root权限来执行该脚本,不然的话非执行用户的进程的输出结果为0.

Ⅲ Linux下swap耗尽该怎么办如何释放swap

Linux下交换内存耗尽如何查看及如何处理。以及查看shell脚本描述。交换内存不足时,启动应用时会报内存不足。
1、启动应用时报内存不足,直接Linux命令行top查看下。swap used100%,0free。

2、reboot服务器能有效的释放swap,可是很多情况下是不能重启服务器的。这时就要弄明白是什么占着内存。查看下/proc目录下内容,发现很多数字命名的目录,这些就是Linux的进程了。

3、要让进程释放swap的方法只有kill掉该进程了。写个脚本来查看具体是哪些进程占着内存啦。
一、对/proc目录下所有以数字为名的目录进行遍历
二、1目录是根进程重启会导致系统重启,所以直接排除掉。
三、算出每个进程占用内存的大小,然后按照大小排序
四、输出内存占用大于1MB的进程

4、将运行结果保存到swap.log文件中

5、查看swap.log.10325这个进程内存占用最多有130几M。

6、直接kill掉,然后再top查看。ok,swap一下子释放了很多,搞定。

注意事项:proc目录下1目录不能直接kill掉。

Ⅳ 在linux交换空间作用是什么

Linux交换空间(swap space)是磁盘上的一块区域,可以是一个分区或一个文件,或者是他们组合。当系统物理内存吃紧时,Linux会将内存中不常访问的数据保存到swap上,这样系统就有更多的物理内存为各个进程服务。

Linux 交换空间(swap space)是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合。简单点说,当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是我们常说的 swap out 和 swap in。

交换空间 Linux swap

理论上来说,如果物理内存足够多并且不需要休眠功能,那 swap 就没什么用,可关键问题是我们很难保证物理内存在任何情况下都够用,因为总有意想不到的情况发生,比如某些进程耗内存超预期,服务器压力超预期,内存泄漏等。

Linux swap 的好处
1.对于一些大型的应用程序(如 LibreOffice、video editor 等),在启动的过程中会使用大量的内存,但这些内存很多时候只是在启动的时候用一下,后面的运行过程中很少再用到这些内存。有了 swap 后,系统就可以将这部分不这么使用的内存数据保存到 swap 上去,从而释放出更多的物理内存供系统使用。

2.很多发行版(如 ubuntu)的休眠功能依赖于 swap 分区,当系统休眠的时候,会将内存中的数据保存到 swap 分区上,等下次系统启动的时候,再将数据加载到内存中,这样可以加快系统的启动速度,所以如果要使用休眠的功能,必须要配置 swap 分区,并且大小一定要大于等于物理内存

3.在某些情况下,物理内存有限,但又想运行耗内存的程序怎么办?这时可以通过配置足够的 swap 空间来达到目标,虽然慢一点,但至少可以运行。

4.虽然大部分情况下,物理内存都是够用的,但是总有一些意想不到的状况,比如某个进程需要的内存超过了预期,或者有进程存在内存泄漏等,当内存不够的时候,就会触发内核的 OOM killer,根据 OOM killer 的配置,某些进程会被 kill 掉或者系统直接重启(默认情况是优先 kill 耗内存最多的那个进程),不过有了 swap 后,可以拿 swap 当内存用,虽然速度慢了点,但至少给了我们一个去 debug、kill 进程或者保存当前工作进度的机会。

5.如果看过 Linux 内存管理,就会知道系统会尽可能多的将空闲内存用于 cache,以加快系统的 I/O 速度,所以如果能将不怎么常用的内存数据移动到 swap 上,就会有更多的物理内存用于 cache,从而提高系统整体性能。

Ⅳ linux下SWAP的作用

相当于windows的虚拟内存,当你内存不够用时,会暂时把内存中不用的进程和存到硬盘上的swap分区,当cpu调用时,再从硬盘中调回内存

Ⅵ linux swap分区原理

swap介绍

Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。

本文内容包括:

Swap基本原理

突破128M Swap限制

Swap配置对性能的影响

Swap性能监视

有关Swap操作的系统命令

Swap基本原理

Swap的原理是一个较复杂的问题,需要大量的篇幅来说明。在这里只作简单的介绍,在以后的文章中将和大家详细讨论Swap实现的细节。

众所周知,现代操作系统都实现了“虚拟内存”这一技术,不但在功能上突破了物理内存的限制,使程序可以操纵大于实际物理内存的空间,更重要的是,“虚拟内存”是隔离每个进程的安全保护网,使每个进程都不受其它程序的干扰。

Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。

计算机用户会经常遇这种现象。例如,在使用Windows系统时,可以同时运行多个程序,当你切换到一个很长时间没有理会的程序时,会听到硬盘“哗哗”直响。这是因为这个程序的内存被那些频繁运行的程序给“偷走”了,放到了Swap区中。因此,一旦此程序被放置到前端,它就会从Swap区取回自己的数据,将其放进内存,然后接着运行。

需要说明一点,并不是所有从物理内存中交换出来的数据都会被放到Swap中(如果这样的话,Swap就会不堪重负),有相当一部分数据被直接交换到文件系统。例如,有的程序会打开一些文件,对文件进行读写(其实每个程序都至少要打开一个文件,那就是运行程序本身),当需要将这些程序的内存空间交换出去时,就没有必要将文件部分的数据放到Swap空间中了,而可以直接将其放到文件里去。如果是读文件操作,那么内存数据被直接释放,不需要交换出来,因为下次需要时,可直接从文件系统恢复;如果是写文件,只需要将变化的数据保存到文件中,以便恢复。但是那些用malloc和new函数生成的对象的数据则不同,它们需要Swap空间,因为它们在文件系统中没有相应的“储备”文件,因此被称作“匿名”(Anonymous)内存数据。这类数据还包括堆栈中的一些状态和变量数据等。所以说,Swap空间是“匿名”数据的交换空间。

突破128M Swap限制

经常看到有些Linux(国内汉化版)安装手册上有这样的说明:Swap空间不能超过128M。为什么会有这种说法?在说明“128M”这个数字的来历之前,先给问题一个回答:现在根本不存在128M的限制!现在的限制是2G!

Swap空间是分页的,每一页的大小和内存页的大小一样,方便Swap空间和内存之间的数据交换。旧版本的Linux实现Swap空间时,用Swap空间的第一页作为所有Swap空间页的一个“位映射”(Bit map)。这就是说第一页的每一位,都对应着一页Swap空间。如果这一位是1,表示此页Swap可用;如果是0,表示此页是坏块,不能使用。这么说来,第一个Swap映射位应该是0,因为,第一页Swap是映射页。另外,最后10个映射位也被占用,用来表示Swap的版本(原来的版本是Swap_space ,现在的版本是swapspace2)。那么,如果说一页的大小为s,这种Swap的实现方法共能管理“8 * ( s - 10 ) - 1”个Swap页。对于i386系统来说s=4096,则空间大小共为133890048,如果认为1 MB=2^20 Byte的话,大小正好为128M。

之所以这样来实现Swap空间的管理,是要防止Swap空间中有坏块。如果系统检查到Swap中有坏块,则在相应的位映射上标记上0,表示此页不可用。这样在使用Swap时,不至于用到坏块,而使系统产生错误。

现在的系统设计者认为:

Ⅶ linux系统swap是什么意思

linux系统swap意思:

1、Swap分区,即交换区,系统在物理内存不够时,与Swap进行交换。 其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。
2、众所周知,现代操作系统都实现了“虚拟内存”这一技术,不但在功能上突破了物理内存的限制,使程序可以操纵大于实际物理内存的空间,更重要的是,“虚拟内存”是隔离每个进程的安全保护网,使每个进程都不受其它程序的干扰。
3、计算机用户会经常遇这种现象。例如,在使用Windows系统时,可以同时运行多个程序,当你切换到一个很长时间没有理会的程序时,会听到硬盘“哗哗”直响。这是因为这个程序的内存被那些频繁运行的程序给“偷走”了,放到了Swap区中。因此,一旦此程序被放置到前端,它就会从Swap区取回自己的数据,将其放进内存,然后接着运行。

Ⅷ linux里面虚拟内存和swap有什么区别

为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache.前者针对磁盘块的读写,后者针对文件inode的读写.这些Cache有效缩短了I/O系统调用(比如 read,write,getdents)的时间.x0dx0a内存活动基本上可以用3个数字来量化:活动虚拟内存总量,交换(swapping)率和调页(paging)率.其中第一个数字表明内存的总需求量,后两个数字表示那些内存中有多少比例正处在使用之中.目标是减少内存活动或增加内存量,直到调页率保持在一个可以接受的水平上为止.x0dx0a活动虚拟内存的总量(VM)=实际内存大小(size of real memory)(物理内存)+使用的交换空间大小(amount of swap space used)x0dx0a当程序运行需要的内存大于物理内存时,Linux系统采用了调页机制,即系统一些内存中的页面到磁盘上,腾出来空间供进程使用。x0dx0a大多数系统可以忍受偶尔的调页,但是频繁的调页会使系统性能急剧下降。x0dx0aLinux内存管理:Linux系统通过2种方法进行内存管理,“调页算法”,“交换技术”。x0dx0a调页算法是将内存中最近不常使用的页面换到磁盘上,把常使用的页面(活动页面)保留在内存中供进程使用。x0dx0a交换技术是系统将整个进程,而不是部分页面,全部换到磁盘上。正常情况下,系统会发生一些交换过程。x0dx0a当内存严重不足时,系统会频繁使用调页和交换,这增加了磁盘I/O的负载。进一步降低了系统对作业的执行速度,即系统I/O资源问题又会影响到内存资源的分配。x0dx0aLinux的虚拟内存是一个十分复杂的子系统,它实现了进程间代码与数据共享机制的透明性,并能够分配比系统现有物理内存更多的内存,某些操作系统的虚存甚至能通过提供缓存功能影响到文件系统的性能,各种风格的Linux的虚存的实现方式区别很大,但都离不开下面的4个概念。x0dx0ax0dx0a1:实际内存x0dx0a实际内存是指一个系统中实际存在的物理内存,称为RAM。实际内存是存储临时数据最快最有效的方式,因此必须尽可能地分配给应用程序,现在的RAM的形式有多种:SIMM、DIMM、Rambus、DDR等,很多RAM都可以使用纠错机制(ECC)。x0dx0a2:交换空间x0dx0a交换空间是专门用于临时存储内存的一块磁盘空间,通常在页面调度和交换进程数据时使用,通常推荐交换空间的大小应该是物理内存的二到四倍。x0dx0a3:页面调度x0dx0a页面调度是指从磁盘向内存传输数据,以及相反的过程,这个过程之所以被称为页面调度,是因为Linux内存被平均划分成大小相等的页面;通常页面大小为 4KB和8KB(在Solaris中可以用pagesize命令查看)。当可执行程序开始运行时,它的映象会一页一页地从磁盘中换入,与此类似,当某些内存在一段时间内空闲,就可以把它们换出到交换空间中,这样就可以把空闲的RAM交给其他需要它的程序使用。x0dx0a4:交换x0dx0a页面调度通常容易和交换的概念混淆,页面调度是指把一个进程所占内存的空闲部分传输到磁盘上,而交换是指当系统中实际的内存已不够满足新的分配需求时,把整个进程传输到磁盘上,交换活动通常意味着内存不足。x0dx0avmstat监视内存性能:该命令用来检查虚拟内存的统计信息,并可显示有关进程状态、空闲和交换空间、调页、磁盘空间、CPU负载和交换,cache刷新以及中断等方面的信息。

Ⅸ Linux操作系统swap是外存吗

swap是中文名称交换分区,是linux系统的一种虚拟内存机制
实际上是在硬盘上开辟一块存储空间,可以是一个单独的硬盘分区,也可以是一个分区上的一个文件,作用是作为物理内存条的补充,加入系统,当运行大程序,物理内存不够,就把物理内存中的一部分数据临时放置到swap里面,以腾出内存空间给程序运行
所以swap是一种机制,不是实际的内存条

Ⅹ Linux内存机制(swap)

我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。

物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。

作为物理内存的扩展,linux会在物理内存不足时,使用交换分区的虚拟内存,更详细的说,就是内核会将暂时不用的内存块信息写到交换空间,这样以来,物理内存得到了释放,这块内存就可以用于其它目的,当需要用到原始的内容时,这些信息会被重新从交换空间读入物理内存。

Linux的内存管理采取的是分页存取机制,为了保证物理内存能得到充分的利用,内核会在适当的时候将物理内存中不经常使用的数据块自动交换到虚拟内存中,而将经常使用的信息保留到物理内存。

要深入了解linux内存运行机制,需要知道下面提到的几个方面:

Linux系统会不时的进行页面交换操作,以保持尽可能多的空闲物理内存,即使并没有什么事情需要内存,Linux也会交换出暂时不用的内存页面。这可以避免等待交换所需的时间。

Linux 进行页面交换是有条件的,不是所有页面在不用时都交换到虚拟内存,linux内核根据”最近最经常使用“算法,仅仅将一些不经常使用的页面文件交换到虚拟 内存,有时我们会看到这么一个现象:linux物理内存还有很多,但是交换空间也使用了很多。其实,这并不奇怪,例如,一个占用很大内存的进程运行时,需 要耗费很多内存资源,此时就会有一些不常用页面文件被交换到虚拟内存中,但后来这个占用很多内存资源的进程结束并释放了很多内存时,刚才被交换出去的页面 文件并不会自动的交换进物理内存,除非有这个必要,那么此刻系统物理内存就会空闲很多,同时交换空间也在被使用,就出现了刚才所说的现象了。关于这点,不 用担心什么,只要知道是怎么一回事就可以了。

交换空间的页面在使用时会首先被交换到物理内存,如果此时没有足够的物理内存来容纳这些页 面,它们又会被马上交换出去,如此以来,虚拟内存中可能没有足够空间来存储这些交换页面,最终会导致linux出现假死机、服务异常等问题,linux虽 然可以在一段时间内自行恢复,但是恢复后的系统已经基本不可用了。

因此,合理规划和设计Linux内存的使用,是非常重要的.

在Linux 操作系统中,当应用程序需要读取文件中的数据时,操作系统先分配一些内存,将数据从磁盘读入到这些内存中,然后再将数据分发给应用程序;当需要往文件中写 数据时,操作系统先分配内存接收用户数据,然后再将数据从内存写到磁盘上。然而,如果有大量数据需要从磁盘读取到内存或者由内存写入磁盘时,系统的读写性 能就变得非常低下,因为无论是从磁盘读数据,还是写数据到磁盘,都是一个很消耗时间和资源的过程,在这种情况下,Linux引入了buffers和 cached机制。

buffers与cached都是内存操作,用来保存系统曾经打开过的文件以及文件属性信息,这样当操作系统需要读取某些文件时,会首先在buffers 与cached内存区查找,如果找到,直接读出传送给应用程序,如果没有找到需要数据,才从磁盘读取,这就是操作系统的缓存机制,通过缓存,大大提高了操 作系统的性能。但buffers与cached缓冲的内容却是不同的。

buffers是用来缓冲块设备做的,它只记录文件系统的元数据(metadata)以及 tracking in-flight pages,而cached是用来给文件做缓冲。更通俗一点说:buffers主要用来存放目录里面有什么内容,文件的属性以及权限等等。而cached直接用来记忆我们打开过的文件和程序。

为了验证我们的结论是否正确,可以通过vi打开一个非常大的文件,看看cached的变化,然后再次vi这个文件,感觉一下两次打开的速度有何异同,是不是第二次打开的速度明显快于第一次呢?接着执行下面的命令:

find / -name .conf 看看buffers的值是否变化,然后重复执行find命令,看看两次显示速度有何不同。

上面这个60代表物理内存在使用40%的时候才会使用swap(参考网络资料:当剩余物理内存低于40%(40=100-60)时,开始使用交换空间) swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

值越大表示越倾向于使用swap。可以设为0,这样做并不会禁止对swap的使用,只是最大限度地降低了使用swap的可能性。

通常情况下:swap分区设置建议是内存的两倍 (内存小于等于4G时),如果内存大于4G,swap只要比内存大就行。另外尽量的将swappiness调低,这样系统的性能会更好。

B. 修改swappiness参数

永久性修改:

立即生效,重启也可以生效。

一般系统是不会自动释放内存的 关键的配置文件/proc/sys/vm/drop_caches。这个文件中记录了缓存释放的参数,默认值为0,也就是不释放缓存。他的值可以为0~3之间的任意数字,代表着不同的含义:

0 – 不释放 1 – 释放页缓存 2 – 释放dentries和inodes 3 – 释放所有缓存

前提:首先要保证内存剩余要大于等于swap使用量,否则会宕机!根据内存机制,swap分区一旦释放,所有存放在swap分区的文件都会转存到物理内存上。通常通过重新挂载swap分区完成释放swap。
a.查看当前swap分区挂载在哪?b.关停这个分区 c.查看状态:d.查看swap分区是否关停,最下面一行显示全 e.将swap挂载到/dev/sda5上 f.查看挂载是否成功

阅读全文

与linux进程swap相关的资料

热点内容
51单片机程序单步视频 浏览:237
家庭宽带如何连接服务器 浏览:117
汽车高压泵解压 浏览:770
上门正骨用什么app 浏览:758
安卓为什么免费使用 浏览:397
加密货币都有哪些平台 浏览:625
python和matlab难度 浏览:388
python爬虫很难学么 浏览:572
小米解压积木可以组成什么呢 浏览:816
为什么滴滴出行app还能用 浏览:564
怎么升级手机android 浏览:922
php权威编程pdf 浏览:994
扣扣加密技巧 浏览:720
苹果如何创建服务器错误 浏览:497
软考初级程序员大题分值 浏览:475
js压缩视频文件 浏览:580
linux如何通过命令创建文件 浏览:991
应用加密app还能访问应用嘛 浏览:435
安卓怎么用支付宝交违章罚款 浏览:667
php面向对象的程序设计 浏览:506