Suspending and unsuspending ghci kills and spawns threads
When you run:
ghci -j8
ghci> :set -package array
# in a different terminal:
pidstat -t -p $(pidof ghc) | grep ghc_worker
kill -SIGSTOP $(pidof ghc); kill -SIGCONT $(pidof ghc)
# SIGCONT doesn't really resume it, you have to run fg in the terminal where it runs
pidstat -t -p $(pidof ghc) | grep ghc_worker
kill -SIGSTOP $(pidof ghc); kill -SIGCONT $(pidof ghc)
pidstat -t -p $(pidof ghc) | grep ghc_worker
kill -SIGSTOP $(pidof ghc); kill -SIGCONT $(pidof ghc)
pidstat -t -p $(pidof ghc) | grep ghc_worker
You get:
$ pidstat -t -p $(pidof ghc) | grep ghc_worker
06:40:55 AM - 2848953 0.00 0.00 0.00 0.00 21 |__ghc_worker
06:40:55 AM - 2848954 0.00 0.00 0.00 0.00 31 |__ghc_worker
06:40:55 AM - 2848955 0.00 0.00 0.00 0.00 21 |__ghc_worker
06:40:55 AM - 2848957 0.00 0.00 0.00 0.00 21 |__ghc_worker
06:40:55 AM - 2848958 0.00 0.00 0.00 0.00 22 |__ghc_worker
06:40:55 AM - 2848959 0.00 0.00 0.00 0.00 37 |__ghc_worker
06:40:55 AM - 2848960 0.00 0.00 0.00 0.00 3 |__ghc_worker
06:40:55 AM - 2848961 0.00 0.00 0.00 0.00 2 |__ghc_worker
06:40:55 AM - 2848962 0.00 0.00 0.00 0.00 36 |__ghc_worker
06:40:55 AM - 2848963 0.00 0.00 0.00 0.00 21 |__ghc_worker
06:40:55 AM - 2848964 0.00 0.00 0.00 0.00 31 |__ghc_worker
06:40:55 AM - 2848965 0.00 0.00 0.00 0.00 11 |__ghc_worker
06:40:55 AM - 2848966 0.00 0.00 0.00 0.00 24 |__ghc_worker
06:40:55 AM - 2848967 0.00 0.00 0.00 0.00 38 |__ghc_worker
06:40:55 AM - 2848968 0.00 0.00 0.00 0.00 23 |__ghc_worker
06:40:55 AM - 2848969 0.00 0.00 0.00 0.00 22 |__ghc_worker
06:40:55 AM - 2848970 0.00 0.00 0.00 0.00 31 |__ghc_worker
$ pidstat -t -p $(pidof ghc) | grep ghc_worker
06:41:37 AM - 2848953 0.00 0.00 0.00 0.00 21 |__ghc_worker
06:41:37 AM - 2848954 0.00 0.00 0.00 0.00 31 |__ghc_worker
06:41:37 AM - 2848955 0.00 0.00 0.00 0.00 3 |__ghc_worker
06:41:37 AM - 2848957 0.00 0.00 0.00 0.00 3 |__ghc_worker
06:41:37 AM - 2848958 0.00 0.00 0.00 0.00 22 |__ghc_worker
06:41:37 AM - 2848959 0.00 0.00 0.00 0.00 37 |__ghc_worker
06:41:37 AM - 2848960 0.00 0.00 0.00 0.00 5 |__ghc_worker
06:41:37 AM - 2848961 0.00 0.00 0.00 0.00 5 |__ghc_worker
06:41:37 AM - 2848962 0.00 0.00 0.00 0.00 36 |__ghc_worker
06:41:37 AM - 2848963 0.00 0.00 0.00 0.00 7 |__ghc_worker
06:41:37 AM - 2848964 0.00 0.00 0.00 0.00 12 |__ghc_worker
06:41:37 AM - 2848965 0.00 0.00 0.00 0.00 11 |__ghc_worker
06:41:37 AM - 2848966 0.00 0.00 0.00 0.00 24 |__ghc_worker
06:41:37 AM - 2848967 0.00 0.00 0.00 0.00 38 |__ghc_worker
06:41:37 AM - 2848968 0.00 0.00 0.00 0.00 23 |__ghc_worker
06:41:37 AM - 2848969 0.00 0.00 0.00 0.00 8 |__ghc_worker
06:41:37 AM - 2848970 0.00 0.00 0.00 0.00 14 |__ghc_worker
06:41:37 AM - 2850193 0.00 0.00 0.00 0.00 32 |__ghc_worker
06:41:37 AM - 2850194 0.00 0.00 0.00 0.00 33 |__ghc_worker
06:41:37 AM - 2850196 0.00 0.00 0.00 0.00 34 |__ghc_worker
06:41:37 AM - 2850197 0.00 0.00 0.00 0.00 35 |__ghc_worker
06:41:37 AM - 2850198 0.00 0.00 0.00 0.00 10 |__ghc_worker
06:41:37 AM - 2850199 0.00 0.00 0.00 0.00 17 |__ghc_worker
06:41:37 AM - 2850294 0.00 0.00 0.00 0.00 21 |__ghc_worker
06:41:37 AM - 2850295 0.00 0.00 0.00 0.00 31 |__ghc_worker
$ pidstat -t -p $(pidof ghc) | grep ghc_worker
06:42:43 AM - 2848953 0.00 0.00 0.00 0.00 21 |__ghc_worker
06:42:43 AM - 2848954 0.00 0.00 0.00 0.00 31 |__ghc_worker
06:42:43 AM - 2848955 0.00 0.00 0.00 0.00 3 |__ghc_worker
06:42:43 AM - 2848957 0.00 0.00 0.00 0.00 7 |__ghc_worker
06:42:43 AM - 2848958 0.00 0.00 0.00 0.00 22 |__ghc_worker
06:42:43 AM - 2848959 0.00 0.00 0.00 0.00 37 |__ghc_worker
06:42:43 AM - 2848960 0.00 0.00 0.00 0.00 9 |__ghc_worker
06:42:43 AM - 2848961 0.00 0.00 0.00 0.00 0 |__ghc_worker
06:42:43 AM - 2848962 0.00 0.00 0.00 0.00 36 |__ghc_worker
06:42:43 AM - 2848963 0.00 0.00 0.00 0.00 4 |__ghc_worker
06:42:43 AM - 2848964 0.00 0.00 0.00 0.00 12 |__ghc_worker
06:42:43 AM - 2848965 0.00 0.00 0.00 0.00 11 |__ghc_worker
06:42:43 AM - 2848966 0.00 0.00 0.00 0.00 24 |__ghc_worker
06:42:43 AM - 2848967 0.00 0.00 0.00 0.00 38 |__ghc_worker
06:42:43 AM - 2848968 0.00 0.00 0.00 0.00 23 |__ghc_worker
06:42:43 AM - 2848969 0.00 0.00 0.00 0.00 29 |__ghc_worker
06:42:43 AM - 2848970 0.00 0.00 0.00 0.00 14 |__ghc_worker
06:42:43 AM - 2850193 0.00 0.00 0.00 0.00 32 |__ghc_worker
06:42:43 AM - 2850196 0.00 0.00 0.00 0.00 34 |__ghc_worker
06:42:43 AM - 2850197 0.00 0.00 0.00 0.00 35 |__ghc_worker
06:42:43 AM - 2850198 0.00 0.00 0.00 0.00 10 |__ghc_worker
06:42:43 AM - 2850199 0.00 0.00 0.00 0.00 19 |__ghc_worker
06:42:43 AM - 2850295 0.00 0.00 0.00 0.00 13 |__ghc_worker
06:42:43 AM - 2861009 0.00 0.00 0.00 0.00 34 |__ghc_worker
06:42:43 AM - 2861010 0.00 0.00 0.00 0.00 35 |__ghc_worker
$ pidstat -t -p $(pidof ghc) | grep ghc_worker
06:43:37 AM - 2848953 0.00 0.00 0.00 0.00 21 |__ghc_worker
06:43:37 AM - 2848954 0.00 0.00 0.00 0.00 31 |__ghc_worker
06:43:37 AM - 2848955 0.00 0.00 0.00 0.00 9 |__ghc_worker
06:43:37 AM - 2848957 0.00 0.00 0.00 0.00 9 |__ghc_worker
06:43:37 AM - 2848958 0.00 0.00 0.00 0.00 22 |__ghc_worker
06:43:37 AM - 2848959 0.00 0.00 0.00 0.00 37 |__ghc_worker
06:43:37 AM - 2848960 0.00 0.00 0.00 0.00 29 |__ghc_worker
06:43:37 AM - 2848961 0.00 0.00 0.00 0.00 20 |__ghc_worker
06:43:37 AM - 2848962 0.00 0.00 0.00 0.00 36 |__ghc_worker
06:43:37 AM - 2848963 0.00 0.00 0.00 0.00 3 |__ghc_worker
06:43:37 AM - 2848964 0.00 0.00 0.00 0.00 12 |__ghc_worker
06:43:37 AM - 2848965 0.00 0.00 0.00 0.00 15 |__ghc_worker
06:43:37 AM - 2848966 0.00 0.00 0.00 0.00 24 |__ghc_worker
06:43:37 AM - 2848967 0.00 0.00 0.00 0.00 38 |__ghc_worker
06:43:37 AM - 2848968 0.00 0.00 0.00 0.00 23 |__ghc_worker
06:43:37 AM - 2848969 0.00 0.00 0.00 0.00 1 |__ghc_worker
06:43:37 AM - 2848970 0.00 0.00 0.00 0.00 19 |__ghc_worker
06:43:37 AM - 2850193 0.00 0.00 0.00 0.00 32 |__ghc_worker
06:43:37 AM - 2850196 0.00 0.00 0.00 0.00 34 |__ghc_worker
06:43:37 AM - 2850197 0.00 0.00 0.00 0.00 35 |__ghc_worker
06:43:37 AM - 2850198 0.00 0.00 0.00 0.00 30 |__ghc_worker
06:43:37 AM - 2861009 0.00 0.00 0.00 0.00 17 |__ghc_worker
06:43:37 AM - 2861010 0.00 0.00 0.00 0.00 19 |__ghc_worker
06:43:37 AM - 2862954 0.00 0.00 0.00 0.00 2 |__ghc_worker
06:43:37 AM - 2862956 0.00 0.00 0.00 0.00 26 |__ghc_worker
The sets of threads are changing on every suspend, unsuspend combination.
This is really visible when running in gdb with -j40, gdb just spews threads getting spawned and killed:
[Thread 0x7f0b767fc700 (LWP 2881933) exited]
[New Thread 0x7f0b767fc700 (LWP 2881940)]
[New Thread 0x7f0cc2cfd700 (LWP 2881941)]
[Thread 0x7f0b76ffd700 (LWP 2881928) exited]
[New Thread 0x7f0b7dffb700 (LWP 2881942)]
[New Thread 0x7f0b76ffd700 (LWP 2881943)]
[New Thread 0x7f0b7ffff700 (LWP 2881944)]
[Thread 0x7f0b777fe700 (LWP 2881932) exited]
[Thread 0x7f0b77fff700 (LWP 2881931) exited]
[Thread 0x7f0b7d7fa700 (LWP 2881927) exited]
[Thread 0x7f0b7f7fe700 (LWP 2881926) exited]
[New Thread 0x7f0b7f7fe700 (LWP 2881945)]
[New Thread 0x7f0b7d7fa700 (LWP 2881948)]
[Thread 0x7f0cc2cfd700 (LWP 2881941) exited]
[Thread 0x7f0b75ffb700 (LWP 2881938) exited]
[New Thread 0x7f0cc2cfd700 (LWP 2881949)]
[Thread 0x7f0b767fc700 (LWP 2881940) exited]
[New Thread 0x7f0b767fc700 (LWP 2881950)]
[New Thread 0x7f0b75ffb700 (LWP 2881951)]
[New Thread 0x7f0b77fff700 (LWP 2881952)]
[Thread 0x7f0b757fa700 (LWP 2881939) exited]
[Thread 0x7f0b7d7fa700 (LWP 2881948) exited]
[New Thread 0x7f0b757fa700 (LWP 2881953)]
[Thread 0x7f0b7effd700 (LWP 2881936) exited]
[Thread 0x7f0cc3cff700 (LWP 2881937) exited]
[New Thread 0x7f0cc3cff700 (LWP 2881954)]
[New Thread 0x7f0b7effd700 (LWP 2881955)]
[New Thread 0x7f0b7d7fa700 (LWP 2881956)]
[Thread 0x7f0b7dffb700 (LWP 2881942) exited]
[New Thread 0x7f0b777fe700 (LWP 2881957)]
[New Thread 0x7f0b7dffb700 (LWP 2881958)]
[Thread 0x7f0b76ffd700 (LWP 2881943) exited]
[New Thread 0x7f0b76ffd700 (LWP 2881959)]
[Thread 0x7f0b7e7fc700 (LWP 2881935) exited]
[Thread 0x7f0b7effd700 (LWP 2881955) exited]
[New Thread 0x7f0b7effd700 (LWP 2881962)]
[New Thread 0x7f0b7e7fc700 (LWP 2881963)]
[Thread 0x7f0b7f7fe700 (LWP 2881945) exited]
[New Thread 0x7f0b7f7fe700 (LWP 2881964)]
[New Thread 0x7f0b7cff9700 (LWP 2881965)]
[Thread 0x7f0b75ffb700 (LWP 2881951) exited]
[Thread 0x7f0b7dffb700 (LWP 2881958) exited]
[Thread 0x7f0cc3cff700 (LWP 2881954) exited]
[New Thread 0x7f0cc3cff700 (LWP 2881967)]
[New Thread 0x7f0b7dffb700 (LWP 2881968)]
[Thread 0x7f0b777fe700 (LWP 2881957) exited]
[Thread 0x7f0b757fa700 (LWP 2881953) exited]
[Thread 0x7f0cc2cfd700 (LWP 2881949) exited]
[Thread 0x7f0b7ffff700 (LWP 2881944) exited]
[New Thread 0x7f0cc2cfd700 (LWP 2881969)]
[Thread 0x7f0b7e7fc700 (LWP 2881963) exited]
[Thread 0x7f0b767fc700 (LWP 2881950) exited]
[New Thread 0x7f0b767fc700 (LWP 2881970)]
[New Thread 0x7f0b7e7fc700 (LWP 2881971)]
[Thread 0x7f0b77fff700 (LWP 2881952) exited]
[New Thread 0x7f0b7ffff700 (LWP 2881972)]
[New Thread 0x7f0b77fff700 (LWP 2881973)]
[New Thread 0x7f0b757fa700 (LWP 2881974)]
[Thread 0x7f0b7dffb700 (LWP 2881968) exited]
[New Thread 0x7f0b7dffb700 (LWP 2881975)]
[Thread 0x7f0cc2cfd700 (LWP 2881969) exited]
[New Thread 0x7f0cc2cfd700 (LWP 2881976)]
[Thread 0x7f0b76ffd700 (LWP 2881959) exited]
[Thread 0x7f0b757fa700 (LWP 2881974) exited]
[New Thread 0x7f0b76ffd700 (LWP 2881977)]
[New Thread 0x7f0b757fa700 (LWP 2881978)]
[New Thread 0x7f0b777fe700 (LWP 2881979)]
[Thread 0x7f0b7effd700 (LWP 2881962) exited]
[New Thread 0x7f0b7effd700 (LWP 2881980)]
[Thread 0x7f0b7ffff700 (LWP 2881972) exited]
[Thread 0x7f0b7e7fc700 (LWP 2881971) exited]
[Thread 0x7f0b77fff700 (LWP 2881973) exited]
[New Thread 0x7f0b77fff700 (LWP 2881981)]
[Thread 0x7f0b7d7fa700 (LWP 2881956) exited]
[New Thread 0x7f0b7d7fa700 (LWP 2881982)]
[New Thread 0x7f0b7e7fc700 (LWP 2881983)]
[Thread 0x7f0cc2cfd700 (LWP 2881976) exited]
[New Thread 0x7f0cc2cfd700 (LWP 2881984)]
[New Thread 0x7f0b7ffff700 (LWP 2881985)]
[New Thread 0x7f0b75ffb700 (LWP 2881986)]
[Thread 0x7f0b7dffb700 (LWP 2881975) exited]
[New Thread 0x7f0b7dffb700 (LWP 2881987)]
[New Thread 0x7f0b74ff9700 (LWP 2881988)]
[Thread 0x7f0b777fe700 (LWP 2881979) exited]
[Thread 0x7f0b7effd700 (LWP 2881980) exited]
[Thread 0x7f0b76ffd700 (LWP 2881977) exited]