Tôi đang gặp một số vấn đề I / O trên một vài hệ thống Linux mà tôi quản lý. Chúng biểu hiện trong đó các quy trình thường chặn tối đa vài giây trong các tòa nhà đơn giản như open (), unlink () hoặc close () trên các tệp (đó là một vấn đề vì một số chương trình liên quan cần độ trễ I / O khá thấp để hoạt động đúng cách). Đúng là các hệ thống được đề cập để trải nghiệm một số tải I / O vừa phải, nhưng tôi khó có thể nghĩ rằng nó sẽ đủ để biện minh cho thời gian trễ lớn như vậy. Đôi khi, các cuộc gọi có thể mất hơn 15 giây để hoàn thành (mặc dù thường thì chúng có thể mất 1 hoặc 2 hoặc 3 giây hoặc lâu hơn).
Câu hỏi của tôi là: Làm thế nào tôi có thể tìm hiểu tại sao điều này xảy ra? Những gì tôi muốn là một số công cụ có thể cho tôi biết các quy trình trong câu hỏi bị chặn bởi kernel và lý do tại sao chúng ngủ trên đó là bận rộn, những gì đang xảy ra với nó và những thứ như vậy. Có một công cụ như vậy, hoặc có một số cách khác để cố gắng gỡ lỗi những gì xảy ra?
Ngoài ra, tất nhiên, nếu bạn có bất kỳ manh mối nào về những gì thực sự đang xảy ra, làm thế nào để tránh nó?
Đối với bản ghi, hệ thống tập tin tôi sử dụng là XFS.