2019独角兽企业重金招聘Python工程师标准>>>

如何知道系统的内存使用情况:

在Linux下查看内存我们一般用free命令:

[root@scs-2 tmp]# free
total       used       free     shared    buffers     cached
Mem:       3266180    3250004      16176          0     110652    2668236
-/+ buffers/cache:     471116    2795064
Swap:      2048276      80160    1968116

下面是对Linux查看内存命令中这些数值的解释:
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第四行就不多解释了。
区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是16176KB,已用内存是3250004KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。
如上例:
2795064=16176+110652+2668236

接下来解释什么时候内存会被交换,以及按什么方交换。 当可用内存少于额定值的时候,就会开会进行交换。
Linux查看内存命令时如何看额定值:
cat /proc/meminfo
[root@scs-2 tmp]# cat /proc/meminfo
MemTotal:      3266180 kB
MemFree:         17456 kB
Buffers:        111328 kB
Cached:        2664024 kB
SwapCached:          0 kB
Active:         467236 kB
Inactive:      2644928 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:      3266180 kB
LowFree:         17456 kB
SwapTotal:     2048276 kB
SwapFree:      1968116 kB
Dirty:  8 kB
Writeback:           0 kB
Mapped:         345360 kB
Slab:           112344 kB
Committed_AS:   535292 kB
PageTables:       2340 kB
VmallocTotal: 536870911 kB
VmallocUsed:    272696 kB
VmallocChunk: 536598175 kB
HugePages_Total:     0
HugePages_Free:      0
Hugepagesize:     2048 kB

用free -m查看的结果:

[root@scs-2 tmp]# free -m
total       used       free     shared    buffers     cached
Mem:          3189       3173         16          0        107       2605
-/+ buffers/cache:        460       2729
Swap:         2000         78       1921

查看/proc/kcore文件的大小(内存镜像):
[root@scs-2 tmp]# ll -h /proc/kcore 
-r-------- 1 root root 4.1G Jun 12 12:04 /proc/kcore

备注:
占用内存的测量
测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。
/proc/meminfo 机器的内存使用信息
/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址。
/proc/pid/statm 进程所占用的内存
[root@localhost ~]# cat /proc/self/statm
654 57 44 0 0 334 0

Linux查看内存命令的输出解释
CPU 以及CPU0。。。的每行的每个参数意思(以第一行为例)为:

参数 解释 /proc//status
Size (pages) 任务虚拟地址空间的大小 VmSize/4
Resident(pages) 应用程序正在使用的物理内存的大小 VmRSS/4
Shared(pages) 共享页数 \
Trs(pages) 程序所拥有的可执行虚拟内存的大小 VmExe/4
Lrs(pages) 被映像到任务的虚拟内存空间的库的大小 VmLib/4
Drs(pages) 程序数据段和用户态的栈的大小 (VmData+ VmStk )4

dt(pages) 04

查看机器可用内存

/proc/28248/>free
total used free shared buffers cached
Mem: 1023788 926400 97388 0 134668 503688
-/+ buffers/cache: 288044 735744
Swap: 1959920 89608 1870312

我们通过free命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。

所以 空闲内存=free+buffers+cached=total-used

当free太小时,我们在不增加物理内存的条件下,怎么处理呢?

Linux与Windows不同,会存在缓存内存,通常叫做Cache Memory。有些时候你会发现没有什么程序在运行,但是使用top或free命令看到可用内存会很少。

什么是Cache Memory(缓存内存):

当你读写文件的时候,Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存会很少。

手动释放Cache Memory(缓存内存):

一般情况下不需要特意去释放已经使用的cache。这些cache起来的内容可以增加文件以及的读写速度。

其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有内存可用。如果你希望手动去释放Cache Memory(缓存内存)的话也是有办法的。

1.To free pagecache:
[root@VM_0_4_centos /]# echo 1 > /proc/sys/vm/drop_caches
2.To free dentries and inodes:
[root@VM_0_4_centos /]# echo 2 > /proc/sys/vm/drop_caches
3.To free pagecache, dentries and inodes:
[root@VM_0_4_centos /]# echo 3 > /proc/sys/vm/drop_caches

什么是Swap?

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

这个是SWAP 交换分区的作用。 实际上,我们更关注的应该是SWAP分区的大小问题。 设置多大才是最优的。

一般来说可以按照如下规则设置swap大小:

4G以内的物理内存,SWAP 设置为内存的2倍。

4-8G的物理内存,SWAP 等于内存大小。

8-64G 的物理内存,SWAP 设置为8G。

64-256G物理内存,SWAP 设置为16G。

实际上,系统中交换分区的大小并不取决于物理内存的量,而是取决于系统中内存的负荷,所以在安装系统时要根据具体的业务来设置SWAP的值。

系统在什么情况下才会使用SWAP?

实际上,并不是等所有的物理内存都消耗完毕之后,才去使用swap的空间,什么时候使用是由swappiness 参数值控制。

[root@rhce ~]# cat /proc/sys/vm/swappiness  60

该值默认值是60.

swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,

swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

现在服务器的内存动不动就是上百G,所以我们可以把这个参数值设置的低一些,让操作系统尽可能的使用物理内存,降低系统对swap的使用,从而提高系统的性能。

如何修改swappiness参数?

--临时性修改:

[root@rhce ~]# sysctl vm.swappiness=10

vm.swappiness = 10

[root@rhce ~]# cat /proc/sys/vm/swappiness

10

这里我们的修改已经生效,但是如果我们重启了系统,又会变成60.

--永久修改:

在/etc/sysctl.conf 文件里添加如下参数:

vm.swappiness=10

或者:

[root@rhce ~]# echo 'vm.swappiness=10' >>/etc/sysctl.conf

保存,重启,就生效了。

创建交换分区文件

1、创建用于交换分区的文件

dd if=/dev/zero of=/mnt/swap bs=block_size count=number_of_block

注:block_size、number_of_block 大小可以自定义,比如bs=1M count=1024 代表设置1G大小swap分区

2、设置交换分区文件

mkswap /mnt/swap

3、立即启用交换分区文件

swapon /mnt/swap

如果在/etc/rc.local中有swapoff -a 需要修改为swapon -a

4、设置开机时自启用swap分区

需要修改文件/etc/fstab中的swap行。

添加 /mnt/swap swap swap defaults 0 0

注:/mnt/swap 路径可以修改,可以根据创建的swap文件具体路径来配置。

设置后可以执行free -m命令查看效果

资料来源于多个网站,仅作为个人备份及使用!

转载于:https://my.oschina.net/githubhty/blog/1586442

查看linux服务器内存使用情况,不够时创建Swap、手动 cached相关推荐

  1. 【收藏】如何查看linux服务器内存使用情况

    如何查看linux服务器内存使用情况 https://www.cnblogs.com/hanmk/p/10556989.html [root@m-0 ~]# ps -eo pmem,pcpu,rss, ...

  2. 会用top与free命令查看linux服务器内存使用情况

    一.top命令介绍 Linux top命令用于实时显示 process 的动态:查看内存和cpu的使用情况 1.常用命令参数介绍 top -d 10 10s刷新一次 top -i  不显示任何闲置 ( ...

  3. 如何查看linux服务器内存使用情况

    1. free命令 free 命令显示系统使用和空闲的内存情况,包括物理内存.交互区内存(swap)和内核缓冲区内存. 直接输入free命令,显示如下: free命令默认是显示单位kb,可以采用fre ...

  4. 查看Linux服务器内存使用情况

    1.free 命令 free 命令显示系统使用和空闲的内存情况,包括物理内存.交互区内存(swap)和内核缓冲区内存. 直接输入free命令,显示如下 free命令默认是显示单位kb,可以采用free ...

  5. 命令查看Linux服务器内存、CPU、显卡、硬盘使用情况

    命令查看Linux服务器内存.CPU.显卡.硬盘使用情况 查看内存使用情况 使用命令:free -m 大致结果类似下图: 内存占用情况 参数解释: Mem行(单位均为M): total:内存总数 us ...

  6. [转]如何正确查看Linux机器内存使用情况

    原文链接 如何正确查看Linux机器内存使用情况 背景 只要工作上涉及到Linux机器,基本上都会有这样一个需求,查看内存使用情况,但是怎么看才正确呢?之前使用的是top命令,一直存在一个误区. 为什 ...

  7. linux服务器显卡的占用量,命令查看Linux服务器内存、CPU、显卡使用情况

    查看内存使用情况 使用命令:free -m 大致结果类似下图: 参数解释: Mem行(单位均为M): * total:内存总数 * used:已使用内存数 * free:空闲内存数 * shared: ...

  8. 查看服务器内存和硬盘命令,命令查看Linux服务器内存、CPU、显卡、硬盘使用情况...

    查看内存使用情况 使用命令:free -m 大致结果类似下图: 内存占用情况 参数解释: Mem行(单位均为M): total:内存总数 used:已使用内存数 free:空闲内存数 shared:当 ...

  9. 查看LINUX进程内存占用情况 top pmap ps

    可以直接使用top命令后,查看%MEM的内容.可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令: (1)top top命令是Linux下常用的性能分析 ...

最新文章

  1. Linux 进程及进程之间的通信机制——管道
  2. AngularJs 常用指令标签
  3. layaAir引擎制作游戏的图集动画、时间轴动画、和骨骼动画总结二
  4. Flink快速入门wordcount示例(scala版)
  5. linux io 分析,Linux 下的I/O性能分析 iotop
  6. SharePoint PowerShell命令系列
  7. 订单拣选作业模式总结
  8. 物理学家张首晟:如果世界末日来临,我会带这几句话上诺亚方舟|研习社演讲实录...
  9. 利用k-means算法实现图像自动色彩量化
  10. 安装VMWare Workstation 12的步骤
  11. 常用的公共数据集(二)
  12. 恢复Visual SourceSafe已删除的文件
  13. MapReduce的Reducer类
  14. java上传文件怎么设置成777权限,777权限的改法是怎样的 将文件权限修改为777图文教程...
  15. Weights Biases
  16. 解决chrome浏览器手机调试模式下鼠标指针消失(量化范围设置无效情况)
  17. 解决MPx 无法在windows下运行
  18. mac os 系统升级到 Catalina 版本后出现应用打不开 ,闪退,意外退出问题
  19. wordpress教程之函数讲解
  20. 多机局域网办公神器 rustdesk 使用强推!!!

热门文章

  1. filezilla的root账户无法连接服务器解决办法
  2. VueJs入门(一)
  3. Dockerfile最佳实践(二)
  4. bash:yum:command not found 解决办法
  5. 【沫沫金】安卓手机版 - 日期控件
  6. C使用递归实现前N个元素的和
  7. 初学体验是兴趣养成的重要土壤
  8. Nagios之linux监控windows主机
  9. 深度解析:微软云计算平台的通信技术与应用开发
  10. Android中的EditText默认时不弹出软键盘的方法