我有一台云服务器,内存大约为14G,没有交换空间。然而,当我运行top命令时,偶尔会看到kswapd0占用一些CPU。如果没有交换空间需要管理,为什么kswapd0会运行呢?
交换空间只用于没有被任何其他文件支持的数据。即使您没有交换设备,也会将从磁盘上的其他文件映射而来的数据(如可执行程序)交换到它们各自的文件中。
kswapd0
占用了任何CPU资源,并且您没有交换空间,那么系统的RAM几乎用完了,并且正在尝试通过(实际上)从可执行文件中交换页面来处理这种情况。正确的解决方法是减少工作负载,添加交换空间或者(最好的选择)安装更多的RAM。添加交换空间将提高性能,因为内核将有更多关于要交换到磁盘的内容的选项。如果没有交换空间,内核实际上被迫交换应用程序代码。 - Mikko Rantalainenkswapd0
正在使用一些CPU,而您不希望它这样做,请降低swappiness
设置。然而,除非您的交换空间由受写入影响的SSD支持(例如,存在糟糕的磨损平衡算法),降低swappiness
会降低系统的整体性能。这个想法是保持交换空间中RAM的一个副本,以防需要更多的RAM - 在这种情况下,RAM中的副本将立即被丢弃,而不是在RAM可以使用之前开始进行交换。这种乐观的交换只在系统足够空闲时进行,因此不应该减慢您的系统。 - Mikko Rantalainenkswapd0
正在运行,那么您的系统实际上在那一刻几乎使用了所有的RAM。现在是时候获取更好的工具来监控内存使用情况(或系统中的可用/空闲内存)了。sudo find /home -f kswapd0
/home/guest/.configrc/
下找到它。ngrok
这样的服务,同时在你的系统上开放SSH,都会使你的计算机暴露在这种简单的guest漏洞之下。我曾经遇到过一个问题,我的笔记本电脑占用了大量的RAM,没有交换空间,导致我的电脑完全挂起。自动杀死有问题的进程似乎不起作用,所以现在我确保安装了交换空间,以稳定我的机器。这似乎起到了作用。 就像20年前的Linux一样,它只是杀掉了不适合的东西,然后就完成了,现在每次占用太多RAM时,我都必须强制重启我的机器,这真的不是我所期望的。