【Linux】Linux 的高速缓存

   Linux与Win的内存管理不同,linux会尽量缓存内存以提高读写性能,通常叫做Cache Memory。通常使用free 命令查看内存的使用时,free 的值往往比较小!查看系统的 /proc/meminfo 文件,值Cached 就是高速缓存。

[root@rac3 ~]# cat /proc/meminfo 

MemTotal:      4044784 kB

MemFree:        303340 kB

Buffers:         58196 kB

Cached:        3287252 kB

SwapCached:      27792 kB

Active:        1611588 kB

Inactive:      2021116 kB

HighTotal:           0 kB

HighFree:            0 kB

LowTotal:      4044784 kB

LowFree:        303340 kB

SwapTotal:     4192956 kB

SwapFree:      3652160 kB

Dirty:              16 kB

Writeback:           0 kB

AnonPages:      259492 kB

Mapped:         480964 kB

Slab:            62224 kB

PageTables:      23276 kB

NFS_Unstable:        0 kB

Bounce:              0 kB

CommitLimit:   6215348 kB

Committed_AS:  2194196 kB

VmallocTotal: 34359738367 kB

VmallocUsed:    264968 kB

VmallocChunk: 34359472887 kB

HugePages_Total:     0

HugePages_Free:      0

HugePages_Rsvd:      0

Hugepagesize:     2048 kB

使用free 命令查看内存:

[root@rac3 ~]# free 

                   total         used                   free     shared    buffers     cached

Mem:       4044784    3740080     304704          0      56744    3286972

-/+ buffers/cache:     396364    3648420

Swap:      4192956     540900    3652056

其中第一行用全局角度描述系统使用的内存状况:

total       总物理内存 !

used     已使用内存,一般情况这个值会比较大,因为这个值包括了cache+应用程序使用的内存 即是used=buffers+cached 

free        完全未被使用的内存

shared  应用程序共享内存

buffers  缓存,主要用于目录方面,inode值等(ls大目录可看到这个值增加)

cached  缓存,用于已打开的文件!

第二行描述应用程序的内存使用:

-/+ buffers/cache:     396364    3648420

-buffers/cache 396364  前个值表示应用程序使用的内存大小,used减去缓存值 即:-buffers/cache=used-buffers-cached

+buffers/cache 3648420 后个值表示所有可供应用程序使用的内存大小,free加上缓存值 即: +buffers/cache=free+buffers+cached

第三行表示swap的使用:

used——已使用

free——未使用

       执行free 命令的结果中,used数值偏大,free数值偏小,free的值总是比较小是因为每当操作文件的时候,Linux都会尽可能的把文件缓存到内存里,当再次访问此数据的时候,可以直接从内存中取数据,避免磁盘操作!所以cached的数值非常的大,cache 部分内存是可回收的,操作系统会按照LRU算法淘汰冷数据。buffers也是可回收的,buffers和cache的区别,“Cache和Buffer是两个不同的概念,简单的说,Cache是加速“读”,而buffer是缓冲“写”,前者解决读的问题,保存从磁盘上读出的数据,后者是解决写的问题,保存即将要写入到磁盘上的数据。”

时间: 2024-10-23 10:23:10

【Linux】Linux 的高速缓存的相关文章

[linux]linux过滤日志奇偶数行

sed -n -e 'n' -e 'p' -i tmp.txt 偶数 实践过  去掉文件里的重复行: sort file |uniq  下面就把这些方法总结下来. along@along-laptop:~/code/shell$ cat file 1 2 3 4 5 6 7  awk实现:  一: 1,awk 'NR%2==1' file 2,awk 'NR%2==0' file  二:(这是直接将偶数行和奇数行分别打印到了file2和file1中,这种方法有缺陷就是在file2中始终会打印  

[Linux]Linux printf 输出重定向【转】

转自:http://www.cnblogs.com/aaronLinux/p/6765145.html?utm_source=itdadao&utm_medium=referral 方法一 #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <sys/stat.h> #include <fcntl.h> int main() { fflush(stdout

linux 烧写(1)

第一部分: 一.BootLoader的概念    BootLoader是系统加电启运行的第一段软件代码.回忆一下PC的体系结构我们可以知道,PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的引导程序一起组成.BIOS在完成硬件检测和资源分配后,将硬盘MBR中的引导程序读到系统的RAM中,然后将控制权交给引导程序.引导程序的主要运行任务就是将内核映象从硬盘上读到RAM中 然后跳转到内核的入口点去运行,也即开始启动操作系统.     而在嵌入式系统中,通常并没有像BIOS

《Linux内核设计与实现》读书笔记(十二)- 内存管理【转】

转自:http://www.cnblogs.com/wang_yb/archive/2013/05/23/3095907.html 内核的内存使用不像用户空间那样随意,内核的内存出现错误时也只有靠自己来解决(用户空间的内存错误可以抛给内核来解决). 所有内核的内存管理必须要简洁而且高效. 主要内容: 内存的管理单元 获取内存的方法 获取高端内存 内核内存的分配方式 总结   1. 内存的管理单元 内存最基本的管理单元是页,同时按照内存地址的大小,大致分为3个区.   1.1 页 页的大小与体系结

Linux 系统裁剪笔记 4 (内核配置选项及删改)

在menuconfig中配置,可以对进行Linux内核配置选项及删改.本文介绍详细配置方法.第一部分:全部删除Code maturity level options ---> 代码成熟等级选项[]Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.不选.第二部分 :除以下选项,其它全部删除General setup-〉System V IPC (IPC:Inter

2013年关于Linux的5大猜想

Linux已经在世界最快.最强的超级计算机名单中占据了主导地位,现在名列前10,而且在前500强系统中占据了93.8%的操作系统份额,相比两年前的91%增长了不少.基于这些顶级系统背后的强大技术,Linux不会放慢它的脚步,当然在2013年也不会. 云技术继续占主导地位 混合计算中新的企业相关性 继续在高性能计算机中占主导地位 日常生活中更多的Linux Linux桌面发行版会进一步稳中求胜.  

新手认识Linux系统

典型的 Linux 发行版包含 Linux 内核,但还包含许多应用程序和工具.总的说来,Linux 分发版中出现的许多系统级别和用户级别的工具都来自自由软件基金会(Free Software Foundation)的 GNU 项目(GNU 是"GNU's Not UNIX"的缩写). 什么是 Linux? 用最简单的话说,Linux 是一个操作系统.它是一位赫尔辛基大学学生 Linus Torvalds(Linux 是 Linus's UNIX 的缩写)在 1991 年 10 月创造的

Unix与Linux的区别和联系

区别和联系 Linux和UNIX的最大的区别是,前者是开发源代码的自由软件,而后者是对源代码实行知识产权保护的传统商业软件.这应该是他们最大的不同,这种不同体现在用户对前者有很高的自主权,而对后者却只能去被动的适应:这种不同还表现在前者的开发是处在一个完全开放的环境之中,而后者的开发完全是处在一个黑箱之中,只有相关的开发人员才能够接触的产品的原型. Linux 的源头要追溯到最古老的UNIX.1969年,Bell实验室的Ken Thompson开始利用一台闲置的 PDP-7计算机开发了一种多用户

一个稳定高效的Linux虚拟主机业务完整解决方案

方案背景 在互联网信息高速发展的今天,IDC行业的发展更是势如破竹,因而更多的人亟待简单易行的IDC解决方案.为解决这一个IDC行业普遍关注的问题,我们推出此解决方案以供参考. 整体目标 构建一个完全可运行,实施简单,维护方便且安全稳定的主机运营平台. 需求分析 1. 基础设施 由于此方案是主机运营平台的解决方案,所以在基础设施上我们需要有一台或多台物理服务器.对于物理服务器的配置不做硬性要求,可根据需要自行选择,但要能够保证实现最基本的运营需求. 2. 系统要求 (1)操作系统 在基础设施架构

Linux下的软件开发

1.如何升级.编译内核? 如果你不想改变内核的版本,直接转到以下第四步. 1)在任何一个子目录下(但通常是在/usr/src/下)untar解开新的内核源程序: tar xvfz linux-x.x.xx.tar.gz (例如linux-2.0.35.tar.gz) 或者是打补丁(patch): gzip -cd patch-2.0.35.gz | patch -p0  打完补丁直接跳到第四步 2)rm /usr/src/linux 这通常是一个符号连接. 3)在 /usr/src/ 下建立一个