linux – 为什么在剩余大量可用内存时使用Swap?

前端之家收集整理的这篇文章主要介绍了linux – 为什么在剩余大量可用内存时使用Swap?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有非常好的web(专用)服务器,具有良好的内存资源:
System information
Server load     2.19 (8 cpus)   
Memory Used     29.53% (4,804,144 of 16,267,652)    
Swap Used   10.52% (220,612 of 2,097,136)

如您所见,当有足够的可用内存时,我的服务器正在使用swap.

这是正常的还是配置或编码有问题?

注:
由于某种原因,我的MysqL进程使用了​​超过160%的cpu功率;我不知道为什么,但我没有超过70个同时用户

解决方法

这是完全正常的.

在系统启动时,会启动许多服务.这些服务初始化自己,读入配置文件,创建数据结构等.他们使用一些记忆.由于您没有使用它们,因此许多这些服务在系统启动的整个过程中都不会再次运行.其中一些可能会在数小时,数天或数周内运行.然而,所有这些数据都在物理内存中.

当然,系统不能抛弃这些数据.它无法证明它永远不会被访问.例如,其中一项服务可能是为您提供远程访问框的服务.您可能在一周内没有使用它,但如果您使用它,它可以更好地工作.

但是系统知道它可能喜欢将这种物理内存用于磁盘缓存之类的东西,或者以其他方式来提高性能.所以它做机会主义交换.如果没有更好的办法,它会使用交换空间将很长时间未使用过的数据写入磁盘.但是,它仍然将页面保留在物理内存中.因此,仍然可以访问它们而无需交换它们.

现在,如果系统稍后需要该物理内存用于其他内容,它可以简单地将这些页面丢弃,因为它已经将它们写入交换.这为系统提供了两全其美的优势.数据仍保留在内存中,因此无需从磁盘读取即可访问它.但是,如果系统需要该内存用于其他目的,则不必先将其写出来.四处大赢.

猜你在找的Linux相关文章