sam_dtrace - Oracle HSM DTrace probes
SUNWqfs SUNWsamfs
The Oracle HSM filesystem supports dynamic tracing with DTrace probes. More information on the usage of DTrace can be found at https:∕∕wikis.oracle.com∕display∕DTrace∕Documentation.
The following is a description of the currently implemented DTrace probes with their arguments. A quick list of Oracle HSM DTrace probes can be found online by typing:
dtrace -l -m sdt:samfs
The sam-open-ret probe triggers at the end of a file open. The arguments returned are:
arg0 - Equipment number 32 & Inode number arg1 - ip-di.status.bits arg2 - Open count (after open) arg3 - errno (after open)
The sam-close-ret probe triggers at the end of a file close. The arguments returned are:
arg0 - Equipment number 32 & Inode number arg1 - ip-di.status.bits arg2 - Open count (after close) arg3 - last_close_flag 32 & errno
The sam-read-ent probe triggers at the start of a file read. The arguments returned are:
arg0 - Equipment number 32 & Inode number arg1 - uiop-uio_loffset (Offset in file at start of read) arg2 - uiop-uio_resid (Amount to read)
The sam-read-ret probe triggers at the end of a file read. More information is returned here. You may want to trigger only the return call. The arguments returned are:
arg0 - Equipment number 32 & Inode number arg1 - uiop-uio_loffset (Offset in file at end of read) arg2 - Number of bytes read. arg3 - Directio flag 32 & errno
The sam-write-ent probe triggers at the start of a file write. The arguments returned are:
arg0 - Equipment number 32 & Inode number arg1 - uiop-uio_loffset (Offset in file at start of write) arg2 - uiop-uio_resid (Amount to write)
The sam-write-ret probe triggers at the end of a file write. More information is returned here. You may want to trigger only the return call. The arguments returned are:
arg0 - Equipment number 32 & Inode number arg1 - uiop-uio_loffset (Offset in file at end of write) arg2 - Number of bytes written. arg3 - Directio flag 32 & errno
The sam-syscall-ent probe triggers at the entry of an Oracle HSM syscall. The arguments returned are:
arg0 - syscall command (see include∕sam∕syscall.h) arg1 - pointer to syscall argument struct (use copyout to read it) arg2 - size of syscall argument
The sam-syscall-ent probe triggers at the end of an Oracle HSM syscall. The arguments returned are:
arg0 - syscall command (see include∕sam∕syscall.h) arg1 - pointer to returned argument (may be NULL, use copyout to read it) arg2 - errno (after syscall)
The sam-msgread-client probe triggers when the shared client receives a message from the metadata server. The arguments returned are:
arg0 - hdr.operation 32 & hdr.command arg1 - hdr.hostid 32 & client ordinal arg2 - hdr.fsid (file system id from message) arg3 - hdr.error (errno)
The sam-msgread-client probe triggers when the shared metadata server receives a message from the shared client. The arguments returned are:
arg0 - hdr.operation 32 & hdr.command arg1 - hdr.hostid 32 & client ordinal arg2 - hdr.fsid (file system id from message) arg3 - hdr.error (errno)
The sam-lookup-name probe triggers when the metadata server needs to look up a file name. The arguments returned are:
arg0 - File name component string (use stringof(arg0)) arg1 - Nonzero if case insensitive lookup arg2 - Internal flags field.
The sam-find-component probe triggers when the metadata server searches a file name component in a directory. The arguments returned are:
arg0 - File name component string (use stringof(arg0)) arg1 - Nonzero if case insensitive lookup arg2 - File name hash
Some examples of usage of the Oracle HSM DTrace probes can be found in ∕opt∕SUNWsamfs∕examples∕dtrace. These examples are useful in their own right, but also serve as example scripts which can be modified for other purposes. The scripts are:
This script will monitor a specific file system and print out once per second the top 5 bytes∕second files being accessed. It will continue until interrupted. The file system is specified by the numeric equipment id of the file system from the mcf file (see man mcf for more details). The output of fs_mon looks like:
lake-mn### ∕opt∕SUNWsamfs∕examples∕dtrace∕fs_mon 10 inode bytes∕sec 1030 22020096 1029 20971520 inode bytes∕sec 1029 28311552 1030 27874304
This script will monitor a specific file in a specific file system and print out once per second data on read∕write speed. It will also gather and quantize I∕O size data for that file and report a summary of that when the script ends (via ^C interrupt). The file is specified via equipment number (from mcf file) and inode number. Inode number can be found from "ls -i" output. Output from ino_mon looks like:
lake-mn### ∕opt∕SUNWsamfs∕examples∕dtrace∕ino_mon 10 1029 Inode 1029 opened by pid 15155, tid 1 Inode 1029, 51261 KB∕sec read, 0 KB∕sec written Inode 1029, 110238 KB∕sec read, 0 KB∕sec written Inode 1029, 110640 KB∕sec read, 0 KB∕sec written Inode 1029, 115298 KB∕sec read, 0 KB∕sec written Inode 1029, 114805 KB∕sec read, 0 KB∕sec written Inode 1029 closed by pid 15155, tid 1, last_close 1 Inode 1029, 39851 KB∕sec read, 0 KB∕sec written ^C I∕O size breakdown for eq 10, inode 1029 value ------------- Distribution ------------- count -1 | 0 0 | 1 1 | 0 2 | 0 4 | 0 8 | 0 16 | 0 32 | 0 64 | 0 128 | 0 256 | 0 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1720320 1024 | 0