免费注册 查看新帖 |

Chinaunix

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

top 的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-25 11:54 |只看该作者 |倒序浏览
top 显示的
swap 是什么含意?
网上搜索到的说明是  进程使用的虚拟内存中,被换出的大小
这个被换出是换出到哪儿?不是 交换分区把,
下面是我的系统上top的部分结果
top - 11:52:48 up 27 days,  1:45,  2 users,  load average: 0.01, 0.01, 0.00
Tasks: 118 total,   1 running, 117 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.5% us,  0.0% sy,  0.0% ni, 99.3% id,  0.2% wa,  0.0% hi,  0.0% si
Mem:   8164440k total,  8134428k used,    30012k free,   123648k buffers
Swap:  2096472k total,   189676k used,  1906796k free,  5085452k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  SWAP COMMAND
19794 oracle10  15   0 1721m  28m  14m S    0  0.4   0:00.05 1.7g oracle                                                                              
2310 oracle10  16   0 1687m  26m  13m S    0  0.3   0:00.40 1.6g oracle                                                                              
2308 oracle10  16   0 1698m  39m  15m S    0  0.5   0:00.61 1.6g oracle                                                                              
2264 oracle10  16   0 1672m  15m  12m S    0  0.2   0:00.11 1.6g oracle  
...
swap 分区 只占用了180M,可是 下面swap中显示的是1.7G.
那下面显示的swap怎么解释?

论坛徽章:
0
2 [报告]
发表于 2007-10-25 15:33 |只看该作者
swap 是什么含意?
swap 就是进程的虚拟内存,也就是一般人说的,交换分区,  
交换分区是指物量内存用尽或不足时候,系统把这分区当作内存使用,所以在技术上就是说虚拟内存
分区,一般情况下这分区是物理内存的2倍. 但是可以根据你的情况分配,

你上面的信息是内存为8G SWAP 为2G
类型       总数            用户使用大小        空闲            缓冲
Mem:   8164440k total,  8134428k used,    30012k free,   123648k buffers
Swap:  2096472k total,   189676k used,  1906796k free,  5085452k cached

这些信息看来, 你的8G内存用完了,已经用到虚拟内存了,你已经开始感觉到系统变慢了吧!
其中5G 做了cache服务,

论坛徽章:
0
3 [报告]
发表于 2007-10-25 15:59 |只看该作者
不过即使内存没用完也有可能是会用到虚拟内存的,但是情况很少。
感觉跑oracle多少内存都不够。。。100G都不算大的

论坛徽章:
0
4 [报告]
发表于 2007-10-25 17:25 |只看该作者
我倒不担心我们系统的性能,我们系统性能很好
我的问题是我不理解top中列表标题里面看到的swap是什么意思,如果说他是 交换分区,那么我的交换分区才使用了180M,可是这个里面已经用了1.7G了
按照这个数值来说它应该是包含了共享内存的,也就是说后台的oracle总共占用了这些内存 (SGA),但是为什么显示为swap呢

论坛徽章:
0
5 [报告]
发表于 2007-10-25 17:48 |只看该作者
其实是这样的,swap分区是在你内存不够的时候换出去的,但他并不清空的。不是说现在一个100m的文件交换到swap分区,等进程结束了就清空它。即使进程结束了他还在那的。所以swap的使用不代表你的负载高低。只能说你的内存有经常不够的情况

论坛徽章:
0
6 [报告]
发表于 2007-10-25 18:03 |只看该作者
在网上找到一段话,可以解释我的疑问了,呵呵
地址 http://edudata.ccut.edu.cn/linux ... linux/linux7776.htm
并不是所有从物理内存中交换出来的数据都会被放到Swap中(如果这样的话,Swap就会不堪重负),有相当一部分数据被直接交换到文件系统。例如,有的程序会打开一些文件,对文件进行读写(其实每个程序都至少要打开一个文件,那就是运行程序本身),当需要将这些程序的内存空间交换出去时,就没有必要将文件部分的数据放到Swap空间中了,而可以直接将其放到文件里去。如果是读文件操作,那么内存数据被直接释放,不需要交换出来,因为下次需要时,可直接从文件系统恢复;如果是写文件,只需要将变化的数据保存到文件中,以便恢复。但是那些用malloc和new函数生成的对象的数据则不同,它们需要Swap 空间,因为它们在文件系统中没有相应的“储备”文件,因此被称作“匿名”(Anonymous)内存数据。这类数据还包括堆栈中的一些状态和变量数据等。所以说,Swap空间是“匿名”数据的交换空间。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP