系统内存
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 ,分别表示读和写的缓存命中率。
标签:缓存,MB,使用,hcache,调优,内存,Linux,go
来源: https://www.cnblogs.com/-wenli/p/13768822.html