1. Linux操作系统对内存的使用和调度策略是什么样的?
l Linux认为闲置的资源是一种浪费,所以会充分使用各硬件,例如:内存
l 当内存空闲时拿出部分转换为Buffer用于读写磁盘缓冲,以提高IO速度;
l 拿出部分内存用作CachePage用做文件缓存来提高用户请求的计算、处理速度;
l 当有新的计算请求而剩余内存不够时,系统会释放Cache或Buffer,用来处理计算请求。
l 但系统释放Cache会遵守某些机制,并不能保证需要的时候都能准确地腾出来;此时,如果物理内存用光了,也可能会请求Swap来处理计算,此时会出现Swap分页。这不是我们想要的
2. 操作系统中以上三类的内存各占多少比例?Cache和Buffer越大越好吗?
这个问题需要视以下几种具体情况而定:
l 若应用系统计算请求很多而很少需要文件缓存,则Cache就用到很少,可能只是计算内存的0.5倍;如果不需要频繁读取硬盘(磁盘IO),则Buffer也会用到很少,约占0.05倍;反之,若频繁读取硬盘,则需要很大的Buffer来增强磁盘IO效率
l 若处理结果(响应)很大或处理过程中产生大量临时数据,则Cache会很大,这可以是得下次的用户响应更快;例如,把从数据库中读到的一些新闻条目、word附件等暂存在非计算内存中
l 一般来说,当有新的计算请求时,操作系统会主动释放Cache和Buffer,但是这需要将已有的Cache内容强行清空,可能会引发一些问题,例如系统默认终止好用资源最大的进程;
l 若这些临时数据很少,而预留了大量的Cache,则CPU需要在Cache中检索,这种检索是最原始的1-0-1-0信号寻址,速度往往不如“计算内存+缓冲”合并处理快;同理,buffer也是。
l 可以通过设置参数来限制用作Cache和Buffer以及共享内存的比例:
sysctl -w vm.cachepage=1 15 100 设置最小、初始、最大值
sysctl -w vm.buffermem=2 10 60 设置最小、初始、最大值;
l 这三个值视具体项目中开发的内容,和用户使用情况、系统处理细节决定,必须通过反复的“设置经验值--压力测试—分析事物响应时间—调整设置….”的方式迭代,找到最适合的值。
3. Portal和DB2如果安装在同一台机器上,需要多少内存?
我们首先来依据产品的硬性指标和一些经验值推算:
关于计算内存的估算比较简单,有很多公式和经验值,而非计算内存即Cache和Buffer是不好估算的,因为那取决于用户请求过来后CPU在处理时,到底是使用的纯计算多呢?还是读写磁盘多,甚至生成的临时对象占用、处理结果暂存;以及300个用户是否同时请求资源,请求的资源是否有共享,是否可以被及时清空等。所以非计算内存是通过对系统的了解大体估算出来的峰值,实际使用中可能用不了这么多。而且为使系统性能达到最高,需要设置的具体指也需要通过多次的调整和压力测试才能确定。下表只是给出了由计算公式得到的近似精确地计算内存的需要和凭对系统的了解估算出来的非计算内存的值:
模块 |
服务器 |
需要计算内存 |
需要非计算内存(Cache) |
合计 |
Portal模块 |
Portal Server |
1.7G |
1.7—2G |
3.4—3.7G |
Server1 |
0.768—1.2G |
0.768-1.2G |
1.5-2.5G |
Network Deploy |
0.768—1.0G |
0.768—1.0G |
1.5-2G |
DB2数据库 |
包括JCR,COM,CUS,WMM等共7个数据源,每个源50个池,合计50*7=350个池
|
1.9G |
1.9G—3.8G |
3.8—5.7G |
Linux RH
操作系统 |
操作系统内核 |
0.5G |
无 |
0.5G |
处理页面替换 |
0.5G |
无 |
0.5G |
|
|
|
|
|
总计: |
|
|
|
11.2G—14.9G |
添加新评论0 条评论