linux 监控命令free,简单了解Linux性能监控命令free

在系统遇到各种IO瓶颈,内存使用率高,cpu使用率高等问题时,我们如何来定位错误?linux提供了很多命令来协助我们快速定位到错误,free命令是Linux最常用的命令之一:它可以查看系统的内存状况,包括服务器的总内存,已经使用的内存和剩下未被使用的内存,以及缓冲区和缓存各自占用的内存情况。

$ free -m

total used free shared buffers cached

Mem: 994 787 207 0 121 227

-/+ buffers/cache: 437 557

Swap: 0 0 0

要完全理解上面3行数据,先搞明白buffer和cache是什么。

buffer:缓冲区

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

A buffer is something that has yet to be "written" to disk.

cache:缓存

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

A cache is something that has been "read" from the disk and stored for later use.

buffer是用于存放将要输出到disk(块设备)的数据,而cache是存放从disk上读出的数据。二者都是为提高IO性能而设计的。

理解了buffer和cache的作用后,那么free展示的信息就易懂了,现在开始分析free命令输出的每一行代表的含义:

第一行:Mem

总共的内存994(total) = 787(used)+207(free),used表示系统已经被使用的内存,它包括应用程序使用的内存,以及用于缓冲和缓存的内存总和。

第二行:-/+ buffers/cache

-buffers/cache:437(used) = 787(used) - 121(buffers) - 227(cached),437表示除去缓冲和缓存消耗的内存外,应用程序实际消耗的内存是437M。

+buffers/cache:557(free) = 207(free)+121(buffers)+cached(227),557表示系统可用的内存有557M,因为如果遇到内存告急的情况时,buffer和cache所占的内存还是可以用来给应用程序使用。

第三行:Swap

看到很多文章直接说不解释了,但这里我要解释一下,Swap表示交换分区,也就是我们通常所说的虚拟内存。就可以把一部分磁盘空间当做内存使用,这部分空间叫做虚拟内存,当系统内存不足时,系统会把那些还驻留在内存中但是当前没有运行的程序暂时放到虚拟内存中去

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

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

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

相关文章

Android studio之NDK integration is deprecated in the current plugin解决办法

1 、问题 编译Android项目,出现下面错误 NDK integration is deprecated in the current plugin 2、解决办法 在我们 gradle.properties(Project Properties) file add android.useDeprecatedNdktrue

使用 System.Net.Http.Json 简化 HttpClient 的使用

使用 System.Net.Http.Json 简化 HttpClient 的使用Intro从 .NET Core 3.1 开始,微软添加了一个 System.Net.Http.Json 的扩展,可以用来简化 HttpClient 的使用,看到在很多项目里还并未开始使用,所以想向大家介绍一下SamplePostAs…

MySQL的四种不同查询的分析

1.前置条件:本次是基于小数据量,且数据块在一个页中的最理想情况进行分析,可能无具体的实际意义,但是可以借鉴到各种复杂条件下,因为原理是相同的,知小见大,见微知著!打开语句分析并确认是否已经…

乐观锁的概念

乐观锁: 大多数是基于数据版本(version)的记录机制实现的。即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表添加一个“version”字段开实现读取数据时,将此版本号一同读出&…

.NET6之MiniAPI(十八):OpenAPI swagger

从本篇开始,介绍一些很不错的三方库,来丰富MiniAPI的使用。在创建MiniAPI项目时,模板提供了一个是否启用OpenAPI的选项,足见这个三方库的优势和强大。OpenAPI为我们测试API提供了强大的支持,调用API的开发人员&#xf…

查看linux内存还剩多少g,Linux 查看存储空间、内存以及清除内存

查看存储空间:zdsubuntu ~ $ df -hl文件系统 容量 已用 可用 已用% 挂载点udev 972M 0 972M 0% /devtmpfs 199M 6.3M 192M 4% /run/dev/sda1 23G 5.3G 17G 25% /tmpfs 992M 212K 991M 1% /dev/shmtmpfs 5.0M 4.0K 5.0M 1% /run/locktmpfs 992M 0 992M 0% /sys/fs/cg…

Android之ndk-build出现c:28:51: error: ‘get_string‘ undeclared here (not in a function)解决办法

1 problem ndk-build error: get_string undeclared here (not in a function) 2 resolve jstring get_strstring(JNIEnv* env, jobject thiz) {return (*env)->NewStringUTF(env, "I am chenyu, 动态注册JNI"); }jint add_int(JNIEnv* env, jobject jobj, ji…

c/c++与java------之JNI学习(一)

一、java 调用c/c 步骤: 1、在java类中创建一个native关键字声明的函数 2、使用javah生成对应的.h文件 3、在c/c中实现对应的方法 4、使用vs2012创建一个win32空白项目,将jdk中的jni.h和jni_md.h文件拷贝到工程中,修改项目属性为(…

BeetleX服务网关授权配置

很多应用服务都需要授权访问,为了更好地统一处理这种授权验证,服务网关提供了JWT验证插件用于解决这问题。网关的JWT验证插件默认是关闭的,只有当开启后网关才会对请求进行拦截验证处理。开启开启JWT验证需要在插件管理里开启Webapi JWT验证插…

关于Spring的事务Transactional,锁同步,并发线程

Spring事务传播机制和数据库隔离级别 在标准SQL规范中定义了4个事务隔离级别,不同隔离级别对事务处理不同 。 未授权读取(Read Uncommitted): 也称 未提交读。允许脏读取但不允许更新丢失,如果一个事务已经开始写数据则…

linux 编译指cpu内核,linux内核编译与配置

linux是如何组成的?答:linux是由用户空间和内核空间组成的为什么要划分用户空间和内核空间?答:有关CPU体系结构,各处理器可以有多种模式,而LInux这样的划分是考虑到系统的安全性,比如X86可以有4…

Linux下的压缩与解压缩

tar命令zip命令unzip命令gzip命令bzip2命令tar命令:压缩和解压缩tar格式的文件格式:tar [主选项辅选项] 文件或目录【主选项告诉tar要做什么事,是必须要有的,辅选项是辅助使用的,和通常的选项一样,可选】主…

Android之JNI动态注册native方法和JNI数据简单使用

1、爆结果照片 2、介绍JNI注册方式 JVM 查找 native 方法有两种方式: 1)、按照 JNI 规范的命名规则(静态注册) 2) 、调用 JNI 提供的 RegisterNatives 函数,将本地函数注册到 JVM 中(动态注册) 静态注册的实现可以参考我的这篇博客 http://blog.csdn.net/u01…

保存现场数据和状态:onSaveInstanceState\onRestoreInstanceState\onCreate()

当某个activity变得“容易”被系统销毁时,该activity的onSaveInstanceState就会被执行,除非该activity是被用户主动销毁的,例如当用户按BACK键的时候。 注意上面的双引号,何为“容易”?言下之意就是该activity还没有被…

setTimeout(function(){}, 0);

1 for (var i 0; i < 3; i) { 2 setTimeout(function() { 3 console.log(i); 4 }, 0); 5 console.log(i); 6 } 结果是&#xff1a; 0 1 2 3 3 3 分析&#xff1a; 1、在实践中&#xff0c;setTimeout 会在其完成当前任何延迟事件的事件处理器的执行&am…

Linux怎么查询全部容器时间,linuxea:如何单单修改docker容器的系统时间

一般情况下&#xff0c;我们仅仅需要修改容器的时间与我们宿主机的实际实际一致即可&#xff0c;我们知道&#xff0c;默认情况下docker容器是不允许访问系统时钟&#xff0c;但是有一款开源的软件使这样的需求变成了可能。此lib拦截用于检索当前时间和日期的所有系统调用&…

关闭系统索引(转)

转自“http://jingyan.baidu.com/article/d621e8daeaaa392865913f0a.html” 关闭系统索引 Windows索引服务是为文件、电子邮件和其他内容提供内容索引、属性缓存和搜索结果。 Windows系统在安装完成后&#xff0c;会逐步创建特定文件、文件夹和其它目标的索引&#xff0c;例如开…

Android之ndk中JNIENV env->NewStringUTF (*env)->NewStringUTF

JNIEnv是指向可用JNI函数表的接口指针&#xff0c;原生代码通过JNIEnv接口指针提供的各种函数来使用虚拟机的功能。JNIEnv是一个指向线程-局部数据的指针&#xff0c;而线程-局部数据中包含指向线程表的指针。实现原生方法的函数将JNIEnv接口指针作为它们的第一个参数。 原生代…

最佳新秀Java(22)——再次了解泛型

仿制药Java SE 1.5新功能。通用自然是参数化类型。即操作数据类型被指定为一个参数。这样的参数类型可以在课堂上使用、创建的接口和方法&#xff0c;他们被称为通用类、、泛型方法。Java语言引入泛型的优点是安全简单。规则和限制1、泛型的类型參数仅仅能是类类型&#xff08;…

如何编译 dotnet/aspnetcore 源代码

前言最近&#xff0c;准备为 dotnet/aspnetcore 修改 issue&#xff0c;但是在 clone 代码后&#xff0c;发现要编译成功&#xff0c;远没有想象中那么容易。因此&#xff0c;将整个过程进行记录&#xff0c;以供大家参考。以下操作都是在 Windows 10 下完成。0.环境准备详见官…