Tôi thấy kswapd sử dụng CPU 100% ... làm thế nào tôi có thể biết kswapd thay mặt cho quá trình nào đang được sử dụng nhiều như vậy?
Tôi thấy kswapd sử dụng CPU 100% ... làm thế nào tôi có thể biết kswapd thay mặt cho quá trình nào đang được sử dụng nhiều như vậy?
Câu trả lời:
kswapd đang quản lý không gian hoán đổi để đáp ứng nhu cầu bộ nhớ lớn hơn khả năng vật lý cho tất cả các quy trình.
Đó là quá trình bất khả tri, nó chỉ quan tâm đến những trang nào được truy cập và khi nào (nó phức tạp hơn điều này tất nhiên nhưng để giữ cho mọi thứ đơn giản, chúng tôi cũng có thể xem nó theo cách này).
Vì vậy, câu hỏi thực sự là "quá trình nào có gánh nặng lớn nhất đối với bộ nhớ đang khiến kswapd cần phải trang mọi lúc".
Điều đó được trả lời dễ dàng nhất bằng cách sử dụng 'top' và chuyển sang chế độ sắp xếp sử dụng bộ nhớ.
top
đang nói với tôi rằng không có thời gian nào được sử dụng trong IO chờ đợi và gần như 100% thời gian đang được sử dụng trong hệ thống. Thông tin thêm: kswapd thường sử dụng CPU 100% khi trao đổi được sử dụng
Bạn có thể viết kịch bản .. nhưng bạn cũng có thể thực hiện qua đầu
Chạy đầu rồi nhấn O theo sau là p rồi vào
Bây giờ tất cả các quy trình được sắp xếp theo cách sử dụng trao đổi và bạn có thể thấy những quy trình nào đang sử dụng nó
Nếu bạn đang sử dụng Ubuntu 15.10 trở lên, đây thực sự có thể là kết quả của một lỗi , đặc biệt nếu hệ thống của bạn là máy ảo thiếu phân vùng trao đổi (ví dụ: AWS EC2). Vấn đề tồn tại trên các bản phân phối khác , nhưng, khi viết, không rõ liệu cùng một bản sửa lỗi có hoạt động phổ biến hay không.
Một cách giải quyết tạm thời:
sudo ln -s /dev/null /etc/udev/rules.d/40-vm-hotadd.rules
sudo reboot
Lưu ý rằng điều này sẽ vô hiệu hóa RAM / CPU hotadding cho các máy ảo Xen và Hyper-V.
echo 3 > /proc/sys/vm/drop_caches
làm giảm bớt nó một khi nó bắt đầu xảy ra. Bây giờ tôi đã có lệnh về một công việc định kỳ và nó dường như có ích, hoặc ít nhất là hạn chế thời gian của vụ thảm sát OOM khi tôi rời khỏi máy tính.
Dường như cũng có một lỗi ở kswapd
một nơi nào đó, hy vọng chỉ có trên các hạt nhân cũ.
Gần như mỗi ngày bây giờ kswapd đi ngẫu nhiên trên một số máy trong một cụm lớn hơn (mặc dù với một nhân không phải là hiện tại). 100% CPU trên cả hai quá trình kswapd. Không có quá trình chạy nào khác (ngoại trừ ssh shell), nhiều RAM miễn phí (hơn 700 MB) và hoàn toàn không sử dụng SWAP. Không hoán đổi, không trao đổi là tốt.
Không có gì giải thích được, tại sao một máy cụ thể bị tấn công và một máy khác thì không. Có vẻ như không phải là hoàn toàn ngẫu nhiên, bởi vì nó thường đánh nhiều hơn một máy trong một khoảng thời gian ngắn. Có vẻ như máy móc, không hoạt động, cũng như máy móc, chịu áp lực cao, ít có khả năng bị ảnh hưởng. Vì vậy, nó phải làm một cái gì đó với tải công việc và chỉ nhấn nếu máy không nhàn rỗi cũng không quá bận.
Nếu vấn đề đình công không có gì giúp đỡ nữa. Giết tất cả các quy trình (không trở thành không thể thực hiện được), ngắt kết nối tất cả các hệ thống tập tin, không có gì. kswapd
vẫn ở mức CPU 100%. Tôi nghi ngờ một số chủng tộc spinlock trong hạt nhân SMP, nhưng cũng có khả năng là tôi đã sai.
Có lẽ hãy xem câu trả lời của tôi serverfault.com/questions/316995/#493257
Ghi chú: