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
s...@caltech.edu




Reply via email to