Ubuntu 实时查看显存调用命令 free 及命令详解与原理说明(全)

Ubuntu 实时查看显存调用命令 free 及详解

文章目录

  • Ubuntu 实时查看显存调用命令 free 及详解
    • 1 free 作用
      • 1.1 语法:
      • 1.2 单独显示例子
      • 1.3 组合显示例子
    • 2 输出介绍
    • 3 原理解释
      • 3.1 buff / cache(即 buffer / cache)
          • 3.1.1 buffer 缓冲区
          • 3.1.2 cache 页高速缓存
          • 3.1.3 对比
      • 3.2 free 与 available
      • 3.3 交换空间 (swap space)
    • 4 /proc/meminfo 文件

1 free 作用

要想实时查看系统内存的情况,首先要知道 free 命令作用是什么。
free 命令显示系统内存的使用情况,包括物理内存、交换内存**(swap)**和内核缓冲区内存等。(默认为 kb
命令效果如图所示:
在这里插入图片描述

1.1 语法:

	free [选项]

使用man命令、–help命令、info命令可查询free命令的所有选项,以–help为例,如:
在这里插入图片描述

具体显示内存时候的语法:

free [-hbkmotV][-s <间隔秒数>]

参数表:

	参  数:
	-b  以Byte为单位显示内存使用情况。
	-k  以KB为单位显示内存使用情况。
	-m  以MB为单位显示内存使用情况。
	-h   以比较人性化的方式显示内存使用情况。
	-o  不显示缓冲区调节列。
	-s   <间隔秒数>  持续观察内存使用状况。
	-t  显示内存总和列。
	-V  显示版本信息。   
	-w   wide output

1.2 单独显示例子

  1. free -b:以 Bytes 为单位来显示内存的信息
    在这里插入图片描述

  2. free -k:以 KB 为单位来显示内存的信息
    在这里插入图片描述

  3. free -m:以 M 为单位来显示内存的信息
    在这里插入图片描述

  4. free -g:以 G 为单位来显示内存的信息
    在这里插入图片描述

  5. free -h:以适于人类可读方式显示内存信息。-h 与其他命令最大不同是 -h 选项会在数字后面加上适于人类可读的单位
    在这里插入图片描述
    在大于** 1 数字后是 G(GB) 字母。当数字并没有达到 GB **时,**free **足够聪明来知道并在每个数字后面跟上合适的单位。

  6. free -l:显示高低内存的利用率
    在这里插入图片描述

  7. free -t:显示 linux 的全部内存
    在这里插入图片描述

  8. free -s N:表示每隔 N 秒打印一次内存信息,直到用 ctrl+c 结束
    在这里插入图片描述

  9. free -V :显示版本信息
    注意 V 一定要大写
    在这里插入图片描述

  10. free -wwide output
    -w 选项表示以宽格式显示结果,使得输出更易读
    在这里插入图片描述

1.3 组合显示例子

free 命令的选项是可以组合的:

  1. free -hs 3: 以人类可读的方式,每隔 3s 打印一次内存信息,直到 ctrl+c 结束
    在这里插入图片描述
  2. free -s 2 -c 4:每隔 2s 打印一次内存信息,共打印 4 次
    在这里插入图片描述
  3. free -m -s 3 -c 3:以m为单位来显示内存的信息,每隔 3s 打印一次内存信息,共打印 3 次
    在这里插入图片描述

2 输出介绍

为了方便下面的说明,在此从左到右依次解释显示的输出内容:

  • 行:

    • Mem: 是内存的使用情况。
    • Swap: 是交换空间的使用情况。
  • 列:

    • total: 显示系统总的可用物理内存和交换空间大小。
    • used: 显示已经被使用的物理内存和交换空间。
    • free: 显示还有多少物理内存和交换空间可用使用。
    • shared: 显示被共享使用的物理内存大小。
    • buff/cache: 显示被 buffer 和 cache 使用的物理内存大小。
    • available: 显示还可以被应用程序使用的物理内存大小。

理解了一些基本概念之后,上面的输出才能帮助我们了解系统的内存状况。

3 原理解释

3.1 buff / cache(即 buffer / cache)

buffercache 应该是两种类型的内存,但是 free 命令把它们放在一起,那么需要先来搞清楚 buffercache 的含义。buffer 在操作系统中指 buffer cache,即 “缓冲区”。cache 在操作系统中指 page cache,中文一般翻译为 “页高速缓存”。

3.1.1 buffer 缓冲区

要理解 buffer 缓冲区,须明确另外两个概念:“扇区” 和 “块”

  • 扇区:是设备的最小寻址单元,也叫 “硬扇区” 或 “设备块”。
  • 块:是操作系统中文件系统的最小寻址单元,也叫 “文件块” 或 “I/O 块”。

每个块包含一个或多个扇区,但大小不能超过一个页面,所以一个页可以容纳一个或多个内存中的块。当一个块被调入内存时,它要存储在一个缓冲区中。每个缓冲区与一个块对应,它相当于是磁盘块在内存中的表示(下图来自互联网)

在这里插入图片描述

注意,buffer cache 只有块的概念而没有文件的概念,它只是把磁盘上的块直接搬到内存中而不关心块中究竟存放的是什么格式的文件。(可以理解为快递件打包后整件运送,但是包裹里面东西可能完整、也可能细碎)

3.1.2 cache 页高速缓存

cache 页高速缓存是内核实现的磁盘缓存。它主要用来减少对磁盘的 I/O 操作。具体地讲,是通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理内存的访问。页高速缓存缓存的是内存页面。缓存中的页来自对普通文件、块设备文件(这个指的就是 buffer cache 呀)和内存映射文件的读写。

页高速缓存对普通文件的缓存可以这样理解:当内核要读一个文件(比如 /etc/hosts)时,它会先检查这个文件的数据是不是已经在页高速缓存中了。如果在,就放弃访问磁盘,直接从内存中读取。这个行为称为缓存命中。如果数据不在,就是未命中缓存,此时内核就要调度块 I/O 操作从磁盘去读取数据,然后内核将读来的数据放入页高速缓存中。
这种缓存的目标是文件系统可以识别的文件(比如 /etc/hosts)。
页高速缓存对块设备文件的缓存就是在前面的 buffer cahce。因为独立的磁盘块通过缓冲区也被存入了页高速缓存(缓冲区最终是由页高速缓存来承载的)。

3.1.3 对比

所以缓冲区和页高速缓存,实现方式都是一样的。缓冲区只不过是一种概念上比较特殊的页高速缓存。
free 命令显示的是 buff/cache, 是因为缓冲区和页高速缓存的实现并非天生就是统一的。在 linux 内核 2.4 中才将它们统一。更早的内核中有两个独立的磁盘缓存:页高速缓存和缓冲区高速缓存前者缓存页面,后者缓存缓冲区。只不过现在这两个差不多了,不用太过纠结。

3.2 free 与 available

这两个数据意义比较相近,但时存在不同
free真正尚未被使用的物理内存数量。
available从应用程序的角度看到的可用内存数量。
Linux 内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据,即 buffer 和 cache。所以对于内核来说,buffer 和 cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffercache 中回收内存来满足应用程序的请求。所以从应用程序的角度来说,available = free + buffer + cache
请注意,这只是一个很理想的计算方式,实际中的数据往往有较大的误差。

3.3 交换空间 (swap space)

swap space 是磁盘上的一块区域,可以是一个分区,也可以是一个文件。所以具体的实现可以是 swap 分区也可以是 swap 文件。当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。

交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。

现在的机器一般都不太缺内存,如果系统默认还是使用了 swap 是不是会拖累系统的性能?理论上是的,但实际上可能性并不是很大。
并且内核提供了一个叫做 swappiness 的参数,用于配置需要将内存中不常用的数据移到 swap 中去的紧迫程度。这个参数的取值范围是 0~1000 告诉内核尽可能的不要将内存数据移到 swap 中,也即只有在迫不得已的情况下才这么做,而 100 告诉内核只要有可能,尽量的将内存中不常访问的数据移到 swap 中。在 ubuntu 系统中,swappiness 的默认值是 60。如果我们觉着内存充足,可以在 /etc/sysctl.conf 文件中设置 swappiness

修改内容如下:

	vm.swappiness=10

4 /proc/meminfo 文件

free 命令中的信息都来自于 /proc/meminfo 文件。/proc/meminfo 文件包含了更多更原始的信息,只是看起来不太直观:
也可以通过查看这个文件里面的数据,查看额定值
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/308757.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java生成包含ehcarts报表的PDF文件,亲测有效!!!

1.引入maven依赖 <dependency><groupId>org.jfree</groupId><artifactId>jfreechart</artifactId><version>1.5.3</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>i…

QT第三天

完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面如果账号和密码不匹配&#xff0…

基于SELinux三权分立配置方法

1.系统安装 系统安装完成后,系统当前的SELinux配置为: # cat /etc/selinux/config SELINUX=enforcing SELINUXTYPE=targeted 2.SELinux环境准备 # yum install setools policycoreutils.x86_64 selinux-policy-mls.noarch setroubleshoot.x86_64 setools-console -y 3.SELin…

Qt/QML编程学习之心得:hicar手机投屏到车机中控的实现(32)

hicar,是华为推出的一款手机APP,有百度地图、华为音乐,更多应用中还有很多对应手机上装在的其他APP,都可以在这个里面打开使用,对开车的司机非常友好。但它不仅仅是用在手机上,它还可以投屏到车机中控上,这是比较神奇的一点。 HiCar本质上是一套智能投屏系统,理论上所有…

【Unity】Timer计时器属性及使用

可以代替协程完成延时操作 可以不用Update进行计时 GitHub开源计时插件 网址&#xff1a;https://github.com/akbiggs/UnityTimer/tree/master 导入&#xff1a;URL&#xff1a;https://github.com/akbiggs/UnityTimer.git 基本功能&#xff1a; 创建计时器&#xff1a; Time…

计算机导论03-计算机组成

计算机系统结构 冯•诺依曼体系结构 冯•诺依曼体系结构的基本要点 冯•诺依曼思想即冯•诺依曼体系结构思想&#xff0c;其最基本的概念是存储程序概念&#xff0c;它奠定了现代计算机的结构基础。 功能部件: 计算机必须具备五大基本组成部件&#xff0c;包括&#xff1a;运…

15个等轴视图设计的电动车汽车无人机等PR剪辑素材视频制作元素

包含15个等轴视图、等距视角电动车、汽车、无人机、沙漏、飞机等PR剪辑素材视频制作元素mogrt动画模板。 特征&#xff1a; 等距设计&#xff1b; 可以更改颜色&#xff1b; 分辨率&#xff1a;全高清&#xff08;19201080&#xff09;&#xff1b; 持续时间&#xff1a;15秒&a…

[机缘参悟-122] :IT人如何认识自己的?自省、面试、考核、咨询?

目录 一、为什么要认识自己 二、认识自己的哪些方面&#xff1f; 三、如何认识自己 3.1 通过自省认识自己 3.2 通过面试认识自己 3.3 通过咨询认识自己 3.4 通过相亲认识自己 3.5 通过一段感情关系认识自己 一、为什么要认识自己 认识自己在人类的成长和心灵发展过程中…

RTX20系开启超分辨率

我的显卡是2070s现在也支持了超分辨率,根据网上的教程一通折腾后发现了不少的坑,记一下.希望有缘人可以少走点弯路. 机器配置如下: [CPU] CPU #1: 3600MHz, AMD Ryzen 7 3700X 8-Core Processor , AMD64 Family 23 Model 113 Stepping Instruction set: MMX MMX…

Camunda外部任务

外部任务&#xff1a;即任务可以在外部系统进行审批。 一&#xff1a;pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instan…

零基础学习数学建模——(二)数学建模的步骤

本篇博客将详细介绍数学建模的步骤。 文章目录 引例&#xff1a;年夜饭的准备第一步&#xff1a;模型准备第二步&#xff1a;模型假设第三步&#xff1a;模型建立第四步&#xff1a;模型求解第五步&#xff1a;结果分析第六步&#xff1a;模型检验第七步&#xff1a;模型应用及…

分布式全局id

分布式全局id snowflake 算法是 twitter 开源的分布式 id 生成算法&#xff0c;采用 Scala 语言实现&#xff0c;是把一个 64 位的 long 型的 id&#xff0c;1 个 bit 是不用的&#xff0c;用其中的 41 bits 作为毫秒数&#xff0c;用 10 bits 作为工作机器 id&#xff0c;12 …

【C++进阶05】AVL树的介绍及模拟实现

一、AVL树的概念 二叉搜索树的缺点 二叉搜索树虽可以缩短查找效率 但如果数据有序或接近有序 二叉搜索树将退化为单支树 查找元素相当于在顺序表中搜索元素&#xff0c;效率低下 AVL树便是解决此问题 向二叉搜索树中插入新结点 并保证每个结点的左右子树 高度之差的绝对值不超…

【算法】不使用库函数,求解立方根

牛客原题&#xff1a;https://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca?tpId37&tqId21330&rp1&ru/exam/oj/ta&qru/exam/oj/ta&sourceUrl%2Fexam%2Foj%2Fta%3FtpId%3D37&difficultyundefined&judgeStatusundefined&tags&a…

【LeetCode】winter vacation training

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【LeetCode】winter vacation training 目录 &#x1f449;&#x1f3fb; 有效的字母异位词&#x…

websocket介绍并模拟股票数据推流

Websockt概念 Websockt是一种网络通信协议&#xff0c;允许客户端和服务器双向通信。最大的特点就是允许服务器主动推送数据给客户端&#xff0c;比如股票数据在客户端实时更新&#xff0c;就能利用websocket。 Websockt和http协议一样&#xff0c;并不是设置在linux内核中&a…

monocle2 fibroblast silicosis inmt

gc() #####安装archr包##别处复制 .libPaths(c("/home/data/t040413/R/x86_64-pc-linux-gnu-library/4.2","/home/data/t040413/R/yll/usr/local/lib/R/site-library", "/usr/local/lib/R/library","/home/data/refdir/Rlib/")).libPa…

20、Kubernetes核心技术 - 基于Prometheus和Grafana搭建集群监控平台

目录 一、概述 二、监控平台架构图​编辑 三、部署 Prometheus 3.1、Prometheus简介 3.2、部署守护进程node-exporter 3.3、部署rbac 3.4、ConfigMap 3.5、Deployment 3.6、Service 3.7、验证Prometheus 四、部署Grafana 4.1、Deployment 4.2、Service 4.3、Ing…

二叉树及其实现

二叉树 一.树的概念及结构1.1树的概念1.2相关概念 2.二叉树的概念及结构2.1 概念2.2 特殊的二叉树 3.二叉树的遍历3.1 前序、中序以及后序遍历3.2 层序遍历3.3 判断二叉树是否是完全二叉树3.4 二叉树的高度3.5 二叉树的叶子节点个数3.6 二叉树的第k层的节点个数3.7 二叉树销毁3…

吃惯人血馒头的 VC 机构,是否还能在 Fair launch 的散户牛市中胜出?

“吃惯人血馒头的 VC 机构&#xff0c;在 Fair launch 革命中正在失去话语权&#xff0c;而散户、社区完全主导加密行业的时代&#xff0c;正在悄然而至。” LaunchPad 是代币面向市场的重要一环&#xff0c;将代币推向市场&#xff0c;加密项目将能够通过代币的销售从市场上募…