Linux命令详解-free

   2016-11-07 0
核心提示:显示全文:相信运维工程师,在linux系统环境中最容易遇到的问题就是各种IO瓶颈,内存使用率高,cpu使用率高等问题,我们如何来定位错误?linux提供了很多命令来协助我们快速定位到错误,这里先介绍下free命令:1,free 命令解释:[root@www ~]# free 1234 5 6

显示全文:

相信运维工程师,在linux系统环境中最容易遇到的问题就是各种IO瓶颈,内存使用率高,cpu使用率高等问题,我们如何来定位错误?linux提供了很多命令来协助我们快速定位到错误,这里先介绍下free命令

1,free 命令解释:

[root@www ~]# free 
                  1          2          3          4           5         6 
1                 total       used       free      shared        buffers   cached
2    Mem:       1906552     430788    1475764       0          60164     226684
3    -/+ buffers/cache:     143940    1762612
4    Swap:      2097144       0       2097144

参数:

usage: free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V]
  -b,-k,-m,-g show output in Bytes, KB, MB, or GB  用来指定输出的单位。
  -l show detailed low and high memory statistics   可以看到详细的最大最小值
  -o use old format (no -/+buffers/cache line)       以老的格式显示,没有-/+buffers/cache line那一行
  -t display total for RAM + swap        :会显示内存的总和,包括物理内存和swap分区大小。
  -s update every [delay] seconds     : 输出结果每秒刷新一次
  -c update [count] times     :刷新次数
  -V display version information and exit   :显示版本信息。

接着介绍下free命令输出的各个参数:

MEM:
    total:总计物理内存大小
    used:已经使用的物理内存大小
    free: 空闲的物理内存大小
    shared:多个进程共享的内存空间
    buffer:缓冲
    cache:缓存

这里详细介绍下buffer和cache,因为面试过程中,很容易问到这两者之间的区别。

buffer缓冲区: 将数据缓冲下来,解决速度慢和快的交接;速度快的需要通过缓冲区将数据一点一点传给速度慢的区域。例如:从内存中将数据往硬盘中写入,并不是直接写入,而是缓冲到一定大小之后刷入硬盘中。

cached缓存:实现数据的重复使用,速度慢的需要通过缓存将经常要用到的数据缓存起来,缓存下来的数据可以提供高速的传输给速度快的设备。例如:将硬盘中的数据读取出来放在内存的缓存区中,这样以后再次访问同一个资源,速度回快很多。

这两个参数主要是为了提高IO的性能,性能调优,会涉及这两个参数的修改。

例如在之前内核那篇blog中提到我们可以通过修改内核参数清空buffer。

主要是和/proc/sys/vm/drop_caches那个内核参数有关

在Documentation/sysctl/vm.txt中有如下描述:

drop_caches
Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.
To free pagecache:                              清空buffer
 echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:      
 echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:  
 echo 3 > /proc/sys/vm/drop_caches    清空cache
As this is a non-destructive operation and dirty objects are not freeable, the user should run `sync' first.
在清空buffer和cache之前我们最好先进行sync将内存中的数据(特别是修改过的数据同步到磁盘中,防止改动没有改动就清空掉)

free命令输出第三行:

-/+ buffers/cache: 代表的是两个参数:- buffers/cache和+ buffers/cache

注意,buffer和cache是用来提高IO性能的,当应用程序需要新的内存空间的时候也会把buffer,cache回收。

- buffers/cache:表示一个应用程序认为系统被用掉多少内存。这个值是通过MEM已经使用的总值减去buffer和cache所占用的值。

例如:143940=430788(used) - 60164(buffer) - 226684(cached)

+ buffers/cache:表示一个应用程序认为系统还有多少内存。这个值时MEM的空闲free加上buffer和cache。

例如: 1762612 = 1475764(free) + 60164(buffer) + 226684(cached)

free命令输出第四行:是关于swap分区的。

total:总大小
used:已经使用的
free:空闲的

正常情况下,swap分区是不会被使用的。只有物理内存被使用完之后才会使用swap分区。

简单介绍下swap分区:

内存不够用的时候,从硬盘上找一部分空间,将内存中最近最少使用的数据挪到硬盘的空间里。这段在硬盘中的空间就是swap分区。

交换空间(swap):允许内存过载(超出本身内存空间)使用;不过会影响系统性能,一般用于应急。

page in , page out

swap out swap in 上下对应

交换分区最好放在最外面的磁道上,这样性能还有所提升;

添加交换分区:

步骤:

*    1),新建分区  fdisk。
*    2),使用L ;设置文件系统分类;
    t调整分区类型;82(千万不能忘了;)
    w保存退出
*    3,)partprobe  内存分区读取
*    4,)创建交换分区:
    mkswap  /dev/sda8:格式化为交换分区;
    或      -L   LABEL指定卷标;
*    5)交换分区的使用:,swapon   /dev/sda8   :启用交换分区上的交换空间
    swapoff    /dev/sda8  关闭;
    swapon    -a   启用所有的定义在/etc/fstab文件中交换设备;
    mount挂载的文件系统,在我们重启开机的时候就不再存在了。有些能自动挂载,有些不能。这就是fstab文件的功能;

特殊场景:

假如磁盘上已经没有空间创建新的分区了,但是某个分区里已经挂载的位置还有很多空间可以使用,我们急着在当前系统上创建swap分区;在当前系统上怎么应急:

**回环设备**:loopback:使用软件来模拟实现硬件;

创建一个镜像文件,假如1G空间,可以将它当做硬盘来用,模拟存储空间:
*    1),dd  if=/dev/zero  of=/var/swapfile  bs=1M  count=1024 创建一个大小为1024M
的镜像文件;
*    2)mkswap   /var/swapfile  创建一个swap类型文件;
*    3),swapon  /var/swapfile   启用
    free   -m  查看
 
标签: Linux命令
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 每天一条linux命令——halt
    halt命令用来关闭正在运行的Linux操作系统。halt命令会先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。 语法:halt(选项)选项:-d:不要在wtmp中记录;-f:不论目前的runlevel为何,不调用shutdown即强制关闭系统;-i:
    02-10
  • 几个linux命令查看堆栈内存问题 几个linux命令
      公司编写代码,发现整个在程序里面调用system时候总是失败,原因是can't allocate memory ,根本原因不是内存不足,而是堆栈内存不够。使用ulimit -s 2048后有所好转但是发现一旦系统进程开启多了后仍然会挂。后来使用objdump -x 后发现了原因有个动态库
    02-09
  • Linux命令总结--rm命令 linux的rmp命令
    (来源于http://www.cnblogs.com/xqzt/p/5398919.html)1、命令简介rm(Remove file 删除目录或文件)删除文件,对于链接文件,只是删除整个链接文件,而原有文件保持不变。新手在删除文件之前一定要知道这些:很重要1.可以用mv代替rm的绝对不要用rm,不要着急
    02-09
  • Linux命令行批量创建目录详解 linux创建目录
    以前一直用-p创建目录链,觉得很方便了。在空目录/opt/app/myapp里创建src,再创建main,再创建javamkdir -p /opt/app/myapp/src/main/java没想到还可以这样玩##¥%……*(root@vm1:~/tmp# mkdir -p src/{{main,test}/{java,resources},main/webapp}root@vm1:
    02-09
  • Linux命令之乐--script和scriptplay
    script和scriptplay可以把终端会话记录到一个文件中,可以用来制作命令行教学视屏。 开始录制会话[root@new test]# script -t 2timing.log -a output.sessionScript started, file is output.session[root@new test]# echo hellohello[root@new test]# echo
    02-09
  • java 开发常用的Linux命令
    1.查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件。find . -name "*.xml" 递归查找所有的xml文件find . -name "*.xml" |xargs grep "hello world" 递归查找所有文件内容中包含hello world的xml文件grep -H 'spring' *.xml 查找所
    02-09
  • 常用Linux命令整理 Linux常用命令总结
    常用Linux命令整理常见系统命令export 查看或修改环境变量# 例:临时修改命令提示符为字符串$export PS1=$# 例:临时修改命令提示符显示系统时间 时间使用\t 表示export PS1="[\u@\h \t \W]\$"man 查看linux系统的手册# 例:查看ls命令如何使用man ls # 回车
    02-09 Linux
  • linux命令行—《命令行快速入门》 linux常用命令csdn
    linux命令行—《命令行快速入门》 linux常用命
    pwd print working directory 打印工作目录hostname my computer's network name 电脑在网络中的名称mkdir make directory 创建路径cd change directory 改变路径ls list directory 列出路径下的内容rmdir remove directory 删除路径pushd push directory 推
    02-09
  • Linux命令(五) 五个常用的linux命令
    Linux命令(五) 五个常用的linux命令
    jenkins触发钉钉报警机制1、安装钉钉插件钉钉报警需要安装Ding Talk插件,支持钉钉报警2、打开钉钉创建钉钉机器人2.1选择机器人类型——自定义2.2添加机器人2.3填写机器人信息填写机器人姓名—设置安全设置为加密类型,并复制出来加密值2.4创建完成保持webhoo
    02-09
  • 03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-其他基础命令
    03_Linux基础-文件类型-主辅提示符-第1提示符-L
    03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-{1..100}-du-cd-cp-file-mv-echo-id-shell-ln-env-set-which-rpm-/usr-/与/root-hostname-vim-cat-pwd-alias-unalias-ls-ASCII-wc-chmod博客
    02-09
点击排行