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 文件包含了更多更原始的信息,只是看起来不太直观:
也可以通过查看这个文件里面的数据,查看额定值
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FineReport--学习笔记

1 项目介绍 1.1 项目背景 某互联网电商公司拥有超过50万门店用户和8000店铺用户&#xff0c;店铺主要以卖家身份进行销售&#xff0c;门店以买家身份进行购买&#xff0c;每天会产生许多销售订单。根据订单信息以及其他的门店信息&#xff0c;店铺信息&#xff0c;商品信息等…

用友NC word.docx 任意文件读取漏洞复现

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友NC 系统word.docx等接口存在任意文件…

rabbitmq延时队列相关配置

确保 RabbitMQ 的延时消息插件已经安装和启用。你可以通过执行以下命令来安装该插件&#xff1a; rabbitmq-plugins enable rabbitmq_delayed_message_exchange 如果提示未安装&#xff0c;以下是安装流程&#xff1a; 查看mq版本&#xff1a; 查看自己使用的 MQ&#xff08;…

CHS_01.2.1.1+2.1.3+进程的概念、组成、特征

CHS_01.2.1.12.1.3进程的概念、组成、特征 进程进程的概念 进程的组成——PCB进程的组成——PCB进程的组成——程序段、数据段知识滚雪球&#xff1a;程序是如何运行的&#xff1f;进程的组成进程的特征 知识回顾与重要考点 从这个小节开始 我们会正式进入第二章处理机管理相关…

【云计算】云计算概述

1. 云计算概述 1.1 云计算的定义 美国国家标准与技术研究院(NIST)定义 云计算是一种按使用量付费的模式&#xff0c;这种模式提供可用的、便捷的、按需的网络访问&#xff0c;进入可配置的计算资源共享池(资源包括网络&#xff0c;服务器&#xff0c;存储&#xff0c;应用软件…

分享两个概念:非受检异常和受检异常

分享两个概念&#xff1a;非受检异常和受检异常 愿你的每一天都充满阳光和笑声&#xff0c;愿每一步都是轻松与愉快。在新的旅程中&#xff0c;愿你找到勇气攀登高峰&#xff0c;找到智慧化解困境。 愿你的心中充满温暖和善意&#xff0c;愿你的梦想如彩虹般美丽且真实。愿你发…

TCN 时序卷积网络 (temporal convolutional network)【因果卷积、空洞卷积】

文章目录 TCN 时序卷积 &#xff08;temporal convolutional network&#xff09;1.因果卷积2.膨胀卷积 TCN 时序卷积 &#xff08;temporal convolutional network&#xff09; 它由膨胀卷积核因果卷积两种卷积构成。 如图&#xff1a;左边是膨胀因果卷积&#xff0c;右边是…

206. 反转链表(Java)

题目描述&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 输入&#xff1a; head [1,2,3,4,5] 输出&#xff1a; [5,4,3,2,1] 代码实现&#xff1a; 1.根据题意创建一个结点类&#xff1a; public class ListNode {int val…

048.Python包和模块_发布包和模块

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

ARM工控机Node-red使用教程

嵌入式ARM工控机Node-red安装教程 从前车马很慢书信很远&#xff0c;而现在人们不停探索“科技改变生活”。 智能终端的出现改变了我们的生活方式&#xff0c;钡铼技术嵌入式工控机协助您灵活布建能源管理、大楼自动化、工业自动化、电动车充电站等各种多元性IoT应用&#xff…

Unity组件开发--UI管理器

1.Canvas组件&#xff1a; 注意属性&#xff1a; &#xff08;1&#xff09;渲染模式是&#xff1a;屏幕空间相机 &#xff08;2&#xff09;创建一个UICamera节点&#xff0c;管理相机 &#xff08;3&#xff09;屏幕画布缩放模式 &#xff08;4&#xff09;画布下挂载两…

前端项目构建打包生成Git信息文件

系列文章目录 TypeScript 从入门到进阶专栏 文章目录 系列文章目录前言一、前端项目构建打包生成Git信息文件作用二、步骤1.引入相关的npm包1.1. **fs** 包1.2. **child_process** 包1.3. **os** 包 (非必须 如果你想生成的文件信息中包含当前电脑信息则可用)1.4. **path** 包…

基于宝塔搭建Discuz!论坛

一、安装宝塔 我是在我的虚拟机上安装图的宝塔 虚拟机版本&#xff1a;Ubuntu 18.04 wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh 6dca892c安装完成之后在浏览器输入你的地址 https://你的域名&#xff08;或…

每天刷两道题——第十一天

1.1滑动窗口最大值 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值 。 输入&#xff1a;nums [1,3,-1,-3,5,3,6,7], k 3 输出&…

面试题-DAG 有向无环图

有向无环图用于解决前后依赖问题&#xff0c;在Apollo中用于各个组件的依赖管理。 在算法面试中&#xff0c;有很多相关题目 比如排课问题&#xff0c;有先修课比如启动问题&#xff0c;需要先启动1&#xff0c;才能启动2 概念 顶点&#xff1a; 图中的一个点&#xff0c;比…

k8s 之7大CNI 网络插件

一、介绍 网络架构是Kubernetes中较为复杂、让很多用户头疼的方面之一。Kubernetes网络模型本身对某些特定的网络功能有一定要求&#xff0c;但在实现方面也具有一定的灵活性。因此&#xff0c;业界已有不少不同的网络方案&#xff0c;来满足特定的环境和要求。 CNI意为容器网络…

C# Entity Framework 中不同的数据的加载方式

延迟加载 延迟加载是指在访问导航属性时&#xff0c;Entity Framework 会自动查询数据库并加载相关数据。这种方式在我们需要访问导航属性时比较方便&#xff0c;因为我们无需手动加载相关数据&#xff0c;而且只会在需要时才会进行查询&#xff0c;从而减少了不必要的开销。但…

模仿Activiti工作流自动建表机制,实现Springboot项目启动后自动创建多表关联的数据库与表的方案

文/朱季谦 熬夜写完&#xff0c;尚有不足&#xff0c;但仍在努力学习与总结中&#xff0c;而您的点赞与关注&#xff0c;是对我最大的鼓励&#xff01; 在一些本地化项目开发当中&#xff0c;存在这样一种需求&#xff0c;即开发完成的项目&#xff0c;在第一次部署启动时&…

C++笔记之cout高亮输出以及纯C++实现一个彩色时钟

C笔记之cout高亮输出以及纯C实现一个彩色时钟 code review! 文章目录 C笔记之cout高亮输出以及纯C实现一个彩色时钟一.cout高亮输出1.1.运行1.2.代码一1.3.代码二1.4.重置终端的文本格式到默认设置说明 二.纯C实现一个彩色时钟2.1.运行2.2.main.cc2.3.cout带颜色打印输出技巧…

springCould中的Bus-从小白开始【11】

目录 &#x1f9c2;1.Bus是什么❤️❤️❤️ &#x1f32d;2.什么是总线❤️❤️❤️ &#x1f953;3.rabbitmq❤️❤️❤️ &#x1f95e;4.新建模块3366❤️❤️❤️ &#x1f373;5.设计思想 ❤️❤️❤️ &#x1f37f;6.添加消息总线的支持❤️❤️❤️ &#x1f9…