内存性能指标

内存基础概念

先执行一下 top 命令,看结果中关于内存的相关部分

# top

其中的 VIRTRESSWAP 都是什么呢?

分别是下面的3个概念:

物理内存 Resident - RES

实际的内存空间 RAM

交换区 Swapped - SWAP

当物理内存不足时,操作系统会把内存中不常用的页换出到磁盘空间

当被换出的页需要被访问时,再换入到物理内存

所以交换区就是用来临时存放内存中不常用的内容的,感觉就想内存的一个小仓库

虚拟内存 Virtual - VIRT

虚拟内存 = 物理内存 + 交换区

程序操作内存时,实际就是操作虚拟内存中的地址,操作系统再负责映射到物理地址,或者交换区

快速了解内存状态

# free

主要指标

total - 物理内存总大小

used - 已经使用的物理内存大小

free - 空闲的物理内存

shared - 多个进程共享内存的大小

buffers/cached - 做为缓存的内存大小

swap - 交互空间的使用状态

关于内存的几个常见问题:

1、空闲空间少,是不是内存不够了?

其实linux中空闲的物理空间经常是很少的,和linux使用内存的思路有关

linux会尽量提高内存使用率,经常会把磁盘上的内容缓存到内存,用来加速

linux认为内存闲着也是闲着,还不如拿来做缓存

当内存不足时,linux就会释放缓存部分,让给真正需要的程序使用

2、buffer 和 cache 是什么区别?

buffer 缓存的是磁盘文件的元数据,例如文件属性、目录结构等等

cache 缓存的是真正的文件内容

3、如何判断内存真正不足?

内存不足主要有2个明显的表现

(1)持续的内存换入换出

(2)较多的主缺页中断

主缺页中断的概念:

缺页中断包含主/次缺页中断

次缺页中断,是在内存中可以找到目标页

主缺页中断,是在内存中找不到,需要到磁盘中找

所以较多的主缺页中断意味着较多的访问磁盘

可以通过 sar 命令查看指标

# sar -B 1 3

pgpgin/pgpgout 就是内存的换入换出

fault 次缺页中断

majflt 主缺页中断

vmstat 命令也可以查看一些内存信息

# vmstat 1 5

memory 部分是内存信息

si/so 是交换区的换入换出

补充技巧

执行top命令后,通常不会显示SWAP列,需要自己指定显示

在top的界面中点击‘f’,进入列编辑模式,按下字母‘p’, 会看到SWAP列被选中,然后按回车键返回top界面,SWAP列便显示出来了

CPU 性能指标

CPU性能指标可以从两方面来看:静态动态

静态指标主要包括:

CPU的型号、主频、核数、cache等

动态指标主要包括:

CPU的平均负载状况、CPU的使用率、最耗CPU的进程有哪些?

查看静态信息:

在服务器运行过程中,一般我们比较少关注CPU的静态信息,但我们刚开始拿到一台服务器时,就会很关心静态信息了

好根据这些信息判断分配给这台服务器多大的压力等

通过 /proc/cpuinfo 文件来查看

查看动态信息:

服务器变慢时,通常会先查看下CPU的负载是否过高,如果高了,再看下是哪些进程最耗费CPU,CPU使用率也是重要指标,让我们知道CPU消耗在哪些部分

01、CPU负载状况

通过负载信息能够直观的了解到CPU的压力状况,linux会给出最近1分钟、5分钟、15分钟的平均负载值

可以通过 top 命令查看

uptime 命令更加简洁直观

查看到负载值后,怎么判断CPU的负载是否过高呢?

有一个经验型的标准:

CPU负载上限值 = CPU的核数 * 4

例如是4核CPU,那么CPU的负载最好不要超过16,否则,CPU的压力就很大了

好比一个超市,有4个收银台,如果有16个顾客在排队结账,每个窗口4个人,顾客可以接受,收银员也不会感觉压力很大

02、耗费CPU的主要进程

发现CPU负载过高后,我们肯定想知道是谁把CPU搞的这么忙


通过 top 命令查看

ps 命令根据CPU使用量对进程排序

# ps -aux --sort -pcpu | less

03、CPU使用率

通过 top 命令查看

还可以查看每个核的使用率状况,执行 top 后按数字1键,就可以列出每个cpu的使用率

其中有几个主要信息项

id - CPU的空闲度

us - 用户进程对CPU的使用率

sy - 系统进程对CPU的使用率
 
wa - IO等待情况

st - 如果系统中运行了虚拟机,此项显示虚机使用CPU的情况

Linux内存性能指标、CPU性能指标的更多相关文章

  1. 一键获取linux内存、cpu、磁盘IO等信息脚本编写,及其原理详解

    更多linux知识,请关注公众号:一口Linux 一.脚本 今天主要分享一个shell脚本,用来获取linux系统CPU.内存.磁盘IO等信息. #!/bin/bash # 获取要监控的本地服务器IP ...

  2. 查看linux内存、cpu

    1.查看cpu数 多核cpu,包括物理多核和逻辑多核,一台机器可能有多个cpu,每个cpu可能有多核的,多个可能包括物理多核和逻辑多核. /proc/cpuinfo 文件里记录了这些信息,以下是一个核 ...

  3. linux 内存,cpu占用最高进程查询

    1. 可以使用一下命令查使用内存最多的10个进程 ps -aux | sort -k4nr | head -n 10 2. 可以使用一下命令查使用CPU最多的10个进程 ps -aux | sort ...

  4. 【转载】Linux下查看CPU、内存占用率

    不错的文章(linux系统性能监控--CPU利用率):https://blog.csdn.net/ctthuangcheng/article/details/52795477 在linux的系统维护中 ...

  5. Linux内存、性能诊断中vmstat命令的详解

    vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存 交换情况,IO读写情况.相比top,通过vmstat可以看到 ...

  6. 常用Linux 服务器命令--各种性能指标命令

    如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个专业的 Linux 系统管理员. 监控命令## iostat### iostat命令用来显示存储系统的 ...

  7. linux性能优化cpu-01性能指标

    学习性能优化的第一步,一定要了解性能指标. 性能指标是什么? 当我们看到性能指标时一定先想到“高并发”.“响应快”,这个两个指标也对应着性能优化的两个核心指标—— “吞吐率”和“低延迟”. 这两个指标 ...

  8. 查看linux/AIX系统内存及CPU占用百分比

    1.linux下查看CPU及内存占用情况 查看内存占用百分比: [root@rusky ~]# free -m | sed -n '2p' | awk '{print "used mem i ...

  9. CPU内存管理和linux内存分页机制

    一.概念 物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应.——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理 ...

随机推荐

  1. 在 Ubuntu 16.04 上安装 LEMP 环境之图文向导

    导读 LEMP 是个缩写,代表一组软件包(注解 ① L:Linux OS,E:Nginx 网络服务器,M:MySQL/MariaDB 数据库和 P:PHP 服务端动态编程语言),它被用来搭建动态的网络 ...

  2. Unix操作系统中UUCP知识详细讲解

    导读 Unix操作系统有很多值得学习的地方,这里我们主要介绍Unix操作系统中的uucp,大家一起来学习下吧!UUCP系统是一组程序,完成文件传输,执行系统之间的命令,维护系统使用情况的统计,保护安全 ...

  3. cocos2d-x 内存管理浅析

    Cocos2d-x用create创建对象, 这个方法已经被引擎封装成一个宏定义了:CREATE_FUNC, 下面是这个宏定义的实现: #define CREATE_FUNC(__TYPE__) \   ...

  4. Java BigDecimal详解

    借用<Effactive Java>这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供 较为精确的快速近 ...

  5. DICOM医学图像窗口变换的加速算法

    详见:http://pan.baidu.com/s/1gfFLbJ9 DICOM医学图像窗口变换的加速算法* 张尤赛 ,陈福民 ( 同济大学计算中心, 上海 200092 ) (华东船舶工业学院电子与 ...

  6. poj 1700

    http://poj.org/problem?id=1700 题目大意就是一条船,有N个人需要过河,求N个人最短过河的时间 #include <stdio.h> int main() { ...

  7. Shell数组相关操作

    参考:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html 创建数组 a=( ) 获得数组长度 ${#a[@]} #${#变量} ...

  8. dubbo main方法启动

    public static void main(String[] args) { com.alibaba.dubbo.container.Main.main(args); } 以上就可以简单本地启动了

  9. 使用logrotate管理nginx日志文件

    本文转载自:http://linux008.blog.51cto.com/2837805/555829 描述:linux日志文件如果不定期清理,会填满整个磁盘.这样会很危险,因此日志管理是系统管理员日 ...

  10. 解读Unity中的CG编写Shader系列五(理论知识)

    转自 http://www.itnose.net/detail/6098474.html 经过前面的系列文章中的三个例子,尽管代码简单,但是我想应该还有些地方没有100%弄明白,我们现在得回过头来补充 ...