免费注册 查看新帖 |

Chinaunix

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

求教:top指令下看内存的占用,为什么不是把内存用光,再用swap空间呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-29 12:29 |只看该作者 |倒序浏览
用top指令看系统的负荷时,发现一行:\r\nMemory: 8192M real, 3947M free,3642M swap in use, 15G swap free\r\n\r\n请问为什么是内存用了大概4G,swap用了大概4G,而不是先用光内存,再用swap,是UNIX的什么机制在控制吗?还是我的系统有点问题?

论坛徽章:
0
2 [报告]
发表于 2005-12-29 14:35 |只看该作者
solaris的内存机制就是这个样子的。

论坛徽章:
0
3 [报告]
发表于 2005-12-30 01:16 |只看该作者
Solaris使用virtual memory system, 64位连续地址空间, 包括物理内存和硬盘上的虚拟内存,提供简单memory programming model, \r\n\r\n64位virtual memory space与实际物理内存的对应关系,由CPU上的内存控制器MMU管理, 应用无需知道, 允许应用的进程按连续的地址空间编成,  可超过物理内存大小, 一部分在较慢的硬盘上, 所有空闲内存都作为文件的buffer, 改善性能,\r\n\r\n所以,对某个应用的进程来说,其代码段/数据段/堆栈段所分配的virtual memory 可能被影射到物理内存或硬盘上的虚拟内存(swap),就整个机器来说,你所能看到内存和swap都在用,\r\n\r\n其中Swap space用于backing store内存pages, 如内存短缺, 则内存page页被拷贝到硬盘swap上,并释放内存, 传统Unix需要swap对应所有的内存页,即如运行的进程被分配8MB内存, 则需在swap上保留同样大小的内存空间, 尽管内存此时并未短缺,也要占用, 所以实际往往swap设置的是内存的2倍, \r\n\r\n所以不管如何,你得内存和硬盘swap总是在用的,不会出现内存用光,而swap再用的情况,其原则是:\r\n\r\n1. 如空闲内存小于lotsfree(1/64内存大小)时,进程堆栈开始从内存中被page out, 送回硬盘swap, 所占内存被扫描为空内存给其它进程用, 而swap上的空间被占用,而不是被保留,\r\n\r\n2. 如空闲内存继续减小, 扫描空内存的速度加快,从100pages/s(100*8KB/s) 向8192pags/s(64MB/s)的速度变化,\r\n\r\n3. 如空闲内存继续减小到desfree(1/2 lotsfree)时, 运行的进程不光其堆栈被page out, 其程序代码段开始被swap out, 扔回硬盘的swap上, 所占内存被扫描为空内存给其它进程用,\r\n\r\n所以当内存短缺时, 机器会因运行的进程被公平的扔出和读入,逼近底线而越来越慢,而不会内存用光, 具体你的机器的配置可用netstat -k看, 如:\r\n\r\n# netstat -k \r\n...\r\nsystem_pages:\r\nphysmem 63284 nalloc 11786054 nfree 11708436 nalloc_calls 5350 nfree_calls 4502 \r\nkernelbase 268435456 econtig 285212672 freemem 15428 availrmem 55955 lotsfree 977\r\ncachefree 977 desfree 488 minfree 244 fastscan 8192 slowscan 100 nscan 0 \r\ndesscan 25 pp_kernel 6089 pagesfree 15428 pageslocked 6579 pagestotal 62534 \r\n...\r\n\r\n即对一512MB内存的服务器:\r\nlotsfree:  977 pages, ~8MB, 1/64 physical memory\r\nDesfree: 488 pages, ~4MB, \r\nminfree: 244 pages, ~2MB,\n\n[ 本帖最后由 alfee 于 2005-12-30 02:06 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2005-12-30 09:24 |只看该作者
[alfee作品,必属精品]\r\n嘿嘿,alfee哥哥早啊。

论坛徽章:
0
5 [报告]
发表于 2005-12-30 12:20 |只看该作者
忙啊,\r\n\r\n共同进步呢,

论坛徽章:
0
6 [报告]
发表于 2007-01-08 22:42 |只看该作者
那这样的话,我怎么知道我的内存不够多呢?因为一直有空闲内存啊.

论坛徽章:
0
7 [报告]
发表于 2007-01-10 15:18 |只看该作者
没人看到这个问题?呵呵,怎么知道我的内存不够多呢?因为top看一直有空闲内存
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP