Interruptible sleep process vs Uninterruptible sleep process
Linux
91
Uninterruptible sleep process
1
White

manhdung viết ngày 01/08/2016

Nhân hôm nay mình có xử lý một sự cố liên quan đến glusterfs storage nên dành chút thời gian xem lại kiến thức này. Trên hệ thống glusterfs storage, mình cố thử xóa một thư mục qua remote mount thì bị treo. Hệ thống không trả lời command rm. Việc không cần ngay lại gần đến giờ ăn trưa, mình bèn chạy về nhà quất bát cơm, ngủ một giấc đã. Tỉnh táo đến công ty ngồi debug tiếp. Kinh thật qua giờ nghỉ trưa mà storage vẫn treo. Thử ls thư mục cần xóa cũng treo nốt. Tiến trình D state cũng chục cái. CPU bị load khá cao lên đến gần 20 vì mấy process D state.

Process D chính là Uninterruptible sleep process. Đây là một trong nhiều trạng thái process trong linux: running (R), interruptible sleep (S), uninterruptible sleep (D), zoombie (Z), stopped process (T). Life cycle của một process bạn có thể tham khảo hình vẽ dưới:

alt text

Có hai loại process state gây nguy hiểm cho hệ thống của bạn nếu nó hơi nhiều là D state và Z state. Z hay zoombie process là tình huống khi process exit không đúng cách. Loại process này SIGKILL không diệt được vì bạn không thể giết được một kẻ đã chết. Nhưng đây không phải là process state mà mình vừa gặp nên mình không viết về nó trong bài này.

Một process bị sleep khi nó đang chờ một event nào đó (thường là disk IO hoặc network IO) hay đang chờ đến lượt xử lý của CPU. Một process có thể được thiết kế theo một trong hai cách: interruptible sleep là process có thể được đánh thức nhờ một event hoặc một signal còn uninterruptible sleep thì chỉ có thể được đánh thức bằng một event. Đó là lý do bạn cũng không thể SIGKILL một D state process vì nó không tiếp nhận signal.

Quay về việc debug storage bị treo, thử dò log cũng không thấy gì mới. Nó chỉ nói rằng nó không mở được thư mục, xóa bị lỗi. Thường những trường hợp này có thể giải quyết ngay bằng cách reboot server nhưng tình huống không yêu cầu gấp gáp. Ngó nghiêng thêm chút thì thấy volume status có báo quá trình rebalance bị failed. Mình không rõ lắm là hai hiện tượng này có liên quan nhau. Nhưng process D state có thể bị wake up nhờ một event khác. Liệu có phải đó là event rebalance ? Mình bèn tìm cách làm cho quá trinh rebalance này hoàn tất:

gluster volume rebalance <volname> fix-layout start

Đợi một lát cho đến khi quá trình rebalance được thông báo hoàn tất. Nhập lệnh vào màn hình terminal:

ps aux | awk '{if ($8 ~ "D") print $0}'

Không còn tiến trình D state nào cả. Vậy là ấn đúng huyệt rồi. Việc xóa data sau đó không gặp nhiều trở ngại nữa.

Khi gấp gáp sysadmin thường reboot để hiện tượng biến mất. Điều đó cũng không có gì chê trách. Khi bệnh nhân đang cơn nguy kịch bác sĩ sẽ phải cấp cứu ngay chứ không thể chẩn đoán lâm sàng, xét nghiệm, theo dõi như các ca thông thường được. Có kết quả thì chắc bệnh nhân tèo rồi. Nhưng nếu có thời gian để cân nhắc thì quá trình tìm kiếm cũng đem lại nhiều trải nghiệm thú vị.

Tham khảo:
https://lwn.net/Articles/288056/

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

manhdung

44 bài viết.
275 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
82 11
Giới thiệu RabbitMQ là một message broker ( messageoriented middleware) sử dụng giao thức AMQP Advanced Message Queue Protocol (Đây là giao thức ph...
manhdung viết hơn 3 năm trước
82 11
White
48 4
Giả định bạn tiếp nhận một server mới toanh, bạn cần tìm một số thông tin về nó như loại CPU, loại main, loại memory, memory dùng của hãng nào... c...
manhdung viết hơn 2 năm trước
48 4
White
43 12
Trong phần 1, tôi đã giới thiệu về sơ lược rabbitmq, vai trò của rabbitmq trong hệ thống phân tán và hướng dẫn cài đặt. Trong phần này, tôi sẽ trìn...
manhdung viết hơn 3 năm trước
43 12
Bài viết liên quan
White
1 0
sudo du sh
t viết hơn 2 năm trước
1 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
44 bài viết.
275 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!