Mam proces, który wydaje się być w impasie:CPU Wykorzystanie wysokiej do spania przetwarza
# strace -p 5075
Process 5075 attached - interrupt to quit
futex(0x419cf9d0, FUTEX_WAIT, 5095, NULL
on siedzi na „futex” wywołania systemowego, i wydaje się być w nieskończoność oczekiwanie na blokadę. Proces jest przedstawiony do spożywania dużej ilości CPU podczas „top” jest prowadzony:
# top -b -n 1
top - 23:13:18 up 113 days, 4:19, 1 user, load average: 1.69, 1.74, 1.72
Tasks: 269 total, 1 running, 268 sleeping, 0 stopped, 0 zombie
Cpu(s): 8.1%us, 0.1%sy, 0.0%ni, 91.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 12165696k total, 3810476k used, 8355220k free, 29440k buffers
Swap: 8388600k total, 43312k used, 8345288k free, 879988k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5075 omdb 18 0 2373m 1.7g 26m S 199.7 14.9 102804:11 java
proces jest również okazały się w „S” - stan uśpienia, co ma sens, jeśli czeka na jakiś ratunek. Jednak nie rozumiem, dlaczego wykorzystanie procesora byłoby bliskie 200%, jeśli proces jest w stanie uśpienia. Dlaczego top raportuje tak wysokie wykorzystanie procesora w procesie spania? Czy jego wykorzystanie procesora nie powinno wynosić zero?
Cóż, fakt, że 'top' jest uruchomiony nie oznacza, że drugi proces musi spać. Ponad 100% wykorzystania implikuje system wielordzeniowy ;-). Chociaż interaktywna powłoka i podprocesy, które ją spawns mogą być jednocześnie uruchomione i * dzieje się * w celu spowodowania, że inne zadania śpią, ale niekoniecznie jest to bezpośrednim powodem, prawda? – binki