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查看

相关推荐