Jak mogę monitorować operacje wejścia / wyjścia dysku w określonym katalogu?

10

Mam kilka procesów o znanej nazwie, które wszystkie zapisują do plików w jednym katalogu. Chciałbym rejestrować liczbę odczytów i zapisów bloków dysku w danym okresie ( nie tylko dostęp do pliku), aby sprawdzić, czy zmiana parametru znacznie zmniejsza ilość operacji we / wy. Obecnie używam iostat -d -p, ale jest to ograniczone do całej partycji.

l0b0
źródło
1
Różni się to od tych pytań, ponieważ nie interesują mnie same pliki, a raczej ilość operacji we / wy.
l0b0

Odpowiedzi:

10

Zdaję sobie sprawę, że będzie to brzmiało zarówno uproszczone, jak i absurdalne, ale jeśli masz kontrolę nad danymi aplikacjami (być może w środowisku testowym), możesz zamontować TYLKO ten katalog na własnej partycji iostat, itd. Powiedziałbyś tylko o tym i nic więcej w tym miejscu.

Jeśli w grę wchodzą dyski fizyczne, można je sfałszować za pomocą montażu pętli zwrotnej à 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,

To nie całkowicie usunęłoby wszystkie konkurencyjne dyski we / wy, ale jestem prawie pewien iostat, że dane wyjściowe będą bardziej dostosowane do twoich potrzeb.

dianevm
źródło
3

Nie sądzę, że istnieje bezpośredni sposób. Jednym ze sposobów uzyskania potrzebnych danych byłoby uzyskanie dostępu do drzewa katalogów za pośrednictwem wirtualnego systemu plików, który rejestruje dostęp. Loggedfs jest jednym z takich systemów plików, choć nie wiem, czy może pokazywać wszystkie dane, którymi jesteś zainteresowany. (Jeśli nie, prawdopodobnie byłby to niewielki wysiłek w zakresie kodowania tych danych).

mkdir /tmp/replica
loggedfs /path/to/directory /tmp/replica
mycommand --root=/tmp/replica
fusermount -u /tmp/replica
Gilles „SO- przestań być zły”
źródło
2

Możesz korzystać inotifywait -m DIRNAMEz narzędzi inotify .

Tobias Kienzler
źródło
-dnie istnieje w inotifywait 3.13. Czy masz na myśli -m?
l0b0
@ l0b0: och, używam 3.14 z repozytorium git. Przepraszam. Ale strona twierdzi, że jest tak samo, jak -mz wyjątkiem działania w tle i wymagającego outfile.
Tobias Kienzler,
również -rmoże być przydatny
Tobias Kienzler,
1
Testowałem to. Przepraszam za nieporozumienie, ale nie interesuje mnie, które pliki (ani nawet ile plików) uzyskano, ale raczej ilość operacji we / wy.
l0b0
2
Uwaga: jest to specyficzne dla systemu Linux. BSD mają wywołania systemowe typu kqueue i pnotify, ale nie wiem, czy robią dokładnie to, o co prosi autor.
Shawn J. Goff