为什么我的linux只认64m内存只认一半

SWAP其实相当于windows下面说的虚拟内存只認一半是当内存只认一半不足时可以补充的部分,如果内存只认一半已经足够多了就可以不需要。

你对这个回答的评价是

不分都行叻。。怎么那么大内存只认一半。

你对这个回答的评价是

你对这个回答的评价是?

那么大的物理内存只认一半,还有必要使用虚拟内存只认一半吗?

Linux 不是必须要求有SWAP分区的么

你对这个回答的评价是

}

windows下一般是4G其实自己能用的也就箌2G多一点, 

要么就得使用其它方法了 

不知道Linux下有有没有这个限制?还是想开多大就多大:) 

1、Linux下一个进程开的共享内存只认一半是否記在这个进程头上? 

2、大家在Linux下使用大内存只认一半时一般都是什么方法? 

望高手指教谢谢了! 


}

memory”的错误严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的
通常情况下,Swap空间应大于或等于物理内存只认一半的大小最小不应小于64M,通常Swap空间的大小应是粅理内存只认一半的2-2.5倍但根据不同的应用,应有 不同的配置:如果是小的桌面系统则只需要较小的Swap空间,而大的服务器系统则视情况鈈同需要不同大小的Swap空间特别是数据库服务器和Web服 务器,随着访问量的增加对Swap空间的要求也会增加,一般来说对于4G 以下的物理内存只認一半配置2倍的swap,4G 以上配置1倍
另外,Swap分区的数量对性能也有很大的影响因为Swap交换的操作是磁盘IO的操作,如果有多个Swap交换区Swap空间的汾配会以轮流 的方式操作于所有的Swap,这样会大大均衡IO的负载加快Swap交换的速度。如果只有一个交换区所有的交换操作会使交换区变得很忙,使系统大多数 时间处于等待状态效率很低。用性能监视工具就会发现此时的CPU并不很忙,而系统却慢这说明,瓶颈在IO上依靠提高CPU的速度是解决不了问题 的。
Linux支持虚拟内存只认一半(Virtual Mmemory)虚拟内存只认一半是指使用磁盘当作RAM的扩展,这样可用的内存只认一半的大小就相應地增大了内核会将暂时不用的内存只认一半块的内容写到硬盘上,这样一来 这块内存只认一半就可用于其它目的。当需要用到原始嘚内容时它们被重新读入内存只认一半。这些操作对用户来说是完全透明的;Linux下运行的程序只是看到有大量的内存只认一半 可供使用而并沒有注意到时不时它们的一部分是驻留在硬盘上的当然,读写硬盘要比直接使用真实内存只认一半慢得多(要慢数千倍)所以程序就不会潒一直在内存只认一半中运 行的那样快。用作虚拟内存只认一半的硬盘部分被称为交换空间(Swap Space)
一般,在交换空间中的页面首先被换入内存呮认一半;如果此时没有足够的物理内存只认一半来容纳它们又将被交换出来(到其他的交换空间中)如果没有足够的虚拟内存只认一半来容納所有这些页面,Linux就会波动而不正常;但经过一段较长的时间Linux会恢复但此时系统已不可用了。
有 时尽管有许多的空闲内存只认一半,仍嘫会有许多的交换空间正被使用这种情况是有可能发生的,例如如果在某一时刻有进行交换的必要但后来一个占用很多物理内存只认┅半 的大进程结束并释放内存只认一半时。被交换出的数据并不会自动地交换进内存只认一半除非有这个需要时。此时物理内存只认一半会在一段时间内保持空闲状态对此并没有什么可担心 的,但是知道了是怎么一回事也就无所谓了。
许多操作系统使用了虚拟内存只認一半的方法因为它们仅在运行时才需要交换空间,以解决不会在同一时间使用交换空间因此,除了当前正在运行的操作系统的交换涳间其它的就是一种浪费。所以让它们共享一个交换空间将会更有效率
注意:如果会有几个人同时使用这个系统,他们都将消耗内存呮认一半然而,如果两个人同时运行一个程序内存只认一半消耗的总量并不是翻倍,因为代码页以及共享的库只存在一份
Linux系统常常動不动就使用交换空间,以保持尽可能多的空闲物理内存只认一半即使并没有什么事情需要内存只认一半,Linux也会交换出暂时不用的内存呮认一半页面这可以 避免等待交换所需的时间:当磁盘闲着,就可以提前做好交换可以将交换空间分散在几个硬盘之上。针对相关磁盤的速度以及对磁盘的访问模式这样做可以提高 性能。
与访问物理内存只认一半相比磁盘的读写是很慢的。另外在相应较短的时间內多次读磁盘同样的部分也是常有的事。例如某人也许首先阅读了一段E-mail消息, 然后为了答复又将这段消息读入编辑器中然后又在将这個消息拷贝到文件夹中时,使得邮件程序又一次读入它或者考虑一下在一个有着许多用户的系统中 ls命令会被使用多少次。通过将信息从磁盘上仅读入一次并将其存于内存只认一半中除了第一次读以外,可以加快所有其它读的速度这叫作磁盘缓冲(Disk Buffering),被用作此目的的内存呮认一半称为高速缓冲(Buffer Cache)但是,由于内存只认一半是一种有限而又不充足的资源高速缓冲不可能做的很大(它不可能包容要用到的所有数據)。当缓冲充满了数据时其中最长时间 不用的数据将被舍弃以腾出内存只认一半空间用于新的数据。
对写磁盘操作来说磁盘缓冲技术同樣有效一方面,被写入磁盘的数据常常会很快地又被读出(例如原代码文件被保存到一个文件中,又被编译器读入)所以将 要被写的数據放入缓冲中是个好主意。另一方面通过将数据放入缓冲中,而不是将其立刻写入磁盘程序可以加快运行的速度。以后写的操作可鉯在后台完成, 而不会拖延程序的执行
大多数操作系统都有高速缓冲(尽管可能称呼不同),但是并不是都遵守上面的原理有些是直接写(Write-Through):数据将被立刻写入磁 盘(当然,数据也被放入缓存中)如果写操作是在以后做的,那么该缓存被称为后台写(Write-Back)后台写比直接写更有效,但吔容易出错:如果 机器崩溃或者突然掉电,缓冲中改变过的数据就被丢失了如果仍未被写入的数据含有重要的薄记信息,这甚至可能意味着文件系统(如果有的话)已不完整
针对以上的原因,出现了很多的日志文件系统数据在缓冲区修改后,同时会被文件系统记录修改信息这样即使此时系统掉电,系统重启后会首先从日志记录中恢复数据保证数据不丢失。当然这些问题不再本文的叙述范围
由于上述原因,在使用适当的关闭过程之前绝对不要关掉电源,Sync命令倾空(Flushes)缓冲也即,强迫所有未被写的数据写入磁盘可用以确定 所有的写操作都已完成。在传统的UNIX系统中有一个叫做update的程序运行于后台,每隔30秒做一次sync操作因此通常无需手工使用sync 命令了。Linux另外有一个后台程序Bdflush,这个程序执行更频繁的但不是全面的同步操作以避免有时sync的大量磁盘I/O操作所带来的磁 盘的突然冻结。
在Linux中Bdflush是由update启动的。通常没囿理由来担心此事但如果由于某些原因bdflush进程死掉了,内核会对此作出警告此时你就要手工地启动它了(/sbin/update)。
缓存(Cache)实际并不是缓冲文件的洏是缓冲块的,块是磁盘I/O操作的最小单元(在Linux中它们通常是1KB)。 这样目录、超级块、其它文件系统的薄记数据以及非文件系统的磁盘数据嘟可以被缓冲了。缓冲的效力主要是由它的大小决定的缓冲太小的话等于没用。它只能 容纳一点数据因此在被重用时,所有缓冲的数據都将被倾空实际的大小依赖于数据读写的频次、相同数据被访问的频率。只有用实验的方法才能知道
如果缓存有固定的大小,那么緩存太大了也不好因为这会使得空闲的内存只认一半太小而导致进行交换操作(这同样是慢的)。为了最有效地使用实际内存只认一半Linux自動地使用所有空闲的内存只认一半作为高速缓冲,当程序需要更多的内存只认一半时它也会自动地减小缓冲的大小。
这就是一般情况下Linux內存只认一半的一般机制真正的Linux内存只认一半的运行机制远远比这个复杂。

}

我要回帖

更多关于 内存只认一半 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信