关于内存的概念及其原理在任何一本介绍操作系统的书本中都可以查阅到。

  理论放一遍,在Linux操作系统中如何查看系统内存使用情况呢?看看内存统计信息有哪些维度。

  一、内存使用量

    

  详细使用方法,man free

    

  top命令,之前在研究cpu性能优化过程中已经用到,但是重点放在CPU相关的指标上。这里重点查看关于内存的指标:

    

    如果swap中used如果used不断在变化, 说明内核在不断进行内存和swap的数据交换,说明内存真的不够用了。

  二、缓存与缓冲区命中率

    这俩是啥意思?cache&&buffer。对于这两者的区别可以通过man free获得它们的说明:

      

    具体含义是什么呢?通过/proc文件系统确认他们的含义:

    /proc 是 Linux 内核提供的一种特殊文件系统,是用户跟内核交互的接口。比方说,用户可以从 /proc 中查询内核的运行状态和配置选项, 查询进程的运行状态、统计数据等,也可以通过 /proc 来修改内核的配置。proc 文件系统同时也是很多性能工具的最终数据来源。
    实际操作使用命令proc,如果无此命令通过yum安装man-pages相关内容。
      

    简而言之就是一个是buffer是针对磁盘的读写缓存,而cache是针对文件的读写页缓存。

    什么是缓存命中率:指直接通过缓存获取数据的请求次数,占所有数据请求次数的百分比。命中率越高,表示使用缓存带来的收益越高,应用程序的性能也就越好。

    下面是查看缓存命中情况的工具:

      cachestat 提供了整个操作系统缓存的读写命中情况。
      cachetop 提供了每个进程的缓存命中情况。

    这俩工具有bcc工具包提供,如果系统无自带,使用yum进行安装。注意安装之后设置PATH环境变量,bcc 软件包默认不会把这些工具配置到系统的 PATH 路径中,所以你得自己手动配置。

    

    cachetop:

    

  三、内存性能指标

    已知如何查看内存相关性能了,那么为了分析内存的性能瓶颈,首先你要知道,怎样衡量内存的性能,也就是性能指标问题。
    首先,你最容易想到的是 系统内存使用情况 ,比如已用内存、剩余内存、共享内存、可用内存、缓存和缓冲区的用量等。
      已用内存和剩余内存很容易理解,就是已经使用和还未使用的内存。
      共享内存是通过 tmpfs (内存的文件系统 )实现的,所以它的大小也就是 tmpfs 使用的内存大小。tmpfs 其实也是一种特殊的缓存。
      可用内存是新进程可以使用的最大内存,它包括剩余内存和可回收缓存。
      缓存包括两部分,一部分是磁盘读取文件的页缓存,用来缓存从磁盘读取的数据,可以加快以后再次访问的速度。另一部分,则是 Slab 分配器中的可回收内存。
      缓冲区是对原始磁盘块的临时存储,用来缓存将要写入磁盘的数据。这样,内核就可以把分散的写集中起来,统一优化磁盘写入。
    第二类很容易想到的,应该是 进程内存使用情况 ,比如进程的虚拟内存、常驻内存、共享内存以及 Swap 内存等。
      虚拟内存,包括了进程代码段、数据段、共享内存、已经申请的堆内存和已经换出的内存等。这里要注意,已经申请的内存,即使还没有分配物理内存,也算作虚拟内存。
      常驻内存是进程实际使用的物理内存,不过,它不包括 Swap 和共享内存。
      共享内存,既包括与其他进程共同使用的真实的共享内存,还包括了加载的动态链接库以及程序的代码段等
      Swap 内存,是指通过 Swap 换出到磁盘的内存。
    第三类 缺页异常 ,系统调用内存分配请求后,并不会立刻为其分配物理内存,而是在请求首次访问时,通过缺页异常来分配。缺页异常又分为下面两种场景。
      可以直接从物理内存中分配时,被称为次缺页异常。
      需要磁盘 I/O 介入(比如 Swap)时,被称为主缺页异常。
    第四类重要指标就是 Swap 的使用情况 ,比如 Swap 的已用空间、剩余空间、换入速度和换出速度等。
      已用空间和剩余空间很好理解,就是字面上的意思,已经使用和没有使用的内存空间。
      换入和换出速度,则表示每秒钟换入和换出内存的大小。

    

    

  

  

      

  

  

Linux性能优化之内存性能统计信息的更多相关文章

  1. Linux性能优化之内存性能调优

    一.根据性能指标找工具 二.根据工具查性能 三.内存优化策略 常见的优化思路有这么几种: 1)最好禁止 Swap.如果必须开启 Swap,降低 swappiness 的值,减少内存回收时 Swap 的 ...

  2. Linux性能优化之内存优化(二)

    前言 不知道大家看完前面一章关于CPU优化,是否受到相应的启发呢?如果遇到任何问题,可以留言和一起探讨这方面的问题.接下来我们介绍一些关于内存方面的知识.内存管理软件包括虚拟内存系统.地址转换.交换. ...

  3. redis性能优化、内存分析及优化

    redis性能优化.内存分析及优化 1.优化网络延时 2.警惕执行时间长的操作 3.优化数据结构.使用正确的算法 4.考虑操作系统和硬件是否影响性能 5.考虑持久化带来的开销 5.1 RDB 全量持久 ...

  4. jvm性能优化及内存分区

     jvm性能优化及内存分区 2012-09-17 15:51:37 分类: Java Some of the default values for Sun JVMs are listed below. ...

  5. Android 性能优化之内存泄漏检测以及内存优化(中)

    https://blog.csdn.net/self_study/article/details/66969064 上篇博客我们写到了 Java/Android 内存的分配以及相关 GC 的详细分析, ...

  6. [Android 性能优化系列]内存之基础篇--Android怎样管理内存

    大家假设喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 原文地 ...

  7. Linux性能优化:CPU性能分析工具--vmstat

    Blog:博客园 个人 目录 参数说明 输出信息说明 procs memory swap io system cpu 示例 vmstat是Virtual Meomory Statistics(虚拟内存 ...

  8. 老李分享:Android性能优化之内存泄漏1

    老李分享:Android性能优化之内存泄漏   前言 对于内存泄漏,我想大家在开发中肯定都遇到过,只不过内存泄漏对我们来说并不是可见的,因为它是在堆中活动,而要想检测程序中是否有内存泄漏的产生,通常我 ...

  9. 微擎开启性能优化里面的性能优化memcache内存优化及数据库读写分离

    http://www.mitusky.com/forum.php?mod=viewthread&tid=3135 [微擎 安装使用] 微擎开启性能优化里面的性能优化memcache内存优化及数 ...

随机推荐

  1. vue iview element-ui兼容IE11浏览器

    首先安装babel-polyfill npm install babel-polyfill --save-dev 入口文件引用,在main.js中引用 import 'babel-polyfill' ...

  2. C语言字幕从外向中间汇聚

    演示数据中多个字符,从两端向中间移动,向中间汇聚 简单,粗暴,先上代码: Sleep()函数属于<windows.h>头文件中. sizeof()函数求右下标:数组内是数字时,求右下标要- ...

  3. 《剑指offer》面试题07. 重建二叉树

    问题描述 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍 ...

  4. 【Android】安卓开发中的布局与事件

    [Android]安卓开发中的布局与事件 1.Android Studio下载配置 非常简单的百度然后点击下载安装就好了.注意的是,本来我是打算使用评价还不错的Genymotion这个软件来充当虚拟机 ...

  5. 系统信号SIGHUP、SIGQUIT、SIGTERM、SIGINT的场景

    SIGHUP:hong up 挂断.本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联.登录Linux时 ...

  6. [Raspberry Pi] 入门使用

    今天开始介绍Raspberry Pi(简称RPi,下同)入门的一些基础知识. 第1部分: 安装RPi 1.1  从 http://www.raspberrypi.org/downloads 下载RPi ...

  7. Cesium参考资源

    Reference resources cesium官网 cesium 下载 cesium官方文档 APIs cesium-workshop github cesium 官方示例 cesium git ...

  8. Cesium源码剖析---Ambient Occlusion(环境光遮蔽)

    Ambient Occlusion简称AO,中文没有太确定的叫法,一般译作环境光遮蔽.百度百科上对AO的解释是这样的:AO是来描绘物体和物体相交或靠近的时候遮挡周围漫反射光线的效果,可以解决或改善漏光 ...

  9. Chrome DevTools 面板全攻略

    李华西,微医云服务团队前端开发工程师,喜欢瞎折腾,典型猫奴 Console 面板 此章节请打开 devtools/console/console.html 一起食用 一方面用来记录页面在执行过程中的信 ...

  10. 你可能不知道的Animation动画技巧与细节

    引言 在web应用中,前端同学在实现动画效果时往往常用的几种方案: css3 transition / animation - 实现过渡动画 setInterval / setTimeout - 通过 ...