当前位置:  技术问答>linux和unix

高手帮忙解释下linux如何对一个服务器的进程进行内存分配?

    来源: 互联网  发布时间:2016-03-10

    本文导语:  大家好,有个问题一直没有弄明白,查了些资料也是一头雾水。就是关于linux上一个服务器的进程,系统是如何分配内存,在存在多个连接的时候,它们之间是如何共享内存的呢?比如mysqld进程,系统启动时分配了一些...

大家好,有个问题一直没有弄明白,查了些资料也是一头雾水。就是关于linux上一个服务器的进程,系统是如何分配内存,在存在多个连接的时候,它们之间是如何共享内存的呢?比如mysqld进程,系统启动时分配了一些内存给它,在有连接进行插入操作时,会占用到比较多的内存,如果有多个连接同时进行插入操作,它们之间的内存是如何分配与共享的呢?我看到说linux将空闲的内存作为cache使用,来提高性能,在将所有的连接退出后,可以看到mysqld的RSS减少并不多,比如原来有40个连接时RSS是178M,这40个连接退出后,mysqld的RSS大概在155M左右,那哪些是释放出来的,哪些是仍然算在RSS中的呢?linux对这种进程内存的使用原理是什么样的?希望有高手给予指点!谢谢!

|
简单的讲,
当系统释放内存页面时,并不立即把这些内存页面释放,而是把内存页面的相应标志置位。对于这样的页面,如果有系统请求到来,需要从新使用这些页面时,仅仅简单的把标志位置上就可以了。这样能极大的提高系统的响应速度。
系统内部有个线程,定时检查这些已经置位的页面,根据一定的策略,来定时真正的释放一些这样的页面。
另外,当系统申请其他空闲内存页面得不到满足时,也会释放一些这样的页面来供其他地方使用。

|
首先RSS是驻内存页面集合。每个进程都有自身的虚存空间,而虚存空间是被映射了的物理页面集合。而在内存的部分就是RSS。
因此看一个进程耗费多少资源,不能只看RSS。

在linux 中一般用户空间的进程的大小在理论上都是3G,当然先开始一般是有预先分配的堆栈, 当堆栈不够用时,会有一些办法,调用do_page_fault来申请空间,malloc 来申请空间,

这些都是内存管理模块提供的接口,最终的分配是从每个内存管理区的free_list. 全局的inactive_clean_list,将内容交换到设备上的inactive_dirty_list,LUR队列,或者是在系统紧张,可以释放掉一些slab中的无用内存,来满足需求。

|
>> 在将所有的连接退出后,可以看到mysqld的RSS减少并不多,比如原来有40个连接时RSS是178M,这40个连接退出后,mysqld的RSS大概在155M左右
那是因为mysql把这些数据缓存了,所以没有释放

|
redhat 有专门的内存管理程序,命令下的忘了,图像模式下的你可以在设置里看下。

    
 
 

您可能感兴趣的文章:

  • 高手请教!linux怎样通过pid获取进程信息,如:进程名、进程状态等?
  • 请教--父进程监控子进程,欢迎高手进来探讨!!!
  • 高手指点:不用JNI,如何在Java进程中新起一个JVM并在其中启动另一个Java进程。
  • 关于杀死进程(高手请进)
  • Linux创建进程的问题,请高手帮忙解答一下?
  • 父子进程问题,高手请进!!!
  • linux内核高手进!关于调用__fork()时0号进程的子进程才能与父进程共享PID的困惑
  • 多进程通讯问题,请高手们给点思路吧
  • 请各位高手谈谈是如何管理自己的进程池的?
  • linux进程异步通信,高手请进
  • 哪一位高手能提供关于进程池的完整的概念?30分奉送!!
  • 请教高手:Unix下如何实现进程池?
  • 请问高手LInux 下的进程、线程的切换具体是如何实现的?
  • 求高手指点进程监控问题
  • 关于子进程中释放内存的问题!!?高手请进
  • Linux下多进程实现异步编成,高手帮忙!
  • 小女子为职场新人,现被分配做wifi的移植,有一问题不懂,请高手指点,急!在线等 iis7站长之家
  • 高手请指点,怎么创建一个不会死的进程
  • 请教高手:C语言怎么知道一个进程是否存在(Linux下)
  • 请各位高手谈谈进程池。
  • 高手请进: 如何用 kmalloc 分配20M 的内存空间?
  • 小女子为职场新人,现被分配做wifi的移植,有一问题不懂,请高手指点,急!在线等
  • Solaris 下磁盘空间分配的问题,高手请进
  • Linux for suse 中的用户组以及特殊权限分配问题,高手请进!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 共享内存问题,高手们请进!!!
  • 高手请进:linux 多线程占用内存问题
  • 内存问题,向各位高手求助!!!
  • linux下的swap分区与虚拟内存有什么关系,请高手解答
  • linux下查看java项目虚拟内存很大,请高手指点下
  • scounix中获取内存信息大小的问题,急,请高手指点
  • 请问高手们,有没有一款工具可以测试内核内存泄露的?
  • 请教高手,一个关于共享内存的问题。
  • 急、急、急,诸位高手说说内存瞬间用光是怎么回事儿?
  • 请教高手如何释放内存
  • 网络编程中的共享内存问题,哪位高手可以帮忙解决啊?
  • 关于共享内存的问题 请高手指教
  • 在suse linux下的程序,开辟一小块儿内存竟然用了400多个毫秒,高手帮忙分析一下
  • 请教高手内存方面知识
  • 最近程序老是在malloc或者free内存的时候崩溃或者失去响应,请教高手。
  • 求助高手:用sar -r 和用vmstat得到的内存数据有什么区别?
  • 懂内存映射的高手进。。。
  • 内存问题及 top 命令,郁闷了两个多月了.高手请帮忙.
  • 访问内存错误的问题。请高手帮我找下原因。。
  • 关于内存寻址空间的计算问题(新手,高手勿笑)
  • 高手,高手,高高手请进!
  • 有熟悉EXIM的高手高手么??
  • to 高手:学java应该怎样一步步学习,从菜鸟到高手.
  • 高分请高手,高手定能解决
  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • 有高手研究Agent++麽?里面有个thread.h,蛮难读的,请高手指点
  • 难道高手区里的人就是高手?
  • 在dos下用bc31挑战高手******开发mssql程序,连接时报link err:undefined symbol GETNOTE in module DBEXTERN?(挑战高手)
  • 真正的linux高手,请看过来,看你符合高手标准不?
  • 难道这没有高手吗?难道这没有乐于助人的高手?(高分酬谢62+50+50)
  • 关于我对linux高手用yum,非高手用源码的理由


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3