免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5577 | 回复: 5
打印 上一主题 下一主题

请教,内存快用光了,为何Swap一点都没有使用? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-02 16:17 |只看该作者 |倒序浏览
我一台Suse的机器,内存快用光了,为何Swap一点都没有使用?请教各位大侠指点!

top - 16:03:15 up 25 days,  6:52,  1 user,  load average: 0.00, 0.02, 0.00
Tasks: 105 total,   1 running, 104 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.0%sy,  0.0%ni, 99.8%id,  0.1%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1035120k total,  1020080k used,    15040k free,    11140k buffers
Swap:  2047992k total,        0k used,  2047992k free,   666048k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                               
    1 root      15   0  2036  232  140 S    0  0.0   2:29.26 init

论坛徽章:
0
2 [报告]
发表于 2009-03-02 16:21 |只看该作者
研究一下 cache 與 buffer 這兩個欄位功能,應該就知道原因囉

论坛徽章:
0
3 [报告]
发表于 2009-03-02 16:35 |只看该作者
第一行:
        total 内存总数: 255596
        used 已经使用的内存数: 208244
        free 空闲的内存数: 47352
        shared 当前已经废弃不用,总是0
        buffers Buffer Cache内存数: 38020
        cached Page Cache内存数: 94736
        关系:total = used + free
第二行:
        -/+ buffers/cache的意思相当于:
        -buffers/cache 的内存数:75488 (等于第1行的used-buffers-cached = 208244-38020-94736=7548
        +buffers/cache 的内存数: 180108 (等于第1行的free+buffers+cached = 47352+38020+94736=18010
        可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。
第三行:
        单独针对交换分区, 就不用再说了.

        为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。
        如果感兴趣可以进一步参考文件/proc/meminfo,free命令就是根据它的信息生成的。free命令的源码可从procps-xxx-.src.rpm获取,xxx为版本号,比如procps-3.2.3-5.3.src.rpm。

参考内核代码:
        arch/i386/mm/init.c
        fs/proc/proc_misc.c
        include/linux/swap.h
        mm/filemap.c
        fs/buffer.c
另外还可以参考O'REILLY的书《Understanding the Linux kernel》。

无标题.JPG (9.54 KB, 下载次数: 21)

无标题.JPG

论坛徽章:
0
4 [报告]
发表于 2009-03-02 17:32 |只看该作者
感谢楼上的兄弟,大致明白了free里面的意思。
但还是没有明白为什么Swap的used为什么会是零。前些天一直看都是用了很多。
出现这个现象是我自己今天手工建了一个Swap的分区/home/swap。从初始Swap隐掉了。

论坛徽章:
0
5 [报告]
发表于 2009-03-03 12:02 |只看该作者
swap分区尽量少用。
buffer和cache的内存实际上应用程序在需要内存的时候是可以拿来使用的。
你可以通过调整 /proc/sys/vm/swappiness的值来让应用程序在需要内存时是尽量的从cache里面拿内存,还是尽量的从swap空间拿内存使用。
建议在应用程序需要内存时尽量从cache里面拿内存使用。这样可以避免使用swap分区所带来的io负载。

论坛徽章:
0
6 [报告]
发表于 2009-03-04 23:29 |只看该作者

回复 #1 lovefree 的帖子

cache和buffer中
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP