在填充所有内存和交换我的经验时,最近几年的情况是:
不同的是,Ubuntu从来没有解决过这种情况,它的交换大小保持不变,因此每隔5秒钟就会永远锁上一次。直到,也就是说,灾难性的故障发生,火狐消失无迹-这在其他OSes中几乎从来没有发生过。最关键的方面是,我无法与系统的其他部分进行交互。
我不知道,但我得到的印象是,如果根据需求增加掉期规模,这不会是一个问题。这是如何完成的?是否存在更好的内存管理?
在完成了注释中所建议的快速测试(不是那么快)之后,我将swapfile的大小翻了一番,我可以得出结论,它在世界上产生了所有的差异。在同一负载期间,系统始终保持响应。我只能得出结论,自适应交换大小将缓解所描述的问题。
$ free -h
total used free shared buff/cache available
Mem: 3.7Gi 3.1Gi 129Mi 374Mi 566Mi 105Mi
Swap: 4.0Gi 3.0Gi 988Mi
$ sysctl vm.swappiness
vm.swappiness = 60
$ swapon -s
Filename Type Size Used Priority
/swapfile_4G.img file 4194300 3180664 20的一点注记
Ubuntu的卖点之一是得到持续的支持,增加旧硬件的寿命,其中包括内存不足的机器。这并不是说内存少得离谱,其他OSes可以让它做得很好,只是比平均水平要小。许多这样的机器是不可升级的。
对于大多数用例来说,4 GB RAM工作得很好。在Ubuntu中,在Windows中,在macOS中。然而,在Windows和macOS中,似乎只有当您用完所有分配的交换空间时,才能很好地工作。
简而言之,让Ubuntu正常运行的解决方案成为“购买新硬件”的解决方案--运行它的全部目的--对所有这些机器来说都是毫无意义的。升级硬件超出了这个问题的范围。
发布于 2021-07-15 11:56:32
发布于 2021-06-14 16:31:50
Linux内核是..。交换支持方面的问题。从许多开发人员的角度来看,交换是二等公民。我的意思是,用于弹出和获取页面的算法相当简单,并且在有大量经常使用的页面时可以分解。
一个不错的解决方案可能是使用zswap。这样做是将内存块设置为压缩内存,将页面弹出到其中。为此,编辑内核引导参数以添加zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20 zswap.zpool=z3fold。在Ubuntu系统上这样做的最简单方法是将它添加到/etc/default/grub文件中,作为GRUB_CMDLINE_LINUX_DEFAULT键的一部分。这将有效地增加可存储在RAM中的数据量,减少磁盘IO和防止锁定。
最后,您将询问如何动态创建更多的交换空间。Linux完全能够随意添加和删除swapfile,这意味着脚本可以检查交换文件的可用性,并在需要时添加swapfile。但是,如果您经常使用完整的交换空间,那么这一点就没有多大意义。
若要增加交换空间(而不重新分区磁盘),可以使用swapfile。为此,运行sudo dd if=/dev/zero of=/swapfile count=1M bs=1024 status=progress,它将100万个1024字节(即1G字节)块复制到一个文件中。然后,运行sudo chmod 0600 /swapfile和sudo mkswap /swapfile来准备用作交换的文件。将其添加到/etc/fstab,使其始终可用,方法是在该文件中追加以下行:/swapfile swap swap defaults 0 0。要完成该过程,请调用sudo swapon -a,这将激活swapfile。
来源:我自己使用swapfiles和zswap,并引用了我的bash_history和Arch作为命令。
https://askubuntu.com/questions/1345236
复制相似问题