[Bug 1268326] Re: locate spawns very CPU hungry find process

Menachem Shapiro menachem.shapiro at gmail.com
Mon Jan 20 12:26:52 UTC 2014


Related: 
https://bugs.launchpad.net/ubuntu/+source/findutils/+bug/332790
https://bugs.launchpad.net/ubuntu/+source/mlocate/+bug/1190696

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to findutils in Ubuntu.
https://bugs.launchpad.net/bugs/1268326

Title:
  locate spawns very CPU hungry find process

Status in “findutils” package in Ubuntu:
  Confirmed

Bug description:
  /etc/cron.daily/locate job spawns find process which very aggressively
  uses CPU. Full scan of filesystem of HDD on my laptop takes about 40
  minutes and almost all of that time one core is 100% occupied by find.

  Here is the command that runs

  /usr/bin/find / -ignore_readdir_race      \( -fstype NFS -o -fstype
  nfs -o -fstype nfs4 -o -fstype afs -o -fstype binfmt_misc -o -fstype
  proc -o -fstype smbfs -o -fstype autofs -o -fstype iso9660 -o -fstype
  ncpfs -o -fstype coda -o -fstype devpts -o -fstype ftpfs -o -fstype
  devfs -o -fstype mfs -o -fstype shfs -o -fstype sysfs -o -fstype cifs
  -o -fstype lustre_lite -o -fstype tmpfs -o -fstype usbfs -o -fstype
  udf -o -fstype ocfs2 -o      -type d -regex
  '\(^/tmp$\)\|\(^/usr/tmp$\)\|\(^/var/tmp$\)\|\(^/afs$\)\|\(^/amd$\)\|\(^/alex$\)\|\(^/var/spool$\)\|\(^/sfs$\)\|\(^/media$\)\|\(^/var/lib/schroot/mount$\)'
  \) -prune -o -print0

  After brief investigation I found that CPU strain is produced by
  filesystem type checks. For example, here is original command
  benchmark (with additionally excluded /home/snapshots directory which
  contains dozens of BTRFS snapshots with too many files):

  time sudo /usr/bin/find / -ignore_readdir_race      \( -fstype NFS -o -fstype nfs -o -fstype nfs4 -o -fstype afs -o -fstype binfmt_misc -o -fstype proc -o -fstype smbfs -o -fstype autofs -o -fstype iso9660 -o -fstype ncpfs -o -fstype coda -o -fstype devpts -o -fstype ftpfs -o -fstype devfs -o -fstype mfs -o -fstype shfs -o -fstype sysfs -o -fstype cifs -o -fstype lustre_lite -o -fstype tmpfs -o -fstype usbfs -o -fstype udf -o -fstype ocfs2 -o      -type d -regex '\(^/tmp$\)\|\(^/usr/tmp$\)\|\(^/var/tmp$\)\|\(^/afs$\)\|\(^/amd$\)\|\(^/alex$\)\|\(^/var/spool$\)\|\(^/sfs$\)\|\(^/media$\)\|\(^/var/lib/schroot/mount$\)\|\(^/home/snapshots$\)' \) -prune -o -print0 | pv > /dev/null
  57,1MB 0:13:17 [73,3kB/s] [     <=>                                                                                                                                    ]

  real	13m17.647s
  user	6m2.983s
  sys	6m41.837s

  And here is benchmark of command with severely shortened filesystem
  check list:

  time sudo /usr/bin/find / -ignore_readdir_race      \( -fstype afs -o -fstype binfmt_misc -o -fstype proc -o -fstype autofs -o -fstype devpts -o -fstype devfs -o -fstype sysfs -o -fstype tmpfs -o -fstype usbfs -o      -type d -regex '\(^/tmp$\)\|\(^/usr/tmp$\)\|\(^/var/tmp$\)\|\(^/afs$\)\|\(^/amd$\)\|\(^/alex$\)\|\(^/var/spool$\)\|\(^/sfs$\)\|\(^/media$\)\|\(^/var/lib/schroot/mount$\)\|\(^/home/snapshots$\)' \) -prune -o -print0 | pv > /dev/null
  57,1MB 0:05:04 [ 192kB/s] [             <=>                                                                                                                            ]

  real	5m4.092s
  user	2m24.112s
  sys	2m39.951s

  Each excluded filesystem greatly speeds up the process.

  This is really annoying, as somehow daily cron jobs sometimes start
  even if my laptop is running on battery o_O (AFAIK anacron avoids
  running periodic jobs ).

  I checked the same find command on onther PC with arch linux, and it
  used less than 10 seconds of CPU time with comparable number of files,
  so it is possible, that something is wrong with ubuntu find version or
  somehow related to ubuntu VFS specifics.

  Also locate may check mounted filesystem and do not include unused
  filesystems when compiling command for find.

  ProblemType: Bug
  DistroRelease: Ubuntu 13.10
  Package: locate 4.4.2-6ubuntu1
  ProcVersionSignature: Ubuntu 3.11.0-15.23-generic 3.11.10
  Uname: Linux 3.11.0-15-generic x86_64
  ApportVersion: 2.12.5-0ubuntu2.2
  Architecture: amd64
  Date: Sun Jan 12 17:27:24 2014
  Dependencies:
   findutils 4.4.2-6ubuntu1
   gcc-4.8-base 4.8.1-10ubuntu9
   libc6 2.17-93ubuntu4
   libgcc1 1:4.8.1-10ubuntu9
   multiarch-support 2.17-93ubuntu4
  InstallationDate: Installed on 2012-07-01 (559 days ago)
  InstallationMedia: Xubuntu 12.04 LTS "Precise Pangolin" - Release amd64 (20120425)
  MarkForUpload: True
  SourcePackage: findutils
  UpgradeStatus: Upgraded to saucy on 2014-01-02 (10 days ago)

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



More information about the foundations-bugs mailing list