← Back to team overview

sts-sponsors team mailing list archive

[Bug 1860813] Re: LXC container reports spike in swap occasionally

 

Revised debdiff, test information for 18.04/bionic

Autopkgtest:
autopkgtest [16:25:54]: test exercise: -----------------------]
autopkgtest [16:25:54]: test exercise:  - - - - - - - - - - results - - - - - - - - - -
exercise             PASS
autopkgtest [16:25:54]: @@@@@@@@@@@@@@@@@@@@ summary
exercise             PASS

Manual testing:

ubuntu@test-lxcfs-bionic:~$ dpkg -l | grep lxcfs
ii  lxcfs                                 3.0.3-0ubuntu1~18.04.1                          amd64        FUSE based filesystem for LXC

ubuntu@test-lxcfs-bionic:~$ lxc launch ubuntu:b test1
ubuntu@test-lxcfs-bionic:~$ lxc shell test1 #opened two in separate sessions
Session 1
root@test1:~# watch -n 0.1 "grep Swap /proc/meminfo"

Session 2
root@test1:~# while true; do free | grep Swap; done
...
Swap:       2097148           0     2097148
Swap:       2097148     2097148           0
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148     2097148           0
Swap:       2097148           0     2097148
...

ubuntu@test-lxcfs-bionic:~$ lxc stop test1
ubuntu@test-lxcfs-bionic:~$ sudo apt install ./lxcfs_3.0.3-0ubuntu1~18.04.2_amd64.deb
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'lxcfs' instead of './lxcfs_3.0.3-0ubuntu1~18.04.2_amd64.deb'
The following packages will be upgraded:
  lxcfs
1 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.
Need to get 0 B/44.2 kB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 /home/ubuntu/lxcfs_3.0.3-0ubuntu1~18.04.2_amd64.deb lxcfs amd64 3.0.3-0ubuntu1~18.04.2 [44.2 kB]
(Reading database ... 66998 files and directories currently installed.)
Preparing to unpack .../lxcfs_3.0.3-0ubuntu1~18.04.2_amd64.deb ...
Unpacking lxcfs (3.0.3-0ubuntu1~18.04.2) over (3.0.3-0ubuntu1~18.04.1) ...
Setting up lxcfs (3.0.3-0ubuntu1~18.04.2) ...
Processing triggers for ureadahead (0.100.0-21) ...
Processing triggers for systemd (237-3ubuntu10.39) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
ubuntu@test-lxcfs-bionic:~$ lxc start test1
ubuntu@test-lxcfs-bionic:~$ lxc shell test1 #opened two in separate sessions
Session 1
root@test1:~# watch -n 0.1 "grep Swap /proc/meminfo"

Session 2
root@test1:~# while true; do free | grep Swap; done
...
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
Swap:       2097148           0     2097148
...

Issue doesn't occur

** Patch added: "lp1860813_bionic.debdiff"
   https://bugs.launchpad.net/ubuntu/+source/lxcfs/+bug/1860813/+attachment/5343837/+files/lp1860813_bionic.debdiff

** Patch removed: "lp1860813_bionic.debdiff"
   https://bugs.launchpad.net/ubuntu/+source/lxcfs/+bug/1860813/+attachment/5342354/+files/lp1860813_bionic.debdiff

-- 
You received this bug notification because you are a member of STS
Sponsors, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/1860813

Title:
  LXC container reports spike in swap occasionally

Status in lxcfs package in Ubuntu:
  Fix Released
Status in lxcfs source package in Xenial:
  Invalid
Status in lxcfs source package in Bionic:
  In Progress
Status in lxcfs source package in Eoan:
  In Progress

Bug description:
  [Impact]

   * lxcfs provides a container-specific view of /proc/meminfo.
  Occasionally, with near zero or zero swap usage *and* swap accounting
  turned on (kernel parameter swapaccount=1), the container will report
  100% swap utilization.

   * This issue has been encountered and could result in unecessary
  alerts or potential automated attempts at remediating a non-existent
  "full swap" issue.

   * This fix changed the logic used for SwapFree when swap accounting
  is enabled to better handle situations where memswusage is less than
  memusage, caused by the fuzziness of the usage_in_bytes counters used
  as the source. Specifically, it added a check for memusage being
  larger than memswusage and if so, sets 0 as the value of swapusage.
  Otherwise the calculation (memswusage - memusage) remains the same.

  [Test Case]

   * Requires a Bionic (18.04) or Eoan (19.10) host with swap space.

   * Enable swap accounting with the "swapaccount=1" kernel parameter on
  the kernel command line. Edit /etc/default/grub, add "swapaccount=1"
  to the GRUB_CMDLINE_LINUX_DEFAULT="other parameters" line, then run
  "update-grub" and reboot to make the change active.

   * Ensure lxd is installed, "sudo apt install lxd"

   * Create a lxd/lxc container with "lxc launch ubuntu:X
  container_name" with X being either b[ionic] or e[oan].

   * Open two shells to the container with "lxc shell container_name"

   * In one of the shells, run: watch -n 0.1 "grep Swap /proc/meminfo"

   * In the other, run: while true; do free; done

   * You should see SwapFree intermittently drop to zero in the first
  terminal.

   * The fix results in small non-zero swap "usage" intermittently
  instead of intermittent SwapFree = 0.

  
  [Regression Potential] 

   * Low, as swap accounting must be enabled to encounter the bug and
  the fix.

   * Potential for unanticipated edge cases in the values of memusage
  and memswusage to cause incorrect swap reporting within the container,
  with swap accounting turned on.

   * Any tooling that expected, compensated, or relied on the behavior
  may no longer work as expected.

  [Other Info]
   
   * Cherrypick of a one line fix to address this specific situation.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/lxcfs/+bug/1860813/+subscriptions