Quá trình zombie sử dụng CPU 100%


12

Một quy trình zombie , không nên sử dụng bất kỳ tài nguyên nào (RAM và CPU), đang chiếm dụng toàn bộ lõi trên bản cài đặt máy tính để bàn Ubuntu 11.10 64 bit 8 lõi của tôi.

Đây là đầu ra của ps -el|grep Z:

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 Z  1000 10317     1 99  80   0 -     0 exit   ?        19:27:15 java <defunct>

... và đây là một đoạn trích từ top:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                
10317 deltik    20   0     0    0    0 Z  100  0.0   1170:17 java <defunct>
 1424 root      20   0  612m 193m 158m S   14  2.4 287:17.11 Xorg
12580 deltik    20   0  710m 135m  46m S    5  1.7  27:31.07 compiz

Đây là cách quá trình zombie ra đời:

  1. Tôi đã mở một JAR Java có tên là minecraft.jar . Trình khởi chạy này tải xuống một tệp JAR khác về ~ / .minecraft / bin / minecraft.jar
  2. JAR đó đã được thực thi khi tôi khóa máy tính của tôi xscreensaver.
  3. Sau đó, tôi nhập mật khẩu để mở khóa máy tính và tôi thấy cửa sổ Minecraft đã bị đóng băng.
  4. Tôi đã thử giết nó (PID 10317) với gnome-system-monitor. Nó trở thành một thây ma.
  5. kill -9 10317 đã không hiệu quả.
  6. xkillchỉ đóng cửa sổ có tiêu đề "Minecraft"; nó đã không đóng javaquá trình cơ bản .

Thông tin liên quan:

  • Trình điều khiển đồ họa là FGLRX và nó đã gây ra sự cố nổi tiếng với Unity của Ubuntu 11.04Ubuntu 11.10 , bao gồm cả việc sử dụng CPU cao Xorgcompiz.

Tôi muốn biết:

  1. Cách nào để phá hủy quá trình này javamà không cần khởi động lại, nếu có?
  2. Tại sao vấn đề này xảy ra?
  3. Tôi có thể làm gì để ngăn chặn vấn đề này xảy ra lần nữa?

1
Tôi sợ rằng cá nhân tôi không thể giúp bạn, nhưng tôi khen bạn đã làm tốt công việc giải thích những gì đã xảy ra và những gì bạn đã cố gắng cho đến nay!
nheo

7
"Này các bạn, ứng dụng này đang sử dụng rất nhiều thời gian của CPU. Nhân tiện, nó được viết bằng Java. Không biết hai cái này có liên quan không ???"
ta.speot.is

Rất có thể nó đang quay trên một cái khóa.
Daniel R Hicks


Nó cũng xảy ra với tôi khi chơi, @RedGrittyBrick một quá trình java zombie chạy bình minecraft và một zombie trong trò chơi là những thứ khác nhau.
Falk

Câu trả lời:


8

Quá trình này đã được sửa chữa lại init, vì vậy nó sẽ được gặt hái (nếu không, giải pháp có thể là giết cha mẹ của nó). Nó dường như bị mắc kẹt exit, dựa trên các WCHANlĩnh vực.

Nó thực sự có thể đang làm một cái gì đó (như tạo ra một bãi chứa lõi) sẽ hoàn thành và nó sẽ tự biến mất. Thật không may, nó có khả năng quay trong kernel vì trình điều khiển bị hỏng và cuối cùng, tùy chọn duy nhất của bạn sẽ là khởi động lại.


Đã được một thời gian kể từ khi tôi hỏi câu hỏi này, nhưng tôi không thể tạo lại vấn đề của mình một lần nữa, đặc biệt là sau khi cập nhật FGLRX lên phiên bản mới nhất. Tôi đã chọn đây là câu trả lời tốt nhất vì nó chỉ ra trình điều khiển bị hỏng và là toàn diện nhất.
Deltik


4

Quá trình zombie đã chết nhưng chưa được dọn sạch (gặt hái là thuật ngữ chính xác) và do đó killkhông hoạt động trên chúng như một quy trình thông thường. Quá trình vẫn còn trong bảng quy trình nhưng khi nó là zombie, tài nguyên đã được phân bổ lại.

Bạn có thể thử gửi SIGCHLDtín hiệu cho cha mẹ quá trình, nếu không thì init đã nhận nó và cuối cùng sẽ gặt hái được. Nếu bạn muốn tăng tốc quá trình, bạn chỉ cần khởi động lại.


1

Đây là một lỗi kernel. Bạn đang sử dụng ecryptfs để mã hóa thư mục nhà của bạn? Có một lỗi được gửi về điều đó trên launchpad.net.


Không, tôi tự mã hóa các tập tin trong thư mục nhà của tôi.
Deltik
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.