Làm thế nào tôi có thể theo dõi I / O đĩa trong một thư mục cụ thể?


10

Tôi đã có một vài quy trình với một tên được biết là tất cả ghi vào các tệp trong một thư mục. Tôi muốn ghi lại số lượng khối đọc và ghi trong một khoảng thời gian ( không chỉ truy cập tệp) để kiểm tra xem thay đổi tham số có làm giảm đáng kể lượng I / O không. Tôi hiện đang sử dụng iostat -d -p, nhưng điều đó bị giới hạn trong toàn bộ phân vùng.



1
Điều này khác với những câu hỏi đó, vì tôi không quan tâm đến các tệp mà thay vào đó là số lượng I / O.
l0b0

Câu trả lời:


10

Tôi nhận ra rằng điều này sẽ nghe có vẻ đơn giản và vô lý, nhưng nếu bạn có quyền kiểm soát các ứng dụng được đề cập (có thể trong môi trường thử nghiệm), bạn có thể gắn CHỈ thư mục đó trên một phân vùng của riêng mình iostat, v.v. về nó, và không có gì khác ở chỗ đó.

Nếu có các ổ đĩa vật lý liên quan, bạn có thể giả mạo nó bằng một loopback mount à la

dd if=/dev/zero of=/bigdisk/LOOPFILE bs=1024m count=1024m # 1gb loopback file
mke2fs -j /bigdisk/LOOPFILE
mkdir /tmpcopy
mount -o loop /tmpcopy /bigdisk/LOOPFILE
cp -r -p $SPECIALDIR2MONITOR /tmpcopy
umount /tmpcopy
mount -o loop $SPECIALDIR2MONITOR  /bigdisk/LOOPFILE,

Điều đó sẽ không loại bỏ hoàn toàn tất cả I / O của đĩa cạnh tranh, nhưng tôi khá chắc chắn rằng iostatđầu ra của nó sẽ cụ thể hơn với nhu cầu của bạn.


3

Tôi không nghĩ rằng có một cách trực tiếp. Một cách để có được dữ liệu bạn muốn là truy cập vào cây thư mục thông qua một hệ thống tệp ảo ghi nhật ký truy cập. Loggedfs là một trong những hệ thống tập tin như vậy, mặc dù tôi không biết liệu nó có thể hiển thị tất cả dữ liệu bạn quan tâm hay không (Nếu không, đó có thể là một nỗ lực mã hóa khiêm tốn cho dữ liệu đó.)

mkdir /tmp/replica
loggedfs /path/to/directory /tmp/replica
mycommand --root=/tmp/replica
fusermount -u /tmp/replica

2

Bạn có thể sử dụng inotifywait -m DIRNAMEtừ các công cụ inotify .


-dkhông tồn tại trong inotifywait 3.13. Ý bạn là -msao
l0b0

@ l0b0: oh, tôi sử dụng 3.14 từ repo git. lấy làm tiếc. Nhưng trang này nói rằng nó giống như -mngoại trừ việc chạy trong nền và yêu cầu một phần mềm.
Tobias Kienzler

cũng -rcó thể hữu ích
Tobias Kienzler

1
Đã thử nó. Tôi xin lỗi vì sự hiểu lầm, nhưng tôi không quan tâm đến những tập tin nào (hoặc thậm chí có bao nhiêu tập tin) được truy cập, mà là số lượng I / O.
l0b0

2
Lưu ý, đây là đặc thù của Linux. BSD có kqueue và thông báo các cuộc gọi hệ thống, nhưng tôi không biết liệu họ có thực hiện chính xác những gì tác giả yêu cầu hay không.
Shawn J. Goff
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.