linux与内存相关的命令

使用这个命令之前需要先理解什么是虚拟内存?有关虚拟内存这里推荐几片博客:

https://blog.csdn.net/qq_38410730/article/details/81036768

https://www.cnblogs.com/aaronax/p/5645246.html

上面两片博客第一篇博客解释的很详细,但我绝对第二篇博客可能更容易理解吧,因为没有太涉及底层的东西。

vmstat命令:

[root@test2 ~]# vmstat -h
usage: vmstat [-V] [-n] [delay [count]]
              -V prints version.
              -n causes the headers not to be reprinted regularly.      #不定期打印标题【暂时不太理解】
              -a print inactive/active page stats.                      #显示活跃/不活跃的页信息
              -d prints disk statistics                                 #显示磁盘的统计信息
              -D prints disk table                                      #显示磁盘表,按输出显示就是统计 “-d”时的信息的汇总
              -p prints disk partition statistics                       #显示指定分区的新
              -s prints vm table                                        #显示虚拟内存表
              -m prints slabinfo                                        #显示slabinfo信息,https://www.cnblogs.com/tolimit/p/4566189.html-t add timestamp to output                                #在输出的时候添加时间
              -S unit size                                              #指定单位
              delay is the delay between updates in seconds.
              unit size k:1000 K:1024 m:1000000 M:1048576 (default is K)
              count is the number of updates.
[root@test2 ~]# 

命令输出介绍:

[root@test2 ~]# vmstat 1 2                    #后面的数字表示1秒打印一次,输出两次
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 2479976 400388 4635404    0    0     7    12    0    0  0  0 100  0  0
 0  0      0 2479968 400388 4635404    0    0     0     0   96  115  0  0 100  0  0
[root@test2 ~]# 

#vmstat命令输出分为6大部分,分别解释如下:proc: 与进程相关
  • r: 表示正在运行的进程数量
  • b: 正在阻塞等待进程数量。

memory: 与内存相关

  • swpd:表示使用虚拟内存的大小
  • free:可用内存的大小。【物理内存】
  • buff:用作缓冲的内存大小。
  • cache:用作缓存的内存大小

swap: 与虚拟内存相关

  • si: 每秒从交换区到内存中的大小
  • so: 每秒从内存到交换区的大小

io: 与io操作相关的

  • bi: 每秒读取的块数。
  • bo: 每秒写入的块数。

system:

  • in: 每秒中断数量,包括时钟中断。
  • cs:表示每秒产生的 上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的

数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一

个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函

数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。

cpu:

  • us :表示用户进程消耗的CPU时间百分比,us值越高,说明用户进程消耗CPU时间越多,如果长期大于50%,则需要考虑优化程序或者算法
  • sy :表示系统内核进程消耗的CPU时间百分比,一般来说us+sy应该小于80%,如果大于80%,说明可能存在CPU瓶颈
  • id :表示CPU处在空间状态的时间百分比
  • wa :表示IO等待所占用的CPU时间百分比,wa值越高,说明I/O等待越严重,根据经验wa的参考值为20%,如果超过20%,说明I/O等待严重,引起I/O等待的原因可能是磁盘大量随

机读写造成的,也可能是磁盘或者监控器的贷款瓶颈(主要是块操作)造成的

  • st :【暂时未查到?】
#显示活跃/非活跃的内存,但是在memory统计中少了buffer与cache的数量[root@test2 ~]# vmstat -a
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 2480092 3248940 2003188    0    0     7    12    0    0  0  0 100  0  0
[root@test2 ~]# 
#显示forkl多少个进程[root@test2 ~]# vmstat -f
        57205 forks
[root@test2 ~]# vmstat -f
        57206 forks

查看内存使用的详细信息,这些信息的分别是来自于/proc/meminfo, /proc/stat 和  /proc/vmstat

[root@test2 ~]# vmstat -s
      8061288  total memory
      5581312  used memory
      2003136  active memory
      3248940  inactive memory
      2479976  free memory
       400388  buffer memory
      4635404  swap cache
       262140  total swap
            0  used swap
       262140  free swap
      2564729 non-nice user cpu ticks
           80 nice user cpu ticks
      1198070 system cpu ticks
   3001649879 idle cpu ticks
       899817 IO-wait cpu ticks
          538 IRQ cpu ticks
        75907 softirq cpu ticks
       727048 stolen cpu ticks
    197029138 pages paged in
    365733042 pages paged out
            0 pages swapped in
            0 pages swapped out
    864505151 interrupts
   1253326562 CPU context switches
   1543454840 boot time
        57207 forks

vmstat -s

查看磁盘的读写:这些信息主要来自于 /proc/diskstats

[root@test2 ~]# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
ram0       0      0       0       0      0      0       0       0      0      0
ram1       0      0       0       0      0      0       0       0      0      0
ram2       0      0       0       0      0      0       0       0      0      0
ram3       0      0       0       0      0      0       0       0      0      0
ram4       0      0       0       0      0      0       0       0      0      0
ram5       0      0       0       0      0      0       0       0      0      0
ram6       0      0       0       0      0      0       0       0      0      0
ram7       0      0       0       0      0      0       0       0      0      0
ram8       0      0       0       0      0      0       0       0      0      0
ram9       0      0       0       0      0      0       0       0      0      0
ram10      0      0       0       0      0      0       0       0      0      0
ram11      0      0       0       0      0      0       0       0      0      0
ram12      0      0       0       0      0      0       0       0      0      0
ram13      0      0       0       0      0      0       0       0      0      0
ram14      0      0       0       0      0      0       0       0      0      0
ram15      0      0       0       0      0      0       0       0      0      0
loop0      0      0       0       0      0      0       0       0      0      0
loop1      0      0       0       0      0      0       0       0      0      0
loop2      0      0       0       0      0      0       0       0      0      0
loop3      0      0       0       0      0      0       0       0      0      0
loop4      0      0       0       0      0      0       0       0      0      0
loop5      0      0       0       0      0      0       0       0      0      0
loop6      0      0       0       0      0      0       0       0      0      0
loop7      0      0       0       0      0      0       0       0      0      0
vda    91045  17027 14561564  471341 2162428 8151181 82493360 42481096      0   3692
vdb   963898   8548 339997410 6303150 2330718 47219706 399897152 254295683      0   7429
vdc   155657   1269 39496870 1068779 587058 36520794 249075892 47830809      0   2421
sr0        0      0       0       0      0      0       0       0      0      0
[root@test2 ~]# vmstat -D
           28 disks
            4 partitions
      1210600 total reads
        26844 merged reads
    394055844 read sectors
      7843270 milli reading
      5080204 writes
     91891681 merged writes
    731466404 written sectors
    344607588 milli writing
            0 inprogress IO
        13542 milli spent IO
[root@test2 ~]# 

#merged :表示一次来自于合并的写/读请求,一般系统会把多个连接/邻近的读/写请求合并到一起来操作。

free命令

free用来查看系统内存的实际使用情况,有关系统内存的使用有几个算式:

[root@test2 ~]# free -m
#1:             total       used       free     shared    buffers     cached
#2:Mem:          7872       5450       2421          0        391       4526
#3:-/+ buffers/cache:        532       7339
#4:Swap:          255          0        255
[root@test2 ~]# 

#这里面的几个英文的意思不再说明

介绍这个命令的时候,总是会有一些公式,但是我感觉这些公式计算貌似不是那么准确。

#4: 表示的交换分区的数量,也就是虚拟内存的数量: total=used+free

#2:表示从操作系统层面上看对内存的统计: buffers表示被os buff的数量,cached表示被oscache的数量。shared已经被删除,结果总是0.

    A buffer is something that has yet to be "written" to disk.         #表示写缓冲
    A cache is something that has been "read" from the disk and stored for later use. #表示读缓存

也就是说buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据。这二者是为了提高IO性能的,并由OS管理。在linux系统中为了提高io的读性能,一般cached的数据要比buff大得多。

被系统缓存的内存可以释放,后面会说明:#关于free的一片博客

#3:关于第三行的结果,感觉都说不太清,暂时先空着。

free命令的读取值是从cat /proc/meminfo中读取的,free命令常用的选项就是“-m”,还有一个选项-s支持动态输出,后面加上间隔的秒数。

[root@test2 ~]# free -s 2
             total       used       free     shared    buffers     cached
Mem:       8061288    5581320    2479968        188     400388    4635408
-/+ buffers/cache:     545524    7515764
Swap:       262140          0     262140

             total       used       free     shared    buffers     cached
Mem:       8061288    5581320    2479968        188     400388    4635408
-/+ buffers/cache:     545524    7515764
Swap:       262140          0     262140

原文地址:https://www.cnblogs.com/wxzhe/p/10425752.html

时间: 2024-10-05 06:12:11

linux与内存相关的命令的相关文章

LINUX系统查看相关配置命令

系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -tv # 列出所有PCI设备 # lsusb -tv # 列出所有USB设备 # lsmod # 列出加载的内核模块 # env # 查看环境变量 资源 # free -m # 查看内存使用量和交换区使用量 # df -h # 查看各分区使用情况 #

linux和性能相关的命令及系统性能诊断

常用的和性能有关的命令 Iostat/vmstat/top/mpstat/time/strace/ipcs/ipcrm/ifconfig/tethereal/netstat/free/uptime 关于识别cpu/io/内存/network瓶颈,以及相应的解决办法参考如下链接: http://blog.csdn.net/wyzxg/article/details/6234457

Linux最常用的基础命令 下篇

Linux最常用的基础命令个人总结 shell脚本 脚本就是:写一堆指令存成一个文本,用于完成一些小任务 a="123" linux中定义一个变量 echo $a echo $b 显示的是空 echo $master 打印的是根/ ----------------------------------- Ubuntu中安装一个vim apt-get install -y vim ----------------------------------- /etc/bashrc 对整个系统中的

驱动移植过程中DMA内存相关接口替换

1. 相关概念介绍及移植简介 1.1 物理地址与总线地址         1)物理地址是与CPU相关的.在CPU的地址信号线上产生的就是物理地址,在程序指令中的的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址线上.         2)总线地址,顾名思义,是与总线相关的,外设使用的就是总线地址.         在x86平台下,外设的I/O地址是独立的,即有专门的指令访问外设I/O,I/O地址就是所谓的"总线地址".而"物理地址"就

关于linux查看内存命令的解释

使用的命令为: free -m m为以MB为单位查看内存.当然你愿意的话,可以用K. 如: 在第一部分Mem行中有如下参数. total:内存总数,即3881MB used:已经使用的内存数,即3745MB free:空闲的内存数,即135MB shared:当前已经废弃不用,总是0 buffers Buffer:缓存内存数,即216MB cached Page:缓存内存数,即435MB 其中,内存总数与已使用内存数和空闲内存数的关系是: total(3881M)=used(3745M)+fre

Linux相关网络命令

1.简述osi七层模型和TCP/IP四层模型 OSI七层模型 TCP/IP四层模型 2.简述iproute家族命令 ip命令: ip [OPTIONS] OBJECT {COMMAND|help} ip link:network device configuration. ip link set DEV:修改设备属性 1) up或down:启用或停用接口:示例,ip link set eth1 up/down 2) multicast on 或 multicast off:启用或禁用多播功能:示

Linux系统的相关知识、常用命令及拓展、centos 7网卡配置

一.Linux系统的相关知识 1.Linux中根目录下所有文件夹的含义和用途 目录 功能 /bin 存放可执行文件 /dev 存放设备文件 (如:网卡.CPU) /media 存放可移除设备文件 (如:U盘.CD/DVD.VMTools) /opt 存放第三方软件的默认位置 /tmp  存放临时文件 (如:日志文件) /root root用户的家目录,主文件夹 /home 普通用户的家目录,文件夹的命名是以用户的名字来命名的 /etc 存放配置文件 /usr 存放操作系统软件资源 /var 存放

linux 系统性能分析(top命令)及更准确解读内存的占用率(free -m 命令)

一.系统性能分析(top命令) top 命令是 Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,默认5秒刷新一下进程列表,所以类似于 Windows 的任务管理器. 系统整体当下的统计信息 top命令显示的前五行是系统整体的统计信息. 第一行是任务队列信息,同uptime命令的执行结果.eg. top  -  15:09:51  up  17  days  ,  3:38  ,  4  users  ,  load  average  :  1.09  ,  3.39

linux学习笔记(一)-文件目录相关的命令&&文件通配符

一.几个命令概述 1.查看目录以及目录底下的文件:ls(-a显示隐藏文件:-d显示目录本身:-l显示详细内容:-R递归显示,即把子目录的文件也显示出来:-h以更加被人类理解的格式显示,比如显示文件大小的时候用M为单位显示:-i显示文件索引ID) 2.查看文件内容:cat,head,tail,less,more,tac cat:将文件连接起来,输出在屏幕上,可接多个文件(-E:显示隐藏的换行符:-n:显示出行号) head:默认查看文件的前10行(-n#:查看文件的前#行.空白行也是一行) tai