Another resource, quite long but has a tl;dr, and reviewed by some of the cgroups/resource control folks: https://chrisdown.name/2018/01/02/in-defence-of-swap.html
I'll use somewhat technically sloppy language, but hopefully a useful metaphor: there's incidental swap and heavy swap. Incidental swap is when some file or anonymous page really isn't needed, and it's good to evict it to free up memory. But in the case of heavy swap (or even reclaim), not at all incidental, it becomes a serious performance impediment. The reality is that there are some tasks that just take gobs of memory and swap isn't a good substitute. But some swap is useful for freeing up memory for things that need to stay in memory. I'm finding for the incidental swap need, swap-on-ZRAM is quite useful. You are exchanging an IO bound task for a memory+CPU task; also it forces such pages to be pinned into memory. So there's no free lunch. Conservative use would be a ZRAM device around 1/4 of RAM up to a max of 50% RAM. It's not bad or wrong to use more, it's just that some workloads, like the webkitgtk example, have such significant need that it'll actually turn 1/2 of memory into swap, which in effect means you have 50% less RAM for that task. It actually makes the problem worse. Really, the near term is a) build with flags that cause fewer resources to be used in the firist place, or b) build in a systemd user session and limit resources that way, or c) buy more RAM, or d) use conventional swap partition, possibly with zswap to leave the most frequent pages in a small RAM cache pool, that's big enough for the task to eventually complete and just suffer with the ensuing lack of GUI responsiveness. Anyway, it's a bit complicated. And lots of moving parts. And probably needs more sophisticate use of perf and maybe even bpf could be useful in figuring where the various bottlenecks are. -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1833281 Title: System freeze when memory is put on SWAP in Linux >4.10.x Status in Linux: Confirmed Status in linux package in Ubuntu: Confirmed Bug description: I'm reporting this since it's reproduceable the 70% of the time. Summary: In different circumstances, when the systems starts to swap out RAM memory, even small amounts, the system becomes completely unusuable and the screen freezes up, no mouse movement, no TTY access or SSH access can be made, only SYSRQ keys seem to do something (only reboot, so REISUB worked so far though, OOM is useless since the memory/swap is not even full) The I/O Disk led is stuck to 100% in ALL the following cases when this happens. So far: - This happens even when only ZRAM is enabled, and no swap partition is used. - Happens when ZSWAP is used with a swap partition - Happens also when a partition without zram or zswap is used - Maybe it's AMD specific? However, I'm not experiencing this on my laptop using the same tests. My laptop is an Intel one, while my desktop is an AMD Ryzen platform. Here are the specs: CPU: AMD Ryzen 5 1600 no OC GPU: AMD RX 580 8GB SSD: Crucial MX500 500GB MOBO: MSI B350M Grenade RAM: 8GB HyperX Kingston 2667Mhz Ubuntu version: 18.04 LTS, backports repo enabled Kernel version: 4.18.0-18, official ubuntu repo Bios settings: Default Additional info: Maybe I'm not 100% sure, but I noticed when using the 5.0.0-17 generic kernel, the lockups seem to still happen, but they recover eventually. Happened only a few times though... But will always be frozen for at least 30 seconds, differently from my intel laptop where those do occur. The SSD make is the same. I bought two of these, they got also the same amount of RAM. In my laptop those do not occur at all. Swapping memory even huge quantities like 1GB or more, do not produce any issues. Tests made: For testing this behaviour I tried: - Compiling the chromium-browser source code (takes up a lot of system RAM) - Used the "stress" command, using a specific amount of memory to decide how many it will be swapped, and here I noticed that even small quantities like a couple of megabytes will cause the system to freeze the 70% of the times Example: "stress --vm 1 --vm-bytes=7G" What should happen: I expect system slowdowns when swapping out memory since I do not have enough RAM, but unlikely when using Windows or my laptop with the same Linux version, not a completely unusuable environment. The swap partition is in both cases on an SSD. Reproduceability: 70% of the times Additional info again: I'm not sure this is due to any hardware failure, my SSD health is fine, as my CPU and RAM. As I said swapping in Windows works fine... --- ProblemType: Bug ApportVersion: 2.20.9-0ubuntu7.6 Architecture: amd64 AudioDevicesInUse: USER PID ACCESS COMMAND /dev/snd/controlC1: haru 2076 F.... pulseaudio /dev/snd/controlC2: haru 2076 F.... pulseaudio /dev/snd/controlC0: haru 2076 F.... pulseaudio CurrentDesktop: communitheme:ubuntu:GNOME DistroRelease: Ubuntu 18.04 IwConfig: enp24s0 no wireless extensions. lo no wireless extensions. MachineType: Micro-Star International Co., Ltd. MS-7A37 Package: linux (not installed) ProcFB: 0 amdgpudrmfb ProcKernelCmdLine: BOOT_IMAGE=/@/boot/vmlinuz-5.0.0-17-generic root=UUID=75d45574-7169-4653-aea3-9f95087f0806 ro rootflags=subvol=@ quiet splash vt.handoff=1 ProcVersionSignature: Ubuntu 5.0.0-17.18~18.04.1-generic 5.0.8 RelatedPackageVersions: linux-restricted-modules-5.0.0-17-generic N/A linux-backports-modules-5.0.0-17-generic N/A linux-firmware 1.173.6 RfKill: 0: hci0: Bluetooth Soft blocked: no Hard blocked: no Tags: bionic Uname: Linux 5.0.0-17-generic x86_64 UpgradeStatus: No upgrade log present (probably fresh install) UserGroups: sudo video WifiSyslog: _MarkForUpload: True dmi.bios.date: 01/22/2019 dmi.bios.vendor: American Megatrends Inc. dmi.bios.version: 1.K0 dmi.board.asset.tag: To be filled by O.E.M. dmi.board.name: B350M MORTAR (MS-7A37) dmi.board.vendor: Micro-Star International Co., Ltd. dmi.board.version: 1.0 dmi.chassis.asset.tag: To be filled by O.E.M. dmi.chassis.type: 4 dmi.chassis.vendor: Micro-Star International Co., Ltd. dmi.chassis.version: 1.0 dmi.modalias: dmi:bvnAmericanMegatrendsInc.:bvr1.K0:bd01/22/2019:svnMicro-StarInternationalCo.,Ltd.:pnMS-7A37:pvr1.0:rvnMicro-StarInternationalCo.,Ltd.:rnB350MMORTAR(MS-7A37):rvr1.0:cvnMicro-StarInternationalCo.,Ltd.:ct4:cvr1.0: dmi.product.family: To be filled by O.E.M. dmi.product.name: MS-7A37 dmi.product.sku: To be filled by O.E.M. dmi.product.version: 1.0 dmi.sys.vendor: Micro-Star International Co., Ltd. To manage notifications about this bug go to: https://bugs.launchpad.net/linux/+bug/1833281/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp