Làm cách nào để liệt kê các tệp tiêu thụ IO hàng đầu?


11

Phần mềm quản lý tài liệu của tôi đang thực hiện rất nhiều IO và tôi muốn biết tập tin nào nó đang truy cập nhiều nhất.

Có một công cụ Linux nào sẽ cung cấp cho tôi danh sách các tệp tiêu thụ IO hàng đầu, như iotop nhưng cho các tệp, cứ sau vài giây không?

Điều đó có thể trông giống như:

$ thetool
THRPUT   R/W/SWP FILE
40MB/s   write   /usr/alfresco/repo/1283421/1324928.doc
12MB/s   read    /usr/alfresco/cache/3928dh29f8if
11MB/s   read    /tmp/239398hf2f024f472.tmp

Tôi nhìn vào các trang người đàn ông của iotop, lsof, stracevà họ dường như không cung cấp một tính năng như vậy.


Bạn có thể viết một bộ xử lý hậu kỳ để lấy thông tin này từ 'strace', nhưng theo tôi biết, không có công cụ nào như vậy tồn tại. (Một công cụ như vậy sẽ bỏ lỡ các hoạt động diễn ra trong 'mmap'.)
David Schwartz

Câu trả lời:


2

Tôi nghĩ rằng số liệu "số byte" của bạn là sai. Hãy xem xét hai truy cập. Một người đọc 10 MB từ một tập tin. Cái kia đọc mỗi byte thứ 512 của tệp trong 10 MB đầu tiên. "Số byte" sẽ cao hơn 512 lần cho lần truy cập đầu tiên so với lần truy cập thứ hai. Tuy nhiên, cả hai sẽ đặt chính xác cùng tải trên hệ thống con I / O.

Nếu bạn có thể chấp nhận "số lượng hoạt động", tương đương với mức độ tốt hoặc xấu như "số lượng byte", thì bạn có một cái gì đó mà bạn thực sự có thể đo lường được. Các inotifywatchchương trình thực hiện điều này, và nó có khả năng một phần của bản phân phối của inotify-toolsgói.

Nó sẽ ngay lập tức cho bạn biết các tập tin bao gồm phần lớn các truy cập và nó có thể sẽ cho phép bạn giải quyết vấn đề thực tế của mình.


iotop sử dụng MB / s làm số liệu, iotop có sai không? +1 cho đề xuất inotifywatch của bạn, ví dụ trong trang man là CHÍNH XÁC những gì tôi cần và những gì tôi mô tả trong câu hỏi của mình. Cảm ơn rất nhiều!
Nicolas Raoul

Đúng, nhưng 'iotop' không thể xác định tệp, chỉ chặn các thiết bị. Vì vậy, nó có thể giúp bạn xác định quy trình xử lý sự cố và / hoặc hệ thống / thiết bị tệp sự cố, nhưng không phải tệp nào đang truy cập. Bạn có thể phải ghép các mảnh lại với nhau từ các công cụ khác nhau.
David Schwartz

Hum, thú vị, cảm ơn! Bây giờ tôi đang chơi với inotifywatch và tôi sẽ kiểm tra những gì tôi có thể làm.
Nicolas Raoul

0

Trước hết, để làm rõ: Không có thứ gọi là "tập tin tiêu thụ IO" . Tập tin là đối tượng thụ động. Đây là chương trình kích hoạt IO (thường bằng cách đọc / ghi tệp) và họ có thể truy cập tệp ít nhiều thường xuyên. Vì vậy, thông lượng mà bạn đề cập liên quan đến các tập tin thực sự sẽ không có nhiều ý nghĩa. Một thông tin hữu ích liên quan đến các tập tin có thể là tần suất chúng được truy cập và sửa đổi. Điều này có thể được theo dõi bằng cách sử dụng notifywait -m /some/file/or/directory(từ các công cụ inotify ) hoặc một số hệ thống phức tạp hơn như FAM hoặc Gamin .


Tôi sẽ mô tả "thông lượng" này (từ khác có thể phù hợp hơn, xin lỗi cho tiếng Anh của tôi) là số lượng byte được đọc / ghi từ / đến một tệp cụ thể trong một giây (tổng cho mỗi quá trình truy cập tệp trong thời gian đó thứ hai). Tôi hy vọng nó có ý nghĩa hơn. inotifywait, fam, gamin không may chỉ cho tôi biết "Tệp X đã được sửa đổi / đọc", điều này rất thú vị nhưng không phải là thứ tôi đang tìm kiếm.
Nicolas Raoul
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.