parallel version 20190922 from EPEL 8 running a Rocky Linux 8 system
occasionally gets into an I/O spin loop writing 8193 bytes of "x" to a deleted
TMPDIR file and then immediately truncating it, e.g.,
# cat /etc/redhat-release
Rocky Linux release 8.5 (Green Obsidian)
# yum list parallel
Installed Packages
parallel.noarch 20190922-1.el8 @epel
# strace -p 836133
...
wait4(-1, 0x7ffc539e8a14, WNOHANG, NULL) = 0
write(10, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 8192) = 8192
write(10, "x", 1) = 1
ftruncate(10, 0) = 0
lseek(10, 0, SEEK_SET) = 0
lseek(10, 0, SEEK_CUR) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, {sa_handler=0x7fe81f000dc0, sa_mask=[],
sa_flags=SA_RESTORER, sa_restorer=0x7fe81ed29c20}, {sa_handler=SIG_DFL,
sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fe81ed29c20}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
select(0, NULL, NULL, NULL, {tv_sec=0, tv_usec=0}) = 0 (Timeout)
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER,
sa_restorer=0x7fe81ed29c20}, {sa_handler=0x7fe81f000dc0, sa_mask=[],
sa_flags=SA_RESTORER, sa_restorer=0x7fe81ed29c20}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
wait4(-1, 0x7ffc539e8a14, WNOHANG, NULL) = 0
write(10, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 8192) = 8192
write(10, "x", 1) = 1
ftruncate(10, 0) = 0
lseek(10, 0, SEEK_SET) = 0
lseek(10, 0, SEEK_CUR) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, {sa_handler=0x7fe81f000dc0, sa_mask=[],
sa_flags=SA_RESTORER, sa_restorer=0x7fe81ed29c20}, {sa_handler=SIG_DFL,
sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fe81ed29c20}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
select(0, NULL, NULL, NULL, {tv_sec=0, tv_usec=0}) = 0 (Timeout)
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER,
sa_restorer=0x7fe81ed29c20}, {sa_handler=0x7fe81f000dc0, sa_mask=[],
sa_flags=SA_RESTORER, sa_restorer=0x7fe81ed29c20}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
wait4(-1, 0x7ffc539e8a14, WNOHANG, NULL) = 0
write(10, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 8192) = 8192
write(10, "x", 1) = 1
ftruncate(10, 0) = 0
>From lsof fd=10 is,
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
parallel 836133 root 10u REG 0,21 0 8450409 /dev/shm/parTQp67.df
(deleted)
And /dev/shm is due to my setting TMPDIR=/dev/shm to reduce the I/O load on the
/tmp filesystem.
Any thoughts on how to avoid this seemingly useless spin loop with high CPU and
I/O resource consumption?
Thanks.
--
Stuart Anderson
[email protected]