linux编程系统中交换空间的使用情况?

linux编程系统中交换空间的使用情况?,第1张

计算机的存储空间问题相信大部分的管理员都有不同的处理方式。今天我们就一起来了解一下,在linux系统中,交换空间的具体使用情况是什么。希望通过对本文的阅读,大家对于linux系统有更多的了解,下面就开始今天的主要内容吧。

交换空间

交换空间是现代Linux系统中的二种内存类型。交换空间的主要功能是当全部的RAM被占用并且需要更多内存时,用磁盘空间代替RAM内存。

例如,假设你有一个8GBRAM的计算机。如果你启动的程序没有填满RAM,一切都好,不需要交换。假设你在处理电子表格,当添加更多的行时,你电子表格会增长,加上所有正在运行的程序,将会占用全部的RAM。如果这时没有可用的交换空间,你将不得不停止处理电子表格,直到关闭一些其他程序来释放一些RAM。

内核使用一个内存管理程序来检测近没有使用的内存块(内存页)。内存管理程序将这些相对不经常使用的内存页交换到硬盘上专门指定用于“分页”或交换的特殊分区。这会释放RAM,为输入电子表格更多数据腾出了空间。那些换出到硬盘的内存页面被内核的内存管理代码跟踪,如果需要,可以被分页回RAM。

Linux计算机中的内存总量是RAM+交换分区,交换分区被称为虚拟内存.

Linux交换分区类型

Linux提供了两种类型的交换空间。默认情况下,大多数Linux在安装时都会创建一个交换分区,但是也可以使用一个特殊配置的文件作为交换文件。电脑培训http://www.kmbdqn.cn/发现交换分区顾名思义就是一个标准磁盘分区,由mkswap命令指定交换空间。

如果没有可用磁盘空间来创建新的交换分区,或者卷组中没有空间为交换空间创建逻辑卷,则可以使用交换文件。这只是一个创建好并预分配指定大小的常规文件。然后运行mkswap命令将其配置为交换空间。除非绝对必要,否则我不建议使用文件来做交换空间。(LCTT译注:Ubuntu近来的版本采用了交换文件而非交换空间,所以我对于这种说法保留看法)

Swap交换大小应该是多少?交换应该是RAM大小的两倍还是RAM大小的一半?如果我的系统有几GB的RAM,我是否需要交换?

也许这些是关于在安装Linux时选择交换大小的最常见问题。

这不是什么新鲜事。交换大小一直存在很多混乱。

很长一段时间,推荐的交换大小是RAM大小的两倍,但这条黄金法则不再适用于现代计算机。

我们的系统RAM大小高达128 GB,许多旧计算机甚至没有这么多的硬盘。但是你会分配到具有32 GB RAM的系统的交换大小? 64GB?那将是一个荒谬的硬盘浪费,不是吗?

在了解需要分配Swap空间应该分配多大之前,让我们先快速了解交换内存的一两件事。

这些有助于让每个人真正理解为什么Linux需要Swap交换空间。

我们都知道计算机系统在运行的时候会使用到RAM(Random Access Memory),当只有少数应用程序在运行时,系统会使用可用的RAM进行管理。

但是如果有很多很多的程序在运行,那么就需要非常大容量RAM,这时候计算机RAM不够,应用程序就会崩溃。

当RAM耗尽时,Swap交换空间会被系统使用。当RAM耗尽时,Linux系统使用部分硬盘内存并将其分配给正在运行的应用程序。

这听起来非常不错,这意味着如果我们如果分配50GBSwap交换空间,系统或许可以同时运行成百上千的应用程序?是这样么?大错特错!!!

你知道的,程序运行速度十分重要;

RAM访问数据的大小为纳秒级;

SSD访问数据(以微秒为单位),而普通硬盘以毫秒为单位访问数据;

这意味着RAM比SSD快1000倍,比普通HDD快100,000倍。

如果应用程序过分依赖Swap交换空间,则其性能将下降,因为它无法以与RAM中相同的速度访问数据。

因此,完成相同任务可能需要几分钟才能完成任务,而不需要花费1秒钟完成任务。这将使应用程序几乎无用。这被称为计算术语中的颠簸。

Swap交换空间只是用来应急的,所以它的分配要适量。

以下是需要交换空间Swap的几个原因

如果你的RAM有32GB或者64GB,你的系统可能永远都不会使用到这么多的交换分区。

我猜测,如果你的系统有32GB的RAM,它或许至少有100GB的硬盘。

分配几GB的交换空间应该也无关痛痒,如果错误的程序开始滥用RAM,它将提供额外的“稳定性”。

现在回到这个最大的问题上,应该给Linux分配多少Swap空间才够。

答案是没有一个确切的答案,不过倒是有一些建议,不同的人根据自己的实际情况分配交换空间的大小。

如果根据Red Hat的建议,他们建议是分配RAM 20%的换空间,也就是RAM是8GB,分配1.6GB交换空间。

CentOS建议

Ubuntu考虑到系统需要休眠,

Ubuntu建议的Swap分配表

事实上没有一个真正确定的Swap交换空间分配大小,根据实际情况来吧,如果你不在乎多点交换空间,可以使用两倍于RAM的这种方案。

你更倾向于使用哪种方案呢?

交换空间和虚拟内存的区别在于使用的系统不一样,产生的技术手段不一样,以下是详解,希望对你有所帮助! 交换空间: Linux 中的交换空间(Swap space)在物理内存(RAM)被充满时被使用。如果系统需要更多的内存资源,而物理内存已经充满,内存中不活跃的页就会被移到交换空间去。虽然交换空间可以为带有少量内存的机器提供帮助,但是这种方法不应该被当做是对内存的取代。交换空间位于硬盘驱动器上,它比进入物理内存要慢。 交换空间可以是一个专用的交换分区(推荐的方法),交换文件,或两者的组合。 交换空间的总大小应该相当于你的计算机内存的两倍和 32 MB这两个值中较大的一个,但是它不能超过 2048 MB(2 GB)。 虚拟内存: 虚拟内存是文件数据交叉链接的活动文件。是WINDOWS目录下的一个"WIN386.SWP"文件,这个文件会不断地扩大和自动缩小。 就速度方面而言,CPU的L1和L2缓存速度最快,内存次之,硬盘再次之。但是虚拟内存使用的是硬盘的空间,为什么我们要使用速度最慢的硬盘来做为虚拟内存呢?因为电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致我们只有可怜的256M/512M内存消耗殆尽。而硬盘空间动辄几十G上百G,为了解决这个问题,Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用。 兄弟,知识要灵活运用,你既然知道是pagefile.sys,那就最好了!


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7900557.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存