免费注册 查看新帖 |

Chinaunix

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

linux 的内存管理能力令人失望?  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-20 09:07 |只看该作者 |倒序浏览
linux的是作为与windows server竞争的服务器定位的,不过在服务器至关重要的内存管理能力上,显得还比不上windows有效。对于linux的进程独立模式来说,或者这真是一个瓶颈;用于客户机吧?它不能用效地共用Xindows的的资源,否则就另一个windows说,进程独立带来的相对安全性的同时也意味着资源无法共享(要知道桌面刷新是资源消耗极其巨大的,windows实际就是把这个进程最大化,然后所有应用程序从中派生线程来实现CPU资源共享);用于服务器吧?它的基于进程的内存管理难度也的确远远高于WINDOWS。

我的办法已经不多了,如果有人指教一二,实在万分感激。反正当负载达到一定程度,曾经459天不用重启的记录看来是永远不能达到了。

不止一次观察到,linux服务器中的内存释放情况并不理想;原因还搞不明白,尽管可以使用top观察内存情况,实际上即使把可见的主要服务全部关断,也没有见内存有大幅度的回复。如果说在互联网上还会存在被入侵的可能性,那么在内部隔绝的网络中就不可能存在被入侵运行额外的程序的可能,但仍是多次出现内存被吃光的情况;同时把主要的服务关掉,也只是会复大部分的内存。因此,当一台有多种服务的服务器运行一段时间后,出现内存衰竭是迟早的事情;不是说Linux不好,windows也有同样的情况,只是linux并没有真的更好。

理论上可以'ps -A'//top/free/kill把进程杀死,不过一来没有实际进程太多,不知那里跟那里,二来显示出来的各个进程似乎占用内存都不多,(我想是由于要显示子时程不容易,所以显示的都是主进程),而且如果没有归纳,也实在不清楚进程的祖辈关系是如何联系的。所以杀无可杀,反正内存释放不出来,弄不好还多出一大堆的僵尸进程。实际上对系统管理真正有用的是把主应用程序列出来,或者称同类进程总结起来就可以了;这样才有可操作性。在windows中这样不难,因为每个程序就是一个进程,然后在下面都是生成线程。而在linux中,几乎清一色是fork()产生的新进程,固然可以保证各个进程互不干扰,但反过来,也变得难以跟踪。

产生无法跟踪的僵尸进程大概不是linux操作系统本身的问题;而是使用linux的应用程序的问题。改进方向应该是linux提供一个功能,可以对某一个程序的内存请求进行quoata限制;不过看来挺难的;对于应用程序的要求来说,应该象oracle一样申请一个专用的内存区,不会擅越;至于内存区的大小,可以按实际情况进行调整。不过在这几个功能不具备时,作为系统管理员,唯一的办法就是尽可能不要在一台服务器上使用多种服务;如果观察到内存消耗过多而无法恢复,还是不要追求高runtime吹牛了,为了当机,还是老老实实重启一下机器吧;一定数量的虚拟内存还是必须的;这样可以令系统在万一吃空内存时还可以接受请求进行恢复,或者是重启,否则就只能硬启动了。

那么它的内存都到那里呢?在实际操作中我注意观察了一下,移动一个80M的目录,使用free观察,它吃掉了150M的内存,(不要问我为什么);然后使用find . | grep xxxx的操作,在一个10M的目录中找字符串文件,再free,它吃了我30M内存。吃了也就吃了,过了45分钟再看free,一口都没有吐出来。That is it.

zwwwxy 于09 : 43 发表 已被浏览452次 评论(11) / 引用(29) 加入博采中心
     [回复]
           

linux最垃圾,windows先进好几代
盖茨 万岁
    匿名网友 | 2004年 12月12日 22 : 14


     [回复]
           

windows性能好得多了,傻瓜才用linux
    匿名网友 | 2004年 12月13日 01 : 12


     [回复]
           

一群傻B,linux的内存使用是最有效的。这些感觉上没有被吐出来的实际上是随时可以清空。用free命令去看看吧。
    匿名网友 | 2004年 12月21日 19 : 07


     [回复]
           

SB啊,人家就是说用free看过没有清出来,程序还吃光了内存死掉了,你看仔细点啊
    匿名网友 | 2004年 12月22日 18 : 42


     [回复]
           

hi,the fella, no doubt I can use free to find out the problem. But the result just as I discripted, once if you can provide the solution I will appreciate you but not the stuffy ridiculous only.
    zwwwxy | 2004年 12月23日 00 : 42


     [回复]
           

linux对内存的使用策略与windows不一样.linux不浪费空闲内存,而是充分利用大量内存作为缓存以提高系统性能,

计算能力和稳定性方面,科学界的大规模并行运算都是利用linux和unix,不会选择windows,IBM的上千个cpu的超级计算使用的也是linux
    超级懒猫 | 2005年 01月14日 09 : 17
    个人主页:www.bt-cat.com


     [回复]
           

并行计算的方式很多,linux是其中一种选择,很多时侯用的是BSD。不过这不是要讨论的,我们现在最经常碰到的是十万二万的几台服务器集中提供服务的情况,所以大的方面的东东一来没有办法验证,二来也与我们没有关系。

对于你说的linux的使策略,不敢同意,反而是windows是把内存当成缓存了;这是因为它采用一个大内核所致。linux的优点是独立进程带来的安全性,相信不是你说的内存使用的原因。(真的没有听说过,请提供原始材料出处).

我对它的内存使用不太满意,不等同于对windows满意:我从来不用windows做服务器;事实上目前只用过三种:SOLARIS/AIX/linux;

    zwwwxy | 2005年 01月14日 21 : 55


     [回复]
           

从本人对linux的分析看,本文论点真实可信。这不但是linux也是unix的一个问题。在*nix系统中,所有进程都是从init中派生出来的,子进程可以通过&parent得到父进程的入口,但是反过来init进程无法清楚了解到子进程到底在干什么。所以除非增加一个子进程在父进程中的注册和消息通知机制,否则父进程无法对子进程在资源上的使用进行管理。

windows恰恰具备这一机制,而*nix不具备
    匿名网友 | 2005年 01月16日 11 : 33


     [回复]
           

看来有行家了。
不过说*nix都是这样不太准确,我说的内存管理缺陷其寮tovalds本人也清楚,所以在2.6内核中作了重大的改进,提供了内存反向映射,就是要解决这个问题。

事实上linux的内存策略不是什么缓存,而是按调用时间清除出页面,所以就算那个进程已经死了,只要它是后调用的,就会停留着,因为没有反向映射根进程不能知道那个内存还在用呢!所以系统很容易进行极限内存状态,即常说的系统抖动。

楼上开骂的那位显然搞不懂其中的关节。
    zwwwxy | 2005年 01月16日 15 : 20


     [回复]
           

windows比UNIX迟出生二十年,当然设想上要完善。linux继承unix架构优点是成熟。
    匿名网友 | 2005年 01月17日 21 : 26


     [回复]
           

升级内核到2.6
    匿名网友 | 2005年 03月08日 13 : 14

论坛徽章:
0
2 [报告]
发表于 2005-06-20 09:11 |只看该作者

linux 的内存管理能力令人失望?

下BT,三下两下就把偶的1G内存吃得光光,用完也不吐.........

论坛徽章:
0
3 [报告]
发表于 2005-06-20 09:13 |只看该作者

linux 的内存管理能力令人失望?

沙发
听听懂行的人的见解

论坛徽章:
0
4 [报告]
发表于 2005-06-20 10:13 |只看该作者

linux 的内存管理能力令人失望?

up

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
5 [报告]
发表于 2005-06-20 10:19 |只看该作者

linux 的内存管理能力令人失望?

我都不好意思说"外行"这两个字,愿意用什么操作系统是个人的喜好问题.但还没弄明白LINUX的内存管理机制就下结论,太让人笑话了吧.内存使用很高是因为用于磁盘缓存,没有别的,总比空闲不用的好吧.如果按楼主说的退出程序不会释放缓存,那么当反复退出进入程序的话会造成无法分配内存,楼主可以试一下是否如此.再说如果WINDOWS把最大的资源能力用于了窗口,那么试问WINDOWS拿什么来运行各种网络服务,又如何能高效的运行哪些服务,这不是证明WINDOWS更不适合于运行为网络服务器吗?LINUX有N小时不停的运行记录,同样WINDOW也有,我想如果你用一个不稳定的机器,不管你用什么系统,总是不可能的吧.这需要有硬件作为基础的,再就是你是如何安装的了.

论坛徽章:
0
6 [报告]
发表于 2005-06-20 10:35 |只看该作者

linux 的内存管理能力令人失望?

up

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2005-06-20 10:35 |只看该作者

linux 的内存管理能力令人失望?

作者一定没看过这篇文章
http://blog.chinaunix.net/article.php?articleId=23713&blogId=126

论坛徽章:
0
8 [报告]
发表于 2005-06-20 10:51 |只看该作者

linux 的内存管理能力令人失望?

偶一直不明白

楼主即用LINUX做服务器

为什么要用XWINDOW呢

我个人认为

做LINUX服务器

完全可以不XWINDOW

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2005-06-20 11:45 |只看该作者

linux 的内存管理能力令人失望?

唉,都不知道说什么好,狗屁内核基础理论都不懂,也敢来评论os。。

都是哪和哪啊。。

btw:windows和linux没有好坏之分,只有用户之分。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2005-06-20 12:52 |只看该作者

linux 的内存管理能力令人失望?

HOHO
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP