zoukankan      html  css  js  c++  java
  • Linux 性能调优内存篇:工具命令篇

    系统内存

    free

    free -mh
    • 第一列,total 是总内存大小;
    • 第二列,used 是已使用内存的大小,包含了共享内存;
    • 第三列,free 是未使用内存的大小;
    • 第四列,shared 是共享内存的大小;
    • 第五列,buff/cache 是缓冲区和缓存的大小;
    • 最后一列,available 是新进程可用内存的大小。

    注意:

    1、total = used + free + buff/cache
    2、available:vailable 不仅包含未使用内存,还包括了可回收的缓存(cache),所以一般会比未使用内存更大。不过,并不是所有缓存都可以回收,因为有些缓存可能正在使用中。

     vmstat

    当使用free查看buff/cache使用的内存后,再使用vmstat查看详细的使用量。

    hcache

    当我们想具体查看cache被哪些进程所使用就需要使用到hcache。

    hcache要求go的版本不得低于1.4.本次使用go1.7

    先安装go环境

    mkdir  /usr/local/go
    cd
    /usr/local/go
    wget https://dl.google.com/go/go1.7.6.linux-amd64.tar.gz

    vi /etc/profile export GOROOT=/usr/local/go export PATH=/usr/local/go/bin:$PATH source /etc/profile

    安装hcache

    wget https://silenceshell-1255345740.cos.ap-shanghai.myqcloud.com/hcache
    chmod +x hcache
    mv hcache /usr/local/bin/

    查看使用缓存最多的3个文件

    hcache -top 3

    查看使用缓存最多的3个文件(文件一列指显示文件名)

    hcache --top 3 --bname

    查看指定进程的缓存使用

    hcache -pid 1397

    进程内存

    top

    • VIRT 是进程虚拟内存的大小,只要是进程申请过的内存,即便还没有真正分配物理内存,也会计算在内。
    • RES 是常驻内存的大小,也就是进程实际使用的物理内存大小,但不包括 Swap 和共享内存。
    • SHR 是共享内存的大小,比如与其他进程共同使用的共享内存、加载的动态链接库以及程序的代码段等。
    • %MEM 是进程使用物理内存占系统总内存的百分比。

    系统缓存的命中率

    cachestat

    cachestat 1 3 
    TOTAL MISSES HITS DIRTIES BUFFERS_MB CACHED_MB
    2 0 2 1 17 279

    2 0 2 1 17 279

    2 0 2 1 17 279
    • TOTAL ,表示总的 I/O 次数;
    • MISSES ,表示缓存未命中的次数;
    • HITS ,表示缓存命中的次数;
    • DIRTIES, 表示新增到缓存中的脏页数;
    • BUFFERS_MB 表示 Buffers 的大小,以 MB 为单位;
    • CACHED_MB 表示 Cache 的大小,以 MB 为单位。

    进程缓存的命中率

    cachetop

    cachetop11:58:50 Buffers MB: 258 / Cached MB: 347 / Sort: HITS / Order: ascending
    PID UID CMD HITS MISSES DIRTIES READ_HIT% WRITE_HIT%
    13029 root python 1 0 0 100.0% 0.0%

    默认按照缓存的命中次数(HITS)排序,展示了每个进程的缓存命中情况。这里的 HITS、MISSES 和 DIRTIES ,跟 cachestat 里的含义一样,分别代表间隔时间内的缓存命中次数、未命中次数以及新增到缓存中的脏页数。

    而 READ_HIT 和 WRITE_HIT ,分别表示读和写的缓存命中率。

    SWAP

    设置swap大小

    swap的值都是安装系统的时候设置好的,一般设置为内存的两倍大小。使用过程中发现swap值过小只能添加。
    用free -m 命令查看当前swap大小

    使用下面的命令创建2G的空间
    dd if=/dev/zero of=/var/swap bs=1024 count=2048000
    if 表示infile,of表示outfile,bs=1024代表增加的模块大小,count=2048000代表2048000个模块,也就是2G空间
    将目的文件设置为swap分区文件
    mkswap /var/swap
    激活swap,立即启用交换分区文件
    mkswap -f /var/swap
    free -m查看swap已经增加了,但这只是临时性的,如果机器重启会失效
    vi /etc/fstab
    最后一行添加
    /var/swap swap swap defaults 0 0
    重启或free -m测试 swap添加成功

    下面是实战命令:
    [root@JD ~]# free -m
    total used free shared buff/cache available
    Mem: 3789 130 3401 8 258 3432
    Swap: 0 0 0
    [root@JD ~]# dd if=/dev/zero of=/var/swap bs=1024 count=2048000
    2048000+0 records in
    2048000+0 records out
    2097152000 bytes (2.1 GB) copied, 19.4374 s, 108 MB/s
    [root@JD ~]# mkswap /var/swap
    Setting up swapspace version 1, size = 2047996 KiB
    no label, UUID=a23c9dd9-87af-4517-8d70-bff7c714c18f
    [root@JD ~]# swapon /var/swap
    swapon: /var/swap: insecure permissions 0644, 0600 suggested.
    [root@JD ~]# cat /proc/swaps
    Filename Type Size Used Priority
    /var/swap file 2047996 0 -2
    [root@JD ~]# vim /etc/fstab
    -bash: vim: command not found
    让上面命令在重启后仍然生效需要以下操作:
    [root@JD ~]# vi /etc/fstab
    最后一行添加
    /var/swap swap swap defaults 0 0
    再查看内存,已经设置了swap了,执行上面命令导致buff/cache里面多了不少内存,过段时间会减少,或者直接重启可以清掉
    [root@JD ~]# free -m
    total used free shared buff/cache available
    Mem: 3789 154 1286 8 2348 3379
    Swap: 1999 0 1999

    reboot重启后再查看结果如下:
    [root@JD ~]# free -m
    total used free shared buff/cache available
    Mem: 3789 146 3411 8 232 3414
    Swap: 1999 0 1999

    如果不再需要swap,可以清理该分区:
    [root@mysql01 var]# swapoff /var/swap

  • 相关阅读:
    反转链表 16
    CodeForces 701A Cards
    hdu 1087 Super Jumping! Jumping! Jumping!(动态规划)
    hdu 1241 Oil Deposits(水一发,自我的DFS)
    CodeForces 703B(容斥定理)
    poj 1067 取石子游戏(威佐夫博奕(Wythoff Game))
    ACM 马拦过河卒(动态规划)
    hdu 1005 Number Sequence
    51nod 1170 1770 数数字(数学技巧)
    hdu 2160 母猪的故事(睡前随机水一发)(斐波那契数列)
  • 原文地址:https://www.cnblogs.com/-wenli/p/13768822.html
Copyright © 2011-2022 走看看