与其说是问题,不如说是好奇心;而且,我承认,这是一个令人尴尬的基本问题:
我注意到在很多情况下,在我的 Linux 机器上,我将有大约 500MB 的交换空间在使用,即使我有大约 600MB 的未使用 RAM。
我天真的高级理解是,直到 RAM 耗尽时,交换空间才会生效。
我进一步假设这种情况一定是 Linux 内核造成的,因为请求内存的用户进程只是在逻辑上这样做,并且不知道该内存是由 RAM 还是交换空间物理支持。
这就引出了一个问题,为什么内核会抢先使用交换空间?这是某些性能调整算法的一部分吗?它是否交换到它认为最不可能被访问的内存的磁盘部分(可能是 LRU 方案)?如果是这样,将所有内容都留在 RAM 中,并且仅在接近耗尽时,然后才将 LRU 部分从 RAM 交换到交换空间是否有意义?
我应该澄清一下,我的 linux 服务器有 2GB 的 RAM 和 2GB 的交换空间。
Did*_*set 11
将未使用的RAM的一部分,其实是作为硬盘缓存。如果您考虑一下,实际上您会更频繁地读取磁盘的某些部分,而不是访问 RAM 的某些部分。将此 RAM 放在磁盘上,同时使用 RAM 缓存 HDD 数据是有意义的。
提前换出东西是有意义的,因为当您真正需要内存时,您不必等到内核完成磁盘访问。
例如,假设您要打开一个大图像。加载图像时,它需要 300MB 的 RAM。如果内核使用了它所能使用的所有 RAM,加载映像需要内核将 200MB 从 RAM 传输到磁盘。如果它事先主动清空 RAM,则可以节省几毫秒。
2个原因:
| 归档时间: |
|
| 查看次数: |
2682 次 |
| 最近记录: |