本文共 1285 字,大约阅读时间需要 4 分钟。
buff: 即写入磁盘时,先保存到磁盘缓冲区(buffer),然后再写入到磁盘。
cache: 即读磁盘时,数据从磁盘读出后,暂留在缓冲区(cache),为后续程序的使用做准备。操作系统的角度: 这块内存确实被操作系统使用了。
用户角度: 如果用户要使用,这块内存是可以很快被回收而被用户空间程序使用,因此从用户角度而言这块内存应被划为空闲状态。这是Linux一种非常优秀的设计,目的就是为了提升磁盘IO的性能,从低速的块设备上读取的数据会暂时保存在内存中,即使数据在当时已经不再需要了,但在应用程序下一次访问该数据时,它可以从内存中直接读取,绕开了低速的块设备,从而提高系统的整体性能。
$echo 0 > /proc/sys/vm/drop_caches #不释放缓存$echo 1 > /proc/sys/vm/drop_caches #表示清除pagecache。$echo 2 > /proc/sys/vm/drop_caches #表示清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。$echo 3 > /proc/sys/vm/drop_caches #表示清除pagecache和slab分配器中的缓存对象。
sync
使用find查找文件:keystone-error.log
#首次查询$ time find / -name keystone-error.log/var/log/httpd/keystone-error.logreal 0m1.940suser 0m0.162ssys 0m0.875s#二次查询(此时数据以及被缓存了)$ time find / -name keystone-error.log/var/log/httpd/keystone-error.logreal 0m0.598suser 0m0.233ssys 0m0.362s#清除缓存$ echo 3 > /proc/sys/vm/drop_caches $ time find / -name keystone-error.log/var/log/httpd/keystone-error.logreal 0m1.160suser 0m0.205ssys 0m0.795s
由上面的小测试可以看出,在做重复的操作,或者打开重复的文件时,cache是对性能有很大的提升
转载地址:http://lcwl.baihongyu.com/