Linux内存使用的体会(原创) - Linux 高级应用讨论区/原创精华帖 - - ChinaUnix.net

来源:百度文库 编辑:神马文学网 时间:2024/05/23 13:49:35

注册时间: 2002-10-30
最后登录: 2005-09-27
帖子总数:128
精华帖子: 0
原创精华:1
在线状态: ...离线...
发表于: 2005-09-21 23:45    发表主题: Linux内存使用的体会(原创)
今天因为要解释系统中可用内存的大小,用google看了半天,还有在CU上找了关天,竞然没有发现有比较好的章,估计很多人都没有注意到,懂了以后又没有整理出来。
在CU上看了很多文章说什么memory leak和linux内存管理不好,事实都是因为不懂linux的内存管理引起的误会。
晚上我把这几天看到,跟自已的一些想法,实验总结出来,供大家参考,如果有什么错误的时候请直接指出来,同时感谢wiki论坛不知名的作者以及他写的FAQ Linux Memory Management。
最后进行编辑的是 nonameboy on 2005-09-22 01:04, 总计第 2 次编辑
返回页首

nonameboy
圣骑士

注册时间: 2002-10-30
最后登录: 2005-09-27
帖子总数:128
精华帖子: 0
原创精华:1
在线状态: ...离线...
发表于: 2005-09-21 23:59    发表主题:
Linux的内存管理,实际上跟windows的内存管理有很相像的地方,都是用虚拟内存这个的概念,说到这里不得不骂MS,为什么在很多时候还有很大的物理内存的时候,却还是用到了pagefile. 所以才经常要跟一帮人吵着说Pagefile的大小,以及如何分配这个问题,在Linux大家就不用再吵什么swap大小的问题,我个人认为,swap设个512M已经足够了,如果你问说512M的SWAP不够用怎么办?只能说大哥你还是加内存吧,要不就检查你的应用,是不是真的出现了memory leak.
夜也深了,就不再说废话了。
在Linux下查看内存我们一般用command free
[root@nonamelinux ~]# free
total       used       free     shared    buffers     cached
Mem:    386024     377116    8908      0      21280     155468
-/+ buffers/cache:     200368    185656
Swap:    393552        0      393552
下面是对这些数值的解释:
第二行(mem):
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第四行就不多解释了。
区别:
第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。
这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是8908KB,已用内存是377116KB,其中包括,内核(OS)使用+Application(X,oracle,etc)使用的+buffers+cached.
第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached.
如上例:
185656=8908+21280+155468
接下来解释什么时候内存会被交换,以及按什么方交换。
当可用内存少于额定值的时候,就会开会进行交换.
如何看额定值(RHEL4.0):
#cat /proc/meminfo
交换将通过三个途径来减少系统中使用的物理页面的个数:
1.减少缓冲与页面cache的大小,
2.将系统V类型的内存页面交换出去,
3.换出或者丢弃页面。(Application 占用的内存页,也就是物理内存不足)。
事实上,少量地使用swap是不是影响到系统性能的。
返回页首

nonameboy
圣骑士

注册时间: 2002-10-30
最后登录: 2005-09-27
帖子总数:128
精华帖子: 0
原创精华:1
在线状态: ...离线...
发表于: 2005-09-22 00:54    发表主题:
下面是buffers与cached的区别。
buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages.
cached是用来给文件做缓冲。
那就是说:buffers是用来存储,目录里面有什么内容,权限等等。
而cached直接用来记忆我们打开的文件,如果你想知道他是不是真的生效,你可以试一下,先后执行两次命令#man X ,你就可以明显的感觉到第二次的开打的速度快很多。
实验:在一台没有什么应用的机器上做会看得比较明显。记得实验只能做一次,如果想多做请换一个文件名。
#free
#man X
#free
#man X
#free
你可以先后比较一下free后显示buffers的大小。
另一个实验:
#free
#ls /dev
#free
你比较一下两个的大小,当然这个buffers随时都在增加,但你有ls过的话,增加的速度会变得快,这个就是buffers/chached的区别。
返回页首

platinum
版主 - 大法师


注册时间: 2002-11-02
最后登录: 2005-09-27
帖子总数:10704
精华帖子:4
原创精华:13
来自: 北京永外
BLOG主页:进入
在线状态: ...离线...
发表于: 2005-09-22 09:54    发表主题:
鼓励这种自己探索的精神,鼓励原创
_________________
【共同祝愿 metor78(馒头) 早日康复 】
http://bbs.chinaunix.net/forum/viewtopic.php?t=606785
返回页首

nntp
精灵

注册时间: 2003-01-15
最后登录: 2005-09-21
帖子总数:244
精华帖子: 0
原创精华: 0
BLOG主页:进入
在线状态: ...离线...
发表于: 2005-09-22 11:59    发表主题:
pretty good post and pretty good attitude. Keep moving on guy !
_________________
_______________________________
"我不是英雄,但我曾经和英雄们一起战斗过..."
返回页首

wolfg  
版主 - 精灵使


注册时间: 2003-08-25
最后登录: 2005-09-27
帖子总数:3072
精华帖子:6
原创精华:9
来自: 梨树
BLOG主页:进入
在线状态: ...离线...
发表于: 2005-09-22 13:45    发表主题:
支持。
俺把这个补充上来
http://gentoo-wiki.com/FAQ_Linux_Memory_Management
呵呵,Gentoo 的 Wiki啊
相关的Gentoo论坛里的帖子
http://forums.gentoo.org/viewtopic.php?p=1155852
http://forums.gentoo.org/viewtopic.php?p=1256752
_________________
I likeGentoo Linux!
Gentoo官方中文论坛
http://forums.gentoo.org/viewforum.php?f=50
返回页首

nonameboy
圣骑士

注册时间: 2002-10-30
最后登录: 2005-09-27
帖子总数:128
精华帖子: 0
原创精华:1
在线状态: ...离线...
发表于: 2005-09-22 16:19    发表主题:
感觉那个论坛跟CU很像.
不过好像计论会比较深入,做得也比较细,干脆以后去那个论坛算了.
试一下自已用E文写一些文档看能不能得精.哈哈..
返回页首

tearboy
骑士


注册时间: 2003-09-13
最后登录: 2005-09-20
帖子总数:75
精华帖子: 0
原创精华: 0
BLOG主页:进入
在线状态: ...保密...
发表于: 2005-09-22 18:46    发表主题:
谢谢指教,偶有明白点了。
返回页首

bingosek
天使


注册时间: 2004-10-05
最后登录: 2005-09-27
帖子总数:1336
精华帖子: 0
原创精华: 0
BLOG主页:进入
在线状态: ...保密...
发表于: 2005-09-23 01:09    发表主题:
wolfg 写到:
支持。
俺把这个补充上来
http://gentoo-wiki.com/FAQ_Linux_Memory_Management
呵呵,Gentoo 的 Wiki啊
相关的Gentoo论坛里的帖子
http://forums.gentoo.org/viewtopic.php?p=1155852
http://fo..........
恩,这个是好文章
_________________
FreeBSD菜菜鸟
返回页首

dingyi129  
精灵王


注册时间: 2004-07-08
最后登录: 2005-09-27
帖子总数:260
精华帖子: 0
原创精华: 0
来自: 大连
BLOG主页:进入
在线状态: ...在线...
发表于: 2005-09-23 03:04    发表主题:
支持!
_xyz
Linux内存使用的体会(原创) - Linux 高级应用讨论区/原创精华帖 - - ChinaUnix.net Linux内存使用的体会(原创) 救命啊,关于企业linux as4 集群应用架构的问题讨论。! - Linux 高级应用讨论区 - - ChinaUnix.net 这个iptables用起来很不错!大家分享 - Linux讨论区/精华帖 - - ChinaUnix.net 在VMware5.0环境下编译内核(kernel2.6.13)全过程 - Linux 高级应用讨论区/保留帖 - - ChinaUnix.net - linux讨论区/保留帖 - - chinaunix.net [原创] Linux中/proc目录下文件详解 - ChinaUnix.net 做HP-UX技术多年的感悟:IT人士之成功之6大步骤 - HP-UX讨论区/原创精华帖 - - ChinaUnix.net 使用bacula备份 - Linux 时代 - ChinaUnix.Net - Linux 高级应用 - 在VMware5.0环境下编译内核(kernel2.6.13)全过程 - ChinaUnix.net 一次宕机的处理(错误码4b2a25f4u0.1-p1-c1) - aix讨论区/精华帖 - - chinaunix.net [原创] 写给Linux内核新手-关于Linux内核学习的误区 - ChinaUnix.n... [原创] Linux下双网卡绑定技术实现负载均衡和失效保护 ( 原 创 ) - ChinaUnix.net 每周一题——读写配置文件。 - Python讨论区/精华帖 - - ChinaUnix.net 每周一题——读写配置文件。 - Python讨论区/精华帖 - - ChinaUnix.net - 存储备份之家 - [原创]关于SAN的基本知识和应用(页 1) - ChinaUnix.net Linux高级应用web ChinaUnix.net - 写给Linux内核新手-关于Linux内核学习的误区 - 中国Unix技术社区 从Linux迁移到FreeBSD - Linux 时代 - ChinaUnix.Net - perl讨论区 - - chinaunix.net 网通和电信的策略路由,终于找到了! - 网络技术及应用讨论区/精彩帖 - - ChinaUnix.net 应用 Valgrind 发现 Linux 程序的内存问题 应用 Valgrind 发现 Linux 程序的内存问题 [保留] 嵌入式Linux内核移植相关代码分析(zz) - ChinaUnix.net