Bug 1764811 - (systemd) uses 100% CPU, high memory, with NIS
Summary: (systemd) uses 100% CPU, high memory, with NIS
Keywords:
Status: CLOSED DUPLICATE of bug 1705641
Alias: None
Product: Fedora
Classification: Fedora
Component: nss_nis
Version: 30
Hardware: x86_64
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: systemd-maint
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-10-23 19:19 UTC by RobbieTheK
Modified: 2019-11-04 12:58 UTC (History)
8 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2019-10-23 19:56:17 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description RobbieTheK 2019-10-23 19:19:54 UTC
Not sure if NIS is affecting things but the systemd process--note the parenthesis below--tends to use 100% CPU and lots of memory. Kernel is 5.2.17-200.fc30.x86_64

top - 14:33:37 up 19 days,  1:05,  1 user,  load average: 3.31, 2.08, 1.24
Tasks: 309 total,   3 running, 306 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.1 us, 10.2 sy,  0.0 ni, 84.4 id,  2.0 wa,  0.0 hi,  0.3 si,  0.0 st
MiB Mem :  63879.6 total,   2461.8 free,  42386.4 used,  19031.4 buff/cache
MiB Swap:  22892.0 total,  22411.7 free,    480.3 used.  20425.6 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 3770 root      20   0   52.2g  33.5g   4232 R  69.6  53.7   0:33.51 (systemd)

I ran a strace until the process finally completed and got this:

strace -p 3770
strace: Process 3770 attached
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
getsockname(5, {sa_family=AF_INET, sin_port=htons(978), sin_addr=inet_addr("0.0.0.0")}, [128->16]) = 0
getsockopt(5, SOL_SOCKET, SO_TYPE, [2], [4]) = 0
getpid()                                = 3770
setsockopt(5, SOL_IP, IP_RECVERR, [1], 4) = 0
ioctl(5, FIONBIO, [1])                  = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
sendto(5, "]\276\30\201\0\0\0\0\0\0\0\2\0\1\206\240\0\0\0\4\0\0\0\3\0\0\0\0\0\0\0\0"..., 92, 0, {sa_family=AF_INET, sin_port=htons(111), sin_addr=inet_addr("150.108.64.52")}, 16) = 92
poll([{fd=5, events=POLLIN}], 1, 15000) = 1 ([{fd=5, revents=POLLIN}])
recvfrom(5, "]\276\30\201\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\023150."..., 8800, 0, NULL, NULL) = 48
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
close(5)                                = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) = 5
getsockname(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [128->16]) = 0
getsockopt(5, SOL_SOCKET, SO_TYPE, [2], [4]) = 0
getsockname(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [128->16]) = 0
getpid()                                = 3770
bind(5, {sa_family=AF_INET, sin_port=htons(978), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
getsockname(5, {sa_family=AF_INET, sin_port=htons(978), sin_addr=inet_addr("0.0.0.0")}, [128->16]) = 0
getsockopt(5, SOL_SOCKET, SO_TYPE, [2], [4]) = 0
getpid()                                = 3770
setsockopt(5, SOL_IP, IP_RECVERR, [1], 4) = 0
ioctl(5, FIONBIO, [1])                  = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
close(4)                                = 0
close(3)                                = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
sendto(5, "]\277\2274\0\0\0\0\0\0\0\2\0\1\206\244\0\0\0\2\0\0\0\3\0\0\0\0\0\0\0\0"..., 80, 0, {sa_family=AF_INET, sin_port=htons(944), sin_addr=inet_addr("150.108.64.52")}, 16) = 80
poll([{fd=5, events=POLLIN}], 1, 15000) = 1 ([{fd=5, revents=POLLIN}])
recvfrom(5, "]\277\2274\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\237"..., 8800, 0, NULL, NULL) = 192
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
close(5)                                = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
openat(AT_FDCWD, "/etc/default/nss", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/proc/sys/kernel/ngroups_max", O_RDONLY) = 3
read(3, "65536\n", 31)                  = 6
close(3)                                = 0
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(3)                                = 0
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(3)                                = 0
openat(AT_FDCWD, "/etc/group", O_RDONLY|O_CLOEXEC) = 3
lseek(3, 0, SEEK_CUR)                   = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=1134, ...}) = 0
read(3, "root:x:0:\nbin:x:1:\ndaemon:x:2:\ns"..., 4096) = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
lseek(3, 0, SEEK_CUR)                   = 1134
read(3, "", 4096)                       = 0
close(3)                                = 0
openat(AT_FDCWD, "/var/yp/binding/divscimath.3", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=140, ...}) = 0
read(3, "\0\0\0\1\0\0\0\3udp\0\0\0\0\1\0\0\0\1\0\0\0\4inet\0\0\0\3"..., 4096) = 140
openat(AT_FDCWD, "/etc/netconfig", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=767, ...}) = 0
read(4, "#\n# The network configuration fi"..., 4096) = 767
socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) = 5
getsockname(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [128->16]) = 0
getsockopt(5, SOL_SOCKET, SO_TYPE, [2], [4]) = 0
getsockname(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [128->16]) = 0
getpid()                                = 3770
bind(5, {sa_family=AF_INET, sin_port=htons(978), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
getsockname(5, {sa_family=AF_INET, sin_port=htons(978), sin_addr=inet_addr("0.0.0.0")}, [128->16]) = 0
getsockopt(5, SOL_SOCKET, SO_TYPE, [2], [4]) = 0
getpid()                                = 3770
setsockopt(5, SOL_IP, IP_RECVERR, [1], 4) = 0
ioctl(5, FIONBIO, [1])                  = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
sendto(5, "]\262\277&\0\0\0\0\0\0\0\2\0\1\206\240\0\0\0\4\0\0\0\3\0\0\0\0\0\0\0\0"..., 92, 0, {sa_family=AF_INET, sin_port=htons(111), sin_addr=inet_addr("150.108.64.52")}, 16) = 92
poll([{fd=5, events=POLLIN}], 1, 15000) = 1 ([{fd=5, revents=POLLIN}])
recvfrom(5, "]\262\277&\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\023150."..., 8800, 0, NULL, NULL) = 48
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
close(5)                                = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) = 5
getsockname(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [128->16]) = 0
getsockopt(5, SOL_SOCKET, SO_TYPE, [2], [4]) = 0
getsockname(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [128->16]) = 0
getpid()                                = 3770
bind(5, {sa_family=AF_INET, sin_port=htons(978), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
getsockname(5, {sa_family=AF_INET, sin_port=htons(978), sin_addr=inet_addr("0.0.0.0")}, [128->16]) = 0
getsockopt(5, SOL_SOCKET, SO_TYPE, [2], [4]) = 0
getpid()                                = 3770
setsockopt(5, SOL_IP, IP_RECVERR, [1], 4) = 0
ioctl(5, FIONBIO, [1])                  = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
close(4)                                = 0
close(3)                                = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
close(5)                                = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
openat(AT_FDCWD, "/etc/netconfig", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=767, ...}) = 0
read(3, "#\n# The network configuration fi"..., 4096) = 767
openat(AT_FDCWD, "/etc/services", O_RDONLY|O_CLOEXEC) = 4
lseek(4, 0, SEEK_CUR)                   = 0
fstat(4, {st_mode=S_IFREG|0644, st_size=692323, ...}) = 0
read(4, "# /etc/services:\n# $Id: services"..., 4096) = 4096
lseek(4, 0, SEEK_CUR)                   = 4096
read(4, "deWeb HTTP\nhttp            80/ud"..., 4096) = 4096
close(4)                                = 0
stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=101, ...}) = 0
openat(AT_FDCWD, "/etc/hosts", O_RDONLY|O_CLOEXEC) = 4
lseek(4, 0, SEEK_CUR)                   = 0
fstat(4, {st_mode=S_IFREG|0644, st_size=353, ...}) = 0
read(4, "127.0.0.1   localhost localhost."..., 4096) = 353
lseek(4, 0, SEEK_CUR)                   = 353
read(4, "", 4096)                       = 0
close(4)                                = 0
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) = 4
getsockname(4, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [128->16]) = 0
getsockopt(4, SOL_SOCKET, SO_TYPE, [1], [4]) = 0
getsockname(4, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [128->16]) = 0
getpid()                                = 3770
bind(4, {sa_family=AF_INET, sin_port=htons(978), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
setsockopt(4, SOL_TCP, TCP_NODELAY, [1], 4) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
mmap(NULL, 4294967296, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f25cc000000
mmap(NULL, 51539607552, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f19cc000000
^[[F+++ killed by SIGKILL +++

Comment 1 Zbigniew Jędrzejewski-Szmek 2019-10-23 19:56:17 UTC
> openat(AT_FDCWD, "/var/yp/binding/divscimath.3", O_RDONLY|O_CLOEXEC) = 3

Yeah, we figure out at some point that nss_nis (and some code in glibc called by it!)
allocated memory based on the maximum number of fds possible.

I'll close this as dup, because it's most likely the same thing.

I know this is annoying, but this really needs to be fixed on the nis side.
Somebody who uses nis and cares about it will have to invest the time to fix 
the code.

*** This bug has been marked as a duplicate of bug 1705641 ***


Note You need to log in before you can comment on or make changes to this bug.