linux内存不足对性能影响多大

linux内存不足对性能影响多大,第1张

在Windows中,资源管理器查看内存使用情况,如果使用率达到80%以上,那么运行大型程序就会觉得系统不顺畅,因为在内存短缺的情况下使用交换分区,频繁的从磁盘交换页面会大大影响系统性能。而在使用Linux系统时,我们使用free命令查看Linux系统内存使用情况时,会发现内存使用率一直处于较高水平,即使此时系统没有运行很多软件。这是Windows和Linux在内存管理方面的区别。这样看来,Linux系统占用了我们的内存(Linux占用了我的RAM),但这也是其内存管理的特点。

free命令介绍

为了使用自由命令查看我们的实验室文件服务器内存的结果,-M选项表示MB为单位:

第二行输出表示系统内存的使用。

注:前四个术语更好地理解。缓冲区和缓存无法找到正确的单词进行翻译。它们之间的区别在于:

A buffer is something that has yet to be “written” to diskA cache is something that has been “read” from the disk and stored for later use

即buffer用于存放要输出到磁盘的数据,而cache是从磁盘读出存放到内存中待今后使用的数据。它们的引入均是为了提供IO的性能。

以上输出的结果可能是第三行,为什么要向用户显示呢?内存使用减去系统缓冲/缓存的内存表示是什么?系统空闲内存添加到缓冲区/缓存的内存中的是什么?

内存的分类

我们将内存分为三类,对于用户和操作系统的使用有不同的术语:

上表中something代表的正是free命令中”buffers/cached”的内存。由于这个内存实际上是从操作系统的角度使用的,所以如果用户想要使用它,那么它可以被用户的程序快速地回收和使用,因此应该从用户的角度将内存划为空闲。

再次返回free命令输出的结果,第三行输出的结果应该是可以理解的,并且该行上的数字从用户的角度表示系统内存的使用。因此,如果使用top或free命令查看系统中还剩下多少内存,那么实际上应该将空闲内存添加到buffer/cached,即实际的系统空闲内存。

buffers/cached好处

Linux内存管理已经做了很多精心的设计,除了dentry缓存之外(对于VFS,为了加快文件路径名到inode的转换),还采用了两种主要的缓存方法:缓冲缓存和页面缓存,目的是提高磁盘IO的性能。从低速块设备读取数据暂时存储在存储器中。即使此时不再需要数据,也可以在下一次应用程序访问数据时直接从存储器读取数据,从而绕过低速块设备,从而提高系统的整体性能。

Linux将充分利用免费内存。在我看来,如果内存是免费的,最好缓存更多的数据。下次程序再次访问数据时,速度会更快。如果程序希望使用内存,并且系统中的内存不足时,那么它不会使用交换分区,而是快速恢复部分缓存,把它们留给用户程序。

因此,正如您所看到的,buffers/cached实际上还是有点用处,而真正的缺点可能是用户认为Linux消耗内存!然而,Linux不会耗尽您的内存,只要您没有使用交换分区,您就应该庆幸您的内存耗尽了,因为Linux会缓存大量数据,也许下次您会从中受益!

实验证明

通过实验验证了以下结论。

我们读了一份大文件,比较两种阅读的实践:

1首先,生成一个大的1G文件:

2空缓存:

3读取此文件并测试所消耗的时间:

4再次读取文件并测试所消耗的时间:

从上面可以看到,第一次读取这个1G文件需要大约18秒,第二次读取只需03秒,增加了60倍!那么你觉得Linux系统还是吃内存吗?

linux开机内存占多少?

你是指支持的内存上限么?际上最大支持多大的内容跟操作系统的种类无关,而是跟操作系统是几位的还有CPU是几位的有关。

DOS是16位的,所以DOS支持的最大内存是64MB(2的16次方字节等于64MB)。32位的Linux和32位的Windows(XP、Vista)支持的最大内存是4GB,2的32次方字节=4GB。64位的Linux和Windows支持的最大内存=16EB。

大家的Ubuntu占多少内存?

推荐至少1G。

Ubuntu可以在PC,64-Bit和Mac架构上使用。CDs需要至少256MB内存。安装需要至少1GB的磁盘空间

Ubuntu(乌班图)是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu基于Debian发行版和GNOME桌面环境,而从1104版起,Ubuntu发行版放弃了Gnome桌面环境,改为Unity,与Debian的不同在于它每6个月会发布一个新版本。Ubuntu的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。Ubuntu具有庞大的社区力量,用户可以方便地从社区获得帮助。2013年1月3日,Ubuntu正式发布面向智能手机的移动操作系统。[

linux下每个socket会占用多少内存?

netipv4tcp_wmem=4096163844194304netipv4tcp_rmem=4096873804194304就是说,每个tcp连接的socket,至少需要8k字节,那么对于8G内存的机器,如果不考虑swap等其他因素,最多支持并发100万个tcpsocket

linux服务器磁盘满了怎么办?

1、遇到磁盘空间不足的报错时候,首先使用df-h查看磁盘空间使用情况,找到空间达到100%的目录磁盘。

2、进入该目录,查找磁盘空间中的大文件,使用命令du-sh查找占用空间大的目录,通过逐层定位,最后找到具体的文件。

3、如果是久远的log文件,一般是用不到的,可根据自己的情况删除,通过下述命令删除该文件夹下指定天数之前的文件:

find-mtime+5-typef-name""-execrm-f{};

完成上述操作后,可释放掉部分存储空间。

4、除了磁盘空间除了文件占用之外,还有一种情况,当磁盘空间满了之后,我们无法查找到大文件,此时可能是文件可能已经被删掉,但有进程依然在使用它。在进程运行期间,Linux不会释放该文件的存储空间。

5、此时适用命令lsof|lsof|grepdeleted查找到占用的进程,直接停止进程或者kill掉就可以释放空间(注:如果不是生产环境,重启操作系统,空间也会释放)

linux服务器通过multipath多路径连接到共享存储,那么当文件系统空间不足的时候,有几种方式可以扩展文件系统的大小:

1、pv不变,原lun存储扩大容量,扩大lv,扩大文件系统

2、新增pv,加入到vg中,扩大lv,扩大文件系统

下文是针对场景1的情况下如何操作(但是个人建议采取新建pv的方式2进行):

Environment

If you have this specific scenario, you can use the following steps:

Note: if these lv's are part of a clustered vg, steps 1 and 2 need to be performed on all nodes 注意:集群模式下步骤1和步骤2两个节点都需要执行。

1) Update block devices

Note: This step needs to be run against any sd devices mapping to that lun When using multipath, there will be more than one 通过multipath -ll命令查看每个聚合卷对应的路径。

2) Update multipath device

例子:

3) Resize the physical volume, which will also resize the volume group

4) Resize your logical volume (the below command takes all available space in the vg)

5) Resize your filesystem

6) Verify vg, lv and filesystem extension has worked appropriately

模拟存储端扩容testlv增加

查看客户端多路径情况

客户端更新存储

更新聚合设备

更新pv空间

更新lv空间

更新文件系统空间

解决方法(以/home空间满为例):

1定期对重要文件系统扫描,并作对比,分析那些文件经常读写

#IS-IR/home>;filestxt

#diff filesoldtxt filestxt

通过分析预测空间的增长情况,同时可以考虑对不经常读写文件进行压缩,以减少占用空间。

2查看空间文件系统的inodes消耗

#df-i/home

如果还有大量的inpde可用,说明大文件占用空间,否贼可能大量小文件占用空间。

3找出占用空间较大的目录

查看/home占用的空间

#du-hs/home

查看/home下占用空间超过1000m

#du/awk'$1>;2000'

4找出占用空间较大的文件

#find/home-size +2000K

5找出最近修改或创建的文件

先TOUCH一个你想要的时间的文件如下

#TOUCH-t 08190800 test

#find/home-newer test-print

6删除日志

#rm-rf/var/log/

7对分区做连接

在有空间的分区,对没有空进分区做连接

#in-s/home/use/home

8找出耗费大量的空间的进程

根据不同的应用,找出对应的进程,分析原因。

9检查并修复文件系统

#fsck-y/home

10重启机器

有了以上的十招,应该可以解决大部分问题,但是关键还是安装时要规划好分区。另外发现磁盘蛮时,不能急,小心操作,认真分析原因,然后小心应对。需要注意,以上十招不需要顺序执行,有的可能一招封喉,有的可能需要数招并用,删除操作一定要小心。如果还不行,只有采取增加硬盘,重新安装系统等“硬”办法了

还可以:

cd/

du-h--max-depth=q/grep M/sort-n

找到最大的那个目录后进入该目录

再运行du-h-max-depth=1/grep M /sort-n

找出来以后看是否有用的文件

没用就删掉

下载的东西过多

可以这么处理:第一步检查每个分区的磁盘占用率用df-hXXX第二步进入每个你要清理的分区,大致查看下可能是占用比较多空间的目录用cd和ls-lXXX第三步,如果目测无法发现,那只有通过命令查找用find-sizeXXb第四步,删除认为不需要的数据用rm-rfXXX

1、使用分区:

在安装OS时划分出专门的交换分区,空间大小要事先规划好,启动系统时自动进行mount。

这种方法只能在安装OS时设定,一旦设定好不容易改变,除非重装系统。

2、使用swapfile:(或者是整个空闲分区)

新建临时swapfile或者是空闲分区,在需要时设定为交换空间,最多可以增加8个swapfile。

交换空间的大小,与CPU密切相关,在i386系中,最多可以使用2GB的空间。

在系统启动后根据需要在2G的总容量下进行增减。

这种方法比较灵活,也比较方便,缺点是启动系统后需要手工设置。

以下是运用swapfile增加交换空间的步骤:

涉及到的命令:

free ---查看内存状态命令,可以显示memory,swap,buffer cache等的大小及使用状况;

dd ---读取,转换并输出数据命令;

mkswap ---设置交换区

swapon ---启用交换区,相当于mount

swapoff ---关闭交换区,相当于umount

步骤:

1、创建swapfile:

root权限下,创建swapfile,假设当前目录为"/",执行如下命令:

# dd if=/dev/zero of=swapfile bs=1024 count=500000

则在根目录下创建了一个swapfile,名称为“swapfile”,大小为500M,也可以把文件输出到自己想要的任何目录中,

个人觉得还是直接放在根目录下比较好,一目了然,不容易误破坏,放在其他目录下则不然了;

命令中选项解释:

---of:输出的交换文件的路径及名称;

---bs:块大小,单位byte,一般为1k即1024个byte;

---count:总块数即空间总大小,单位为块即k;

---if:读取的源空闲空间,为什么是zero,不清楚,先固定这么写吧;

2、将swapfile设置为swap空间

# mkswap swapfile

3、启用交换空间,这个操作有点类似于mount操作(个人理解):

# swapon swapfile

至此增加交换空间的操作结束了,可以使用free命令查看swap空间大小是否发生变化;

4、如果不再使用空间可以选择关闭交换空间,这个操作有点类似于umount操作(个人理解)::

# swapoff swapfile

使用这种方法在每次系统启动时都需要手动设置、开启swapfile,比较麻烦,解决方法:

在 /etc/rcd/rclocal 文件的末行下追加加以下内容:(编辑这个文件当然是用vi了~)

/sbin/swapon /swapfile

保存后退出,这样在系统启动后,swap空间就会自动加载了;

总结:在安装OS时一定要规划后swap大小,通常为内存的2倍,但是要考虑到以后增加内存的可能,所以可以考虑设的稍大一些,想在虚拟机里面安装oracle10g,发现默认的swap交换空间不满足最低要求,因为我分配的物理内存是1G,那么就按照要求需要2G的swap交换空间,默认只有1G的交换空间。

添加swap交换空间的步骤如下:

第一步:确保系统中有足够的空间来用做swap交换空间,我使用的是KVM,准备在一个独立的文件系统中添加一个swap交换文件,在/opt/image中添加2G的swap交换文件

第二步:添加交换文件并设置其大小为2G,使用如下命令

[root@sense image]# dd if=/dev/zero of=/opt/image/swap bs=1024 count=2048000

过段时间就返回如下结果:

2048000+0 records in

2048000+0 records out

2097152000 bytes (21 GB) copied, 272867 seconds, 77 MB/s

第三步:创建(设置)交换空间,使用命令mkswap

[root@sense image]# mkswap /opt/image/swap

Setting up swapspace version 1, size = 2097147 kB

第四步:检查现有的交换空间大小,使用命令free

[root@sense image]# free -m

total used free shared buffers cached

Mem: 1011 989 21 0 1 875

-/+ buffers/cache: 112 898

Swap: 1027 0 1027

或者检查meminfo文件

grep SwapTotal /proc/meminfo

第五步:启动新增加的2G的交换空间,使用命令swapon

[root@sense image]# swapon /opt/image/swap

第六步:确认新增加的2G交换空间已经生效,使用命令free

[[root@sense image]# free -m

total used free shared buffers cached

Mem: 1011 995 15 0 4 877

-/+ buffers/cache: 113 897

Swap: 3027 0 3027

或者检查meminfo文件

grep SwapTotal /proc/meminfo

第七步:修改/etc/fstab文件,使得新加的2G交换空间在系统重新启动后自动生效

在文件最后加入:

/opt/image/swap swap swap defaults 0 0

我的操作

[root@weblogic Server]# free

total used free shared buffers cached

Mem: 1785856 1753452 32404 0 38592 1036312

-/+ buffers/cache: 678548 1107308

Swap: 2064376 116 2064260

创建交换空间文件,1000M

[root@weblogic /]# dd if=/dev/zero of=/swapfile bs=1024 count=1000000

1000000+0 records in

1000000+0 records out

1024000000 bytes (10 GB) copied, 285423 seconds, 359 MB/s

[root@weblogic /]# mkswap swapfile

Setting up swapspace version 1, size = 1023995 kB

[root@weblogic /]# swapon swapfile 打开

[root@weblogic /]#swapoff swapfile 关闭

删除

swapoff swapfile

rm -rf swapfile

用过linux系统的朋友都知道,服务器的空间如果不足,那么我们就无法修改文件。怎样才能知道硬盘的剩余空间呢?别着急,小编今天就针对liunx怎么看硬盘剩余空间的问题,为大家带来linux查看磁盘使用情况的图文步骤,希望对你有帮助。

linux查看磁盘使用情况的图文步骤:

1、首先要登录linux服务;

2、有几种方法可以查看,我们先用第一种方法,命令“df”;

3、命令“df-lh”使用这个命令会更清楚磁盘使用情况;

4、命令“df-a”是全部的文件系统的使用情况;

5、命令“df-i”显示inode信息;

6、命令“df-k”已字节数显示区块占用情况。

好了,以上就是关于liunx怎么看硬盘剩余空间的全部内容了,希望本篇linux查看磁盘使用情况的图文步骤,能够对你有帮助。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » linux内存不足对性能影响多大

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情