hdfs 中 CentOS,清理缓存(drop_caches)规划

 

       hadoop 在检查时一致看到缓存很高,也不清楚怎样应用,困惑了好长时间。经常分析Cache Memory(缓存内存)主要是这个原因,还有个疑问这么高也不清楚用了多少。后来检查hdfs 是否有类似功能,启用写入后清理缓存dfs.datanode.drop.cache.behind.writes和启用读取后清理缓存dfs.datanode.drop.cache.behind.虽然这个方面内存会自动释放,但是特别是对应大数据这样文件系统,在规划hadoop 节点内存时最好留有一定的内存作为这个方面内存。

读写文件时,Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这就是Cache Memory(缓存内存)。
即使程序运行结束后,Cache Memory也不会自动释放。这就会导致程序频繁读写文件后,可用物理内存会很少。
其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以不必担心没有内存可用。
如果你希望手动去释放Cache Memory(缓存内存)的话也是有办法的。

cat /proc/sys/vm/drop_caches
0 //默认是0;1-清空页缓存;2-清空inode和目录树缓存;3-清空所有缓存

大多数GNU Linux都是默认开启了缓存机制的,查看配置文件 cat /proc/sys/vm/drop_caches 若为0的话,则表示开启了缓存机制的,这种机制在一直运行某个服务的时候非常有效,便于服务本身的快速读取,而作为桌面用户来说,打开的程序并不那么单一,所以桌面用户还是建议设置此配置文件为1,及时对系统缓存进行清理,释放空间以供其它程序使用。

[root@bak ~]# sync //注意:在清空缓存之前使用sync命令同步数据到磁盘

查看方法一:

有时候你会发现没有什么程序在运行,但是使用top或free命令看到可用内存free项会很少,此时查看系统的 /proc/meminfo 文件,会发现有一项 Cached Memory:

输入cat /proc/meminfo查看:

MemTotal: 16425996 kB
MemFree: 5698808 kB
Buffers: 380904 kB
Cached: 9389356 kB
SwapCached: 212 kB
Active: 6569200 kB
Inactive: 3725364 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 16425996 kB
LowFree: 5698808 kB
SwapTotal: 8273464 kB
SwapFree: 8273252 kB
Dirty: 980 kB
Writeback: 0 kB
AnonPages: 524108 kB
Mapped: 24568 kB
Slab: 381776 kB
PageTables: 7496 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 16486460 kB
Committed_AS: 2143856 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 267656 kB
VmallocChunk: 34359469303 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB

查看方法二:


[root@bak ~]# free -m
             total       used       free     shared    buffers     cached
Mem:         15898       3029      12869          0        191       1064
-/+ buffers/cache:       1772      14125
Swap:        31999          0      31999
[root@bak ~]# echo 3 > /proc/sys/vm/drop_caches
[root@bak ~]# free -m //发现缓存明显减少了
             total       used       free     shared    buffers     cached
Mem:         15898       1770      14128          0          1         30
-/+ buffers/cache:       1738      14160
Swap:        31999          0      31999

处理方法

清理缓存脚本:

#!bin/bash

sync

sync

echo 3 > /proc/sys/vm/drop_caches

 

发布了86 篇原创文章 · 获赞 267 · 访问量 177万+

猜你喜欢

转载自blog.csdn.net/javastart/article/details/104814641
今日推荐