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

Reply via email to