NT Kernel Trace, DTrace w temacie hot files
Większość z popularnych systemów operacyjnych oferuje funkcję monitorowania aktywności procesów pod kątem operacji I/O, niestety nie wszystkie dają nam pełny obraz tego, których faktycznie plików dotyczy dana operacja.
W przypadku systemów MS Windows, z poziomu Perfomance Monitora możemy stworzyć nowy profil Data Collector Sets w oparciu o wzorzec System Performance i we właściwościach nowo stworzonego profilu w NT Kernel Properties wybrać file - File details:
Standardowo po minucie próbkowania uzyskamy raport, w którym w sekcji Disk mamy zebrane informacje na temat operacji I/O na poszczególnych plikach.
Zaś w przypadku systemów (Open)Solaris mamy dostępne rozbudowane narzędzie do monitorowania działania systemu w postaci języka programowania DTrace. W celu monitorowania ,,hot files'' możemy zastosować przykładowy program śledzący:
:::bash
#pragma D option quiet
/* wybor probek */
io:::start
/* warunek, jesli nazwa pliku jest rozna od ,,pustej'' */
/args[2]->fi_pathname != "<none>"/
{
/* funkcja agregujaca sume bajtow odczytow/zapisow w dodatkowo
* nazwe pliku, nazwe procesu, pid, flage zapis/odczyt
*/
@[args[2]->fi_pathname, execname, pid, uid,
args[0]->b_flags & B_READ ? "R" : "W"] = sum(args[0]->b_bcount);
}
/* specjalny provider, ktory wyzwalany jest po uplywie 5s */
profile:::tick-5s
{
printf("%10s %20s %10s %3s %15s %1s\n",
"FILENAME", "APP", "PID", "UID", "BYTES", "RW");
/* wypisanie zawartosci funkcji agregujacej */
printa("%10s %20s %10d %3d %15@d %1s\n", @);
exit(0);
}
po uruchomieniu skryptu:
:::bash
# dtrace -s hotfiles.d
uzyskamy szukane dane:
:::bash
FILENAME APP PID UID BYTES RW
/mnt/file.new5 fsflush 3 0 8192 W
/mnt/file.new5 mkfile 2531 0 3350528 W
/mnt/file.new5 mkfile 2535 0 7004160 W
można je przetworzyć popularnymi narzędziami awk, sed, etc. wyniki upodabniając do tych uzyskanych z Windows’owego Perfomance Monitora. Skrypt ten jest napisany pod kątem monitorowania plików w systemie plików UFS.
[]: http://blog.witalis.net/wordpress/wp-content/uploads/2010/12/perfmon.jpg “perfmon”
powered by Hugo and Noteworthy theme