linux 内存管理
使用free命令查看内存:
free -h
free-h #人性化输出显示
说明:
totalusedfreesharedbufferscached
Mem:996M521M474M56K35M118M
-/+buffers/cache:368M628M
Swap:1.5G234M1.2G
- total:内存总数
- used:已经使用内存数
- free:完全空闲内存
- shared:多个进程共享的内存
- buffers:用于块设备数据缓冲,记录文件系统metadata(目录,权限,属性等)
- cached:用于文件内容的缓冲
-/+buffers/cache:基于应用角度考虑(计算已使用内存时减去buffers/cache,计算可使用内存时加上buffers/cache)的内存情况,也可理解为真实的内存使用情况.
(随着使用,比如find,cat命令会使cached增加)
buffers/cached手动释放
#sync
#echo1>/proc/sys/vm/drop_caches
echo2>/proc/sys/vm/drop_caches
echo3>/proc/sys/vm/drop_caches
cache释放:
Tofreepagecache:
echo1>/proc/sys/vm/drop_caches
Tofreedentriesandinodes:
echo2>/proc/sys/vm/drop_caches
Tofreepagecache,dentriesandinodes:
echo3>/proc/sys/vm/drop_caches
说明,释放前最好sync一下,防止丢数据。
因为LINUX的内核机制,一般情况下不需要特意去释放已经使用的cache。这些cache起来的内容可以增加文件以及的读写速度。
$sync
$sudosysctl-wvm.drop_caches=3
$sudosysctl-wvm.drop_caches=0
#recoverydrop_caches
操作后可以通过sudosysctl-a|grepdrop_caches查看是否生效。
修改/proc/sys/vm/vfs_cache_pressure,调整清理inode/dentrycaches的优先级(默认为100),LinuxInsight中有相关的解释:
Atthedefaultvalueofvfs_cache_pressure=100thekernelwillattempttoreclaimdentriesandinodesata“fair”ratewithrespecttopagecacheandswapcachereclaim.Decreasingvfs_cache_pressurecausesthekerneltoprefertoretaindentryandinodecaches.Increasingvfs_cache_pressurebeyond100causesthekerneltoprefertoreclaimdentriesandinodes.
============
另外,可通过top命令,shift+M按内存排序后,观察系统中使用内存最大的进程情况
通过cat/proc/meminfo查看