Table of Contents
Overview
- The DTrace
dtrace-utils
package is available from ULN. - Your system must be registered with ULN and be installed with or be updated to Oracle Linux 6 Update 4 or later.
Installation on OEL 6.6
Login to ULN and download following RPMs: Channel: Unbreakable Enterprise Kernel Release 3 for Oracle Linux 6 (x86_64) - Latest>Packages dtrace-modules-headers-0.4.3-4.el6.x86_64 Channel: Oracle Linux 6 Dtrace Userspace Tools (x86_64) - Latest>Packages dtrace-utils-0.4.5-2.el6.x86_64 DTrace user interface. dtrace-utils-devel-0.4.5-2.el6.x86_64 DTrace development headers. [root@hract21 DTRACE]# ls -l total 324 -rwxr-x--- 1 root root 28824 Feb 10 10:43 dtrace-modules-headers-0.4.3-4.el6.x86_64.rpm -rwxr-x--- 1 root root 274504 Feb 10 10:37 dtrace-utils-0.4.5-2.el6.x86_64.rpm -rwxr-x--- 1 root root 20388 Feb 10 10:37 dtrace-utils-devel-0.4.5-2.el6.x86_64.rpm Install this packages with [root@hract21 DTRACE]# rpm -i ...
Installation on OEL 6.5
To install and configure DTrace, perform the following steps: On ULN, subscribe your system to the following channels: Oracle Linux 6 Latest (x86_64) (ol6_x86_64_latest) Unbreakable Enterprise Kernel Release 3 for Oracle Linux 6 (x86_64) - Latest (ol6_x86_64_UEKR3_latest) Oracle Linux 6 Dtrace Userspace Tools (x86_64) - Latest (ol6_x86_64_Dtrace_userspace_latest) Make sure that your system is not subscribed to the following channels: Latest Unbreakable Enterprise Kernel for Oracle Linux 6 (x86_64) (ol6_x86_64_UEK_latest) Dtrace for Oracle Linux 6 (x86_64) - Latest (ol6_x86_64_Dtrace_latest) Dtrace for Oracle Linux 6 (x86_64) - Beta release (ol6_x86_64_Dtrace_BETA) Unbreakable Enterprise Kernel Release 3 (3.8 based) for Oracle Linux 6 (x86_64) - Beta release (ol6_x86_64_UEK_BETA) Verify your YUM respository # yum repolist Loaded plugins: refresh-packagekit, security repo id repo name status ol6_Dtrace_userspace_latest Oracle Linux 6 Dtrace Userspace Tools (x86_64) - latest 6 ol6_UEKR3 Unbreakable Enterprise Kernel Release 3 for Oracle Linux 6Server (x86_64) - Latest 138 ol6_UEK_latest Latest Unbreakable Enterprise Kernel for Oracle Linux 6Server (x86_64) 273 ol6_addons Oracle Linux 6Server Add ons (x86_64) 146 ol6_internal Oracle Linux 6Server Internal Mirror 4 ol6_latest Oracle Linux 6Server Latest (x86_64) 20,438 ol6_oracle Oracle Software for Oracle Linux 6Server (x86_64) 44 repolist: 21,049 Install dtrace package [root@oel65 yum.repos.d]# yum install dtrace-utils Loaded plugins: refresh-packagekit, security Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package dtrace-utils.x86_64 0:0.4.3-1.el6 will be installed --> Processing Dependency: dtrace-modules-headers for package: dtrace-utils-0.4.3-1.el6.x86_64 --> Running transaction check ---> Package dtrace-modules-3.8.13-16.2.1.el6uek-headers.x86_64 0:0.4.1-3.el6 will be installed --> Finished Dependency Resolution ... Transaction Summary ==================================================================================================================================== Install 2 Package(s) Total download size: 289 k Installed size: 816 k Is this ok [y/N]: y Downloading Packages: (1/2): dtrace-modules-3.8.13-16.2.1.el6uek-headers-0.4.1-3.el6.x86_64.rpm | 27 kB 00:00 (2/2): dtrace-utils-0.4.3-1.el6.x86_64.rpm | 261 kB 00:01 ------------------------------------------------------------------------------------------------------------------------------------ Total 122 kB/s | 289 kB 00:02 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : dtrace-modules-3.8.13-16.2.1.el6uek-headers-0.4.1-3.el6.x86_64 1/2 Installing : dtrace-utils-0.4.3-1.el6.x86_64 2/2 Verifying : dtrace-utils-0.4.3-1.el6.x86_64 1/2 Verifying : dtrace-modules-3.8.13-16.2.1.el6uek-headers-0.4.1-3.el6.x86_64 2/2 Installed: dtrace-utils.x86_64 0:0.4.3-1.el6 Dependency Installed: dtrace-modules-3.8.13-16.2.1.el6uek-headers.x86_64 0:0.4.1-3.el6 Complete!
Differences Between DTrace on Oracle Linux and Oracle Solaris
Other providers, such as the pid provider, the Function Boundary Tracing (fbt) provider, and the providers for the network protocols (ip, iscsi, nfsv3, nfsv4, srp, tcp, and udp), have not yet been implemented.
DTrace – first steps
Check current enabled provider: [root@oel65 Dtrace]# dtrace -l ID PROVIDER MODULE FUNCTION NAME 1 dtrace BEGIN 2 dtrace END 3 dtrace ERROR If you wanted to use the probes that the proc provider publishes, you would load the systrace module: # modprobe systrace Now check the provider [root@oel65 Dtrace]# dtrace -l ID PROVIDER MODULE FUNCTION NAME 1 dtrace BEGIN 2 dtrace END 3 dtrace ERROR 4 syscall vmlinux read entry 5 syscall vmlinux read return 6 syscall vmlinux write entry 7 syscall vmlinux write return 8 syscall vmlinux open entry 9 syscall vmlinux open return .. Testing function entry codes [root@oel65 Dtrace]# dtrace -n 'syscall::open:entry { printf("Exec: %s File: %s" , execname , stringof(arg0) ); }' dtrace: description 'syscall::open:entry ' matched 1 probe CPU ID FUNCTION:NAME 0 8 open:entry Exec: udisks-daemon File: /dev/sr0 0 8 open:entry Exec: vminfo File: /var/run/utmp 0 8 open:entry Exec: vminfo File: /etc/passwd Testing function return codes [root@oel65 Dtrace]# dtrace -n 'syscall::open:return { printf("Exec: %s - Ret-code: %d", execname, arg0); }' dtrace: description 'syscall::open:return ' matched 1 probe CPU ID FUNCTION:NAME 0 9 open:return Exec: udisks-daemon - Ret-code: -16 0 9 open:return Exec: automount - Ret-code: 5 0 9 open:return Exec: automount - Ret-code: 5 Combine entry and return Dtrace methods to trace a failed open call # dtrace -n 'syscall::open:entry { printf("Exec: %s File: %s" , execname , stringof(arg0) ); } syscall::open:return { printf("Exec: %s - Ret-code: %d", execname, arg0); }' Try to open a not existing file # cat /tmp/hhh DTrace report: 0 8 open:entry Exec: cat File: /etc/ld.so.cache 0 9 open:return Exec: cat - Ret-code: 3 0 8 open:entry Exec: cat File: /lib64/libc.so.6 0 9 open:return Exec: cat - Ret-code: 3 0 8 open:entry Exec: cat File: /usr/lib/locale/locale-archive 0 9 open:return Exec: cat - Ret-code: 3 0 8 open:entry Exec: cat File: /tmp/hhh 0 9 open:return Exec: cat - Ret-code: -2 --> The cat command opens some shared library before failing to open file /tmp/hhh with -2 Checking errno.h ( aka ./asm-generic/errno-base.h ) #define ENOENT 2 /* No such file or directory */ --> Error -2 means : No such file or directory
Using complex DTRACE scripts in an Oracle RAC env
Reference
- http://www.oracle.com/technetwork/articles/servers-storage-dev/dtrace-on-linux-1956556.html
- http://docs.oracle.com/cd/E37670_01/E37355/html/ol_config_dtrace.html
- http://docs.oracle.com/cd/E19253-01/817-6223/chp-dtrace/index.html ( Solaris DTrace manual )
- http://www.tablespace.net/quicksheet/dtrace-quickstart.html
One thought on “Using Dtrace OEL 6.X”