我有一个用例,我在5-6gb的范围内进行突发分配,特别是当我在键入时Visual Studio Code编译我的D项目时。 (编译器根本不释放内存,以便尽可能快。)
DMD以一种偷偷摸摸的方式进行内存分配。由于编译器是短命的程序,而速度是至关重要的,因此DMD只能消失,而且永远不会释放。这消除了脚手架和弄清楚谁拥有内存以及何时应该释放的复杂性。 (如果编译的模块足够大,它有消耗机器所有资源的缺点。)
这台机器是运行64位Manjaro的戴尔XPS 13,内存为16GB - 而且我正在打顶。系统完全占用,REISUB可能会或可能不会工作,等等。我可以将它保留一个小时,它仍然挂起,而不是慢慢解决自己。我能够达到tty的时间,dmesg有各种各样的快乐消息。所以我想要启用一个大的交换分区来缓解压力,但它没有帮助。
我意识到在需要之前不会使用交换,但到那时为时已晚。即使有交换,当我的内存耗尽时,所有的段错误; Qt,zsh,fuse-ntfs,Xorg。此时它将报告使用中典型的70mb交换。
vm.swappiness
为100. swapon报告交换为活动状态,由systemd自动启用。
NAME TYPE SIZE USED PRIO
/dev/nvme0n1p8 partition 17.6G 0B -2
我该怎么做才能让它交换更多?
试试这个。请记住将此问题置于超级用户或serverfault中。 Stackoverflow仅用于编程。
https://askubuntu.com/questions/371302/make-my-ubuntu-use-more-swap-than-ram