内存查看

查看内存是否存在瓶颈,使用top指令看比较麻烦,而free命令更为直观:

[/home/weber#]free
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
[/home/weber#]top
top - :: up days, :, user, load average: 0.02, 0.02, 0.05
Tasks: total, running, sleeping, stopped, zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: total, used, free, buffers
KiB Swap: total, used, free. cached Mem

top工具显示了free工具的第一行所有信息,但真实可用的内存,还需要自己计算才知道; 系统实际可用的内存为free工具输出第二行的free+buffer+cached;也就是第三行的free值191580;关于free命令各个值的详情解读,请参考这篇文章 free 查询可用内存 ;

性能优化的核心是找出系统的瓶颈点,问题找到了,优化的工作也就完成了大半; 这里介绍的性能优化主要从两个层面来介绍:系统层面和程序层面;

3.1. 分析系统瓶颈

系统响应变慢,首先得定位大致的问题出在哪里,是IO瓶颈、CPU瓶颈、内存瓶颈还是程序导致的系统问题;

使用top工具能够比较全面的查看我们关注的点:

$top
top - :: up days, :, user, load average: 0.02, 0.04, 0.00
Tasks: total, running, sleeping, stopped, zombie
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.2%st
Mem: 377672k total, 322332k used, 55340k free, 32592k buffers
Swap: 397308k total, 67192k used, 330116k free, 71900k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
root S 0.0 0.2 :49.40 init
root S 0.0 0.0 :00.00 kthreadd
root S 0.0 0.0 :15.20 ksoftirqd/
root RT S 0.0 0.0 :00.00 migration/
进入交互模式后:
  • 输入M,进程列表按内存使用大小降序排序,便于我们观察最大内存使用者使用有问题(检测内存泄漏问题);
  • 输入P,进程列表按CPU使用大小降序排序,便于我们观察最耗CPU资源的使用者是否有问题;
top第三行显示当前系统的,其中有两个值很关键:
  • %id:空闲CPU时间百分比,如果这个值过低,表明系统CPU存在瓶颈;
  • %wa:等待I/O的CPU时间百分比,如果这个值过高,表明IO存在瓶颈;

3.2. 分析内存瓶颈

查看内存是否存在瓶颈,使用top指令看比较麻烦,而free命令更为直观:

[/home/weber#]free
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
[/home/weber#]top
top - :: up days, :, user, load average: 0.02, 0.02, 0.05
Tasks: total, running, sleeping, stopped, zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: total, used, free, buffers
KiB Swap: total, used, free. cached Mem

top工具显示了free工具的第一行所有信息,但真实可用的内存,还需要自己计算才知道; 系统实际可用的内存为free工具输出第二行的free+buffer+cached;也就是第三行的free值191580;关于free命令各个值的详情解读,请参考这篇文章 free 查询可用内存 ;

如果是因为缺少内存,系统响应变慢很明显,因为这使得系统不停的做换入换出的工作;

进一步的监视内存使用情况,可使用vmstat工具,实时动态监视操作系统的内存和虚拟内存的动态变化。 参考: vmstat 监视内存使用情况 ;

3.3. 分析IO瓶颈

如果IO存在性能瓶颈,top工具中的%wa会偏高;

进一步分析使用iostat工具:

/root$iostat -d -x -k
Linux 2.6.-.el6.x86_64 (colin) // _x86_64_ ( CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.02 7.25 0.04 1.90 0.74 35.47 37.15 0.04 19.13 5.58 1.09
dm- 0.00 0.00 0.04 3.05 0.28 12.18 8.07 0.65 209.01 1.11 0.34
dm- 0.00 0.00 0.02 5.82 0.46 23.26 8.13 0.43 74.33 1.30 0.76
dm- 0.00 0.00 0.00 0.01 0.00 0.02 8.00 0.00 5.41 3.28 0.00
  • 如果%iowait的值过高,表示硬盘存在I/O瓶颈。
  • 如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
  • 如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;
  • 如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。
  • 如果avgqu-sz比较大,也表示有大量io在等待。

更多参数说明请参考 iostat 监视I/O子系统 ;

3.4. 分析进程调用

通过top等工具发现系统性能问题是由某个进程导致的之后,接下来我们就需要分析这个进程;继续 查询问题在哪;

这里我们有两个好用的工具: pstack和pstrace

pstack用来跟踪进程栈,这个命令在排查进程问题时非常有用,比如我们发现一个服务一直处于work状态(如假死状态,好似死循环),使用这个命令就能轻松定位问题所在;可以在一段时间内,多执行几次pstack,若发现代码栈总是停在同一个位置,那个位置就需要重点关注,很可能就是出问题的地方;

示例:查看bash程序进程栈:

/root$iostat -d -x -k
Linux 2.6.-.el6.x86_64 (colin) // _x86_64_ ( CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.02 7.25 0.04 1.90 0.74 35.47 37.15 0.04 19.13 5.58 1.09
dm- 0.00 0.00 0.04 3.05 0.28 12.18 8.07 0.65 209.01 1.11 0.34
dm- 0.00 0.00 0.02 5.82 0.46 23.26 8.13 0.43 74.33 1.30 0.76
dm- 0.00 0.00 0.00 0.01 0.00 0.02 8.00 0.00 5.41 3.28 0.00

而strace用来跟踪进程中的系统调用;这个工具能够动态的跟踪进程执行时的系统调用和所接收的信号。是一个非常有效的检测、指导和调试工具。系统管理员可以通过该命令容易地解决程序问题。

参考: strace 跟踪进程中的系统调用 ;

如果是因为缺少内存,系统响应变慢很明显,因为这使得系统不停的做换入换出的工作;

进一步的监视内存使用情况,可使用vmstat工具,实时动态监视操作系统的内存和虚拟内存的动态变化

转自

3. 性能优化 — Linux Tools Quick Tutorial
http://linuxtools-rst.readthedocs.io/zh_CN/latest/advance/03_optimization.html#gprof

free vmstat查看内存及系统调优【转】的更多相关文章

  1. Linux 系统TCP连接内存大小限制 调优

    系统TCP连接内存大小限制 TCP的每一个连接请求,读写都需要占用系统内存资源,可根据系统配置,对TCP连接数,内存大小,限制调优. 查看系统内存资源 记录内存 详情:cat /proc/meminf ...

  2. Linux系统调优1

    Linux在进行系统调优的时候,首先要考虑整个操作系统的结构,然后针对各个部分进行优化,下面展示一个Linux系统的各个组成部分: 有上图可以看出,我们可以调整的有应用程序,库文件,内核,驱动,还有硬 ...

  3. Linux系统调优相关工具

    一.系统调优概述 系统的运行状况: CPU -> MEM -> DISK*-> NETWORK -> 应用程序调优 分析是否有瓶颈(依据当前应用需求) 调优(把错误的调正确) ...

  4. linux系统调优工具

    系统调优思路 性能优化就是找到系统处理中的瓶颈以及去除这些的过程,性能优化其实是对 OS 各子系统达到一种平衡的定义.具体步骤如下: 1. 系统的运行状况: CPU -> MEM -> D ...

  5. Oracle 系统调优

    一:前言 一:调整初始化参数 1: Oracle 初始化参数分类 2:主要系统调优参数介绍 二:系统全局区 sga 优化 1:调整内存分配 2:调整日志缓冲区 1:查询当前oracle 实例的日志缓冲 ...

  6. Sybase数据库应用系统调优的五大领域

    Sybase数据库应用系统调优的五大领域 2011/3/14/13:49来源:慧聪it网 本 文以“某大型商业银行的网上银行系统”这一很具有典型意义的企业级大型Sybase数据库应用系统为例,涉及了数 ...

  7. 鲲鹏性能优化十板斧(二)——CPU与内存子系统性能调优

    1.1 CPU与内存子系统性能调优简介 调优思路 性能优化的思路如下: l   如果CPU的利用率不高,说明资源没有充分利用,可以通过工具(如strace)查看应用程序阻塞在哪里,一般为磁盘,网络或应 ...

  8. 大数据集群Linux CentOS 7.6 系统调优篇

    大数据集群Linux CentOS 7.6 系统调优篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.设置主机hosts文件 1>.修改主机名 [root@node100 ...

  9. Linux系统调优——CPU(一)

    (1).系统调优思路 性能优化就是找到系统处理中的瓶颈以及去除这些的过程,性能优化其实是对OS 各子系统达到一种平衡的定义.具体步骤如下: 1. 系统的运行状况:  CPU -> MEM  -& ...

随机推荐

  1. Python日志模块简单使用

    def loginfo(info): # create logger logger = logging.getLogger('[cpu and mem]**********') # Set defau ...

  2. fetch API & upload file

    fetch API & upload file https://github.com/github/fetch/issues/89 https://stackoverflow.com/ques ...

  3. NodeList & null

    NodeList & null querySelectorAll & querySelector let arr = document.querySelectorAll(`[data- ...

  4. 【刷题】BZOJ 4289 PA2012 Tax

    Description 给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价.起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边 ...

  5. mysql列类型char,varchar,text,tinytext,mediumtext,longtext的比较与选择

    储存不区分大小写的字符数据 TINYTEXT 最大长度是 255 (2^8 – 1) 个字符. TEXT 最大长度是 65535 (2^16 – 1) 个字符. MEDIUMTEXT 最大长度是 16 ...

  6. 【BZOJ1228】[SDOI2009]E&D(博弈论)

    [BZOJ1228][SDOI2009]E&D(博弈论) 题面 BZOJ 洛谷 题解 这种打表找规律的题目真的不知道可以说什么好啊... #include<iostream> #i ...

  7. APIO模拟赛(HGOI20180909)

    想法:贪心. A.最大高度大的先剪 首先需要知道: 1.每个草最多剪1次 假设有个草剪了2次,显然可以放到最后一次剪得效果和剪2次的效果一样的, 为了少剪那么草最多剪去一次,从而,步数step> ...

  8. 解题:九省联考2018 IIIDX

    题面 我当时在考场上划水的时候好像乱搞搞了20pts,然后发现一堆同届的都写了55pts的贪心=.=??? 那就先说那55pts的贪心吧,这个现在看起来还是非常显然的,就是按题意来每一块是分属一个点的 ...

  9. 51nod 1479 小Y的数论题

    一脸不可做题~~~233333 T<=100000,所以一定要logn出解啦. 但是完全没有头绪*&#……%*&……()……#¥*#@ 题解: 因为2^p+2^p=2^(p+1) ...

  10. 移动端Web页面问题解决方案

    1.安卓浏览器看背景图片,有些设备会模糊. 用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢? 经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显 ...