spack/share/spack
Massimiliano Culpo 5b272e3ff3
commands: use a single ThreadPool for spack versions (#16749)
This fixes a fork bomb in `spack versions`. Recursive generation of pools
to scrape URLs in `_spider` was creating large numbers of processes.
Instead of recursively creating process pools, we now use a single
`ThreadPool` with a concurrency limit.

More on the issue: having ~10 users running at the same time spack
versions on front-end nodes caused kernel lockup due to the high number
of sockets opened (sys-admin reports ~210k distributed over 3 nodes).
Users were internal, so they had ulimit -n set to ~70k.

The forking behavior could be observed by just running:

    $ spack versions boost

and checking the number of processes spawned. Number of processes
per se was not the issue, but each one of them opens a socket
which can stress `iptables`.

In the original issue the kernel watchdog was reporting:

    Message from syslogd@login03 at May 19 12:01:30 ...
    kernel:Watchdog CPU:110 Hard LOCKUP
    Message from syslogd@login03 at May 19 12:01:31 ...
    kernel:watchdog: BUG: soft lockup - CPU#110 stuck for 23s! [python3:2756]
    Message from syslogd@login03 at May 19 12:01:31 ...
    kernel:watchdog: BUG: soft lockup - CPU#94 stuck for 22s! [iptables:5603]
2020-06-05 00:08:32 -07:00
..
bash Added alias and bash completion for spacktivate (#16472) 2020-05-13 12:02:38 -06:00
csh macos: use DYLD_FALLBACK_LIBRARY_PATH instead of DYLD_LIBRARY_PATH 2020-04-16 17:23:33 -07:00
docker autotools: remove FORCE_UNSAFE_CONFIGURE from docs, commands, code (#16145) 2020-04-20 08:32:03 -07:00
docs/docker/module-file-tutorial autotools: remove FORCE_UNSAFE_CONFIGURE from docs, commands, code (#16145) 2020-04-20 08:32:03 -07:00
gitlab Pipelines: Support DAG scheduling and dynamic child pipelines 2020-05-14 21:11:07 -07:00
logo add artisanal handcrafted SVG Spack logo. (#6165) 2017-11-06 22:42:16 -08:00
qa travis: use bionic as default for Linux (#16521) 2020-05-12 13:56:01 -07:00
templates spack containerize generates containers from envs (#14202) 2020-01-30 17:19:55 -08:00
setup-env.csh Added alias and bash completion for spacktivate (#16472) 2020-05-13 12:02:38 -06:00
setup-env.sh Added alias and bash completion for spacktivate (#16472) 2020-05-13 12:02:38 -06:00
spack-completion.bash commands: use a single ThreadPool for spack versions (#16749) 2020-06-05 00:08:32 -07:00