Identifying performance issues beyond the Oracle wait interface
|
|
|
- Garey Skinner
- 10 years ago
- Views:
Transcription
1 Identifying performance issues beyond the Oracle wait interface Stefan Koehler Freelance Consultant (Soocs) Coburg, Germany Keywords Oracle performance, Stack trace, System call trace, Perf, DTrace, GDB, Oradebug, Performance counters for Linux, Systemtap, (CPU) Flame graph, Systematic troubleshooting, Strace Introduction The Oracle code is already instrumented very well and provides a lot of wait events, performance statistics and performance metrics by default. Unfortunately all of these statistics and metrics do not provide enough information to drill down to the root cause of a performance issue in various cases (mostly CPU based issues). In such cases the Oracle code needs to be disassembled and profiled. This session explores different possibilities to profile the Oracle code and how to interpret the results. About the author Stefan Koehler follows his passion about Oracle since +12 years and specialized in Oracle performance tuning, especially in Oracle cost based optimizer (CBO) and database internal related topics. Nowadays he primarily works as a freelance Oracle database performance consultant in large mission critical environments (e.g. +10 TB databases) for market-leading companies or multi-billion dollar enterprises in various industries all over the world. He usually supports his clients in understanding and solving complex Oracle performance issues and troubleshooting nontrivial database issues on short-term contracting basis. Systematic performance troubleshooting approach Discovering the root cause of a slow application is often not easy and finding a proper solution to the root cause(s) may even be harder, if the Oracle wait interface and performance metrics do not provide any useful hints. A systematic and scientific approach like the following is usually needed to address a performance issue in the most efficient and economic way: 1. Identify the performance bottleneck based on response time with Method R by Cary Millsap [1] 1.1 Select the user actions for which the business needs improved performance. 1.2 Collect properly scoped diagnostic data that will allow you to identify the causes of response time. 1.3 Execute the candidate optimization activity that will have the greatest net payoff to the business. If even the best net-payoff activity produces insufficient net payoff, then suspend your performance improvement activities until something changes. 1.4 Go to step Interpret the execution plan with help of additional SQL execution statistics (or Real-Time SQL Monitoring) and the wait interface 2.1 For example with the proper diagnostic data from point 1.2 and with PL/SQL package DBMS_XPLAN or DBMS_SQLTUNE 3. Capture and interpret the session statistics and performance counters 3.1 For example with tools like Snapper by Tanel Poder [2] 4. Capture and interpret system call traces or stack traces dependent on the issue DOAG conference, November 17th - 20th 2015 Nuremberg 1
2 The DOAG conference session and this paper is only about step 4 in the systematic performance troubleshooting approach. Step 4 is like disassembling the Oracle code and should only be considered if all the previous steps do not point to the root cause of the issue or for researching purpose of course. Why do we need this at all? Generally speaking we need to know in what kind of Oracle kernel code the process is stuck or in which Oracle kernel code the most (CPU) time is spent. System call and Call stack System call [3] The system call is the fundamental interface between an application and the Linux kernel. System calls and library wrapper functions System calls are generally not invoked directly, but rather via wrapper functions in glibc (or perhaps some other library). For details of direct invocation of a system call, see intro(2). Often, but not always, the name of the wrapper function is the same as the name of the system call that it invokes. For example, glibc contains a function truncate() which invokes the underlying "truncate" system call. Often the glibc wrapper function is quite thin, doing little work other than copying arguments to the right registers before invoking the system call, and then setting errno appropriately after the system call has returned. Note: System calls indicate a failure by returning a negative error number to the caller; when this happens, the wrapper function negates the returned error number (to make it positive), copies it to errno, and returns -1 to the caller of the wrapper. Sometimes, however, the wrapper function does some extra work before invoking the system call. For example, nowadays there are (for reasons described below) two related system calls, truncate(2) and truncate64(2), and the glibc truncate() wrapper function checks which of those system calls are provided by the kernel and determines which should be employed. Exemplary tools to trace system calls: strace (Linux), truss (AIX / Solaris), tusc (HP-UX) Call stack A call stack is the list of names of methods that are called at run time from the beginning of a program until the execution of the current statement. A call stack is mainly intended to keep track of the point to which each active subroutine should return control when it finishes executing. A call stack acts as a tool to debug an application when the method to be traced can be called in more than one context. This forms a better alternative than adding tracing code to all methods that call the given method. Exemplary tools to capture stack traces: oradebug (Oracle), gdb and its wrapper scripts or perf or systemtap (Linux), dtrace (Solaris), procstack (AIX) Generally speaking the main difference is that the call stack trace includes the called methods or functions of an application (including the system calls) like an Oracle process and that the system call trace includes only the (function) requests to the operating system kernel. DOAG conference, November 17th - 20th 2015 Nuremberg 2
3 System call trace anomaly on Linux The main focus in this paper is on capturing and interpreting call stacks, but one anomaly by tracing system calls on Linux should be mentioned as it is causing confusion from time to time. For example: A particular SQL is executed with hint gather_plan_statistics to enable rowsource statistics. In this case a lot of gettimeofday() (= up to and including Oracle 11g implementation) or clock_gettime() (= Oracle 12c implementation) system calls should usually appear as Oracle needs that timing information to calculate the rowsource statistics. The following demo is run on Oracle and Linux kernel el6uek.x86_64. NAME VALUE _rowsource_statistics_sampfreq 128 SYS@T12DB:181> select /*+ gather_plan_statistics */ count(*) from dba_objects; shell> strace -cf -p 1915 Process 1915 attached - interrupt to quit % time seconds usecs/call calls errors syscall mmap getrusage read write munmap times total Expecting to see a lot of gettimeofday() or clock_gettime() system calls during the SQL execution as the sampling rate is set to 128 (default value), but strace does not show any of these system calls at all. The reason for this behavior is the vdso / vsyscall64 implementation in Linux. [4] Generally speaking a virtual dynamic shared object (vdso), is a shared library that allows applications in user space to perform some kernel actions without as much overhead as a system call. Enabling the vdso instructs the kernel to use its definition of the symbols in the vdso, rather than the ones found in any user-space shared libraries, particularly the glibc. The effects of enabling the vdso are system wide - either all processes use it or none do. When enabled, the vdso overrides the glibc definition of gettimeofday() or clock_gettime() with it's own. This removes the overhead of a system call, as the call is made direct to the kernel memory, rather than going through the glibc. shell> ldd $ORACLE_HOME/bin/oracle linux-vdso.so.1 => (0x00007fff3c1f1000) shell> cat /proc/sys/kernel/vsyscall64 1 The vdso boot parameter has three possible values: 0 = Provides the most accurate time intervals at µs (microsecond) resolution, but also produces the highest call overhead, as it uses a regular system call 1 = Slightly less accurate, although still at µs resolution, with a lower call overhead 2 = The least accurate, with time intervals at the ms (millisecond) level, but offers the lowest call overhead DOAG conference, November 17th - 20th 2015 Nuremberg 3
4 Back to the example and the strace output. The corresponding gettimeofday() or clock_gettime() system calls can be noticed if vdso is by-passed. shell> echo 0 > /proc/sys/kernel/vsyscall64 shell> strace -cf -p 1915 Process 1915 attached - interrupt to quit % time seconds usecs/call calls errors syscall clock_gettime read times mmap getrusage write munmap gettimeofday total System calls to clock_gettime() suddenly appear without vdso, but there is an overhead of round about 0.1 seconds for such a simple light-weight query with rowsource statistics enabled. Capturing stack traces on Linux In general several tools are available to capture stack traces of an Oracle process. The following list includes some examples: - Tool Oradebug provided by Oracle and available on all OS platforms - Tool GDB and its wrapper scripts on Linux - Tool Perf and the kernel (>= ) interface perf_events on Linux - Tool Systemtap on Linux kernel >= 3.5 for userspace otherwise utrace patch is needed [5] - Tool DTrace on Solaris - Tool Procstack on AIX The upcoming sections focus on the tools Oradebug, GDB and its wrapper scripts and Perf. Oradebug [6] Oradebug is a tool provided by Oracle and primarily used by Oracle support to check or manipulate Oracle internals. The tool itself is mainly undocumented, but provides a good help interface. It also provides the capability to get an abridged call stack of the attached process. Internally Oradebug sends a SIGUSR2 signal to the corresponding target process, which captures the signal in function sspuser(). The function sspuser() performs further debugging actions afterwards. [7] Tracing the corresponding system calls confirms the described internal behavior. shell> ps -fu oracle grep LOCAL=NO oracle :55? 00:00:00 oraclet12db (LOCAL=NO) SQL> oradebug setospid 1870 Oracle pid: 43, Unix process pid: 1870, image: oracle@oel SQL> oradebug short_stack ksedsts()+213<-ksdxfstk()+34<-ksdxcb()+914<-sspuser()+191<- sighandler()<-read()+14<nttfprd()+309<-nsbasic_brc()+393<-nsbrecv()+86<-nioqrc()+520<-opikndf2()+995<opitsk()+803<-opiino()+888<-opiodr()+1170<-opidrv()+586<-sou2o()+120<-opimai_real()+151<ssthrdmain()+392<-main()+222<- libc_start_main()+253 shell> strace -f -p 1870 Process 1870 attached - interrupt to quit read(35, 0x7fcaa163fece, 2064) =? ERESTARTSYS (To be restarted) --- SIGUSR2 (User defined signal 0 (0) --- DOAG conference, November 17th - 20th 2015 Nuremberg 4
5 Let s have a look how Oradebug works in general with an Oracle process that is in idle mode and waiting for SQL commands via SQL*Net. The following demo is run on Oracle and Linux kernel el6uek.x86_64. shell> ps -fu oracle grep LOCAL=NO oracle :44? 00:00:00 oraclet12db (LOCAL=NO) SQL> oradebug setospid 1888 Oracle pid: 43, Unix process pid: 1888, image: oracle@oel SQL> oradebug short_stack ksedsts()+213<-ksdxfstk()+34<-ksdxcb()+914<-sspuser()+191<- sighandler()<-read()+14<nttfprd()+309<-nsbasic_brc()+393<-nsbrecv()+86<-nioqrc()+520<-opikndf2()+995<opitsk()+803<-opiino()+888<-opiodr()+1170<-opidrv()+586<-sou2o()+120<-opimai_real()+151<ssthrdmain()+392<-main()+222<- libc_start_main()+253 A call stack needs to be read bottom up. The first function libc_start_main() performs any necessary initialization of the execution environment like security checks, etc.. In the previous example the Oracle process starts in function main(), which calls function ssthrdmain(), which calls function opimai_real() and so on. You may recognize the main() call structure if you are familiar with writing C code. However as previously explained everything above and including function sspuser() is caused by the Oradebug request. The process itself is currently executing a system call read() which waits for data on the socket (network input). The syntax +<NUMBER> specifies the offset in bytes from the beginning of the function (symbol) where the child function is called. This is also the next instruction to continue with when the child function returns. In addition each Oracle (kernel) layer is also present and interpretable in the stack trace. [8] Graphic source: Book Oracle 8i Internal Services Thankfully approved by Steve Adams [8] The Oracle program interface (OPI) Oracle program interface is the highest layer of the server-side call stack. In most configurations, Net8 bridges the gap between UPI and OPI. However, in single-task executables there is no gap, and the UPI calls correspond directly to OPI calls. opikndf2()+995<-opitsk()+803<-opiino()+888<-opiodr()+1170<-opidrv()+586<-sou2o()+120<opimai_real A pretty detailed explanation of each OPI function in this stack can be found in Tanel Poder s blog post Advanced Oracle Troubleshooting Guide, Part 2: No magic is needed, systematic approach will do. [9] DOAG conference, November 17th - 20th 2015 Nuremberg 5
6 GDB and its wrapper scripts The GDB (GNU debugger) allows you to see what is going on inside another program while it executes or what another program was doing at the moment it crashed. GDB can do four main kind of things (plus other things in support of these): - Start a program, specifying anything that might affect its behavior - Make a program stop on specified conditions - Examine what has happened, when a program has stopped - Change things in a program GDB (and its wrapper scripts) should just be used to capture stack traces by having the focus on this paper. Let s have a look how it works in general with an Oracle process that is in idle mode and waiting for SQL commands via SQL*Net (same process state as with Oradebug ). The following demo is run on Oracle and Linux kernel el6uek.x86_64. shell> ps -fu oracle grep LOCAL=NO oracle :16? 00:00:00 oraclet12db (LOCAL=NO) (gdb) attach 1834 Attaching to process 1834 Reading symbols from /oracle/rdbms/12101/bin/oracle...(no debugging symbols found)...done. (gdb) bt #0 0x d00e530 in read_nocancel () from /lib64/libpthread.so.0 #1 0x b in snttread () #2 0x b923a95 in nttfprd () #3 0x b90eac9 in nsbasic_brc () #4 0x b90e8d6 in nsbrecv () #5 0x b in nioqrc () #6 0x b5b9a43 in opikndf2 () #7 0x e44f93 in opitsk () #8 0x e49c28 in opiino () #9 0x b5bc3c2 in opiodr () #10 0x e4118a in opidrv () #11 0x f8 in sou2o () #12 0x b393a7 in opimai_real () #13 0x in ssthrdmain () #14 0x b392de in main () The first eye-catching message no debugging symbols found is works-as-designed as Oracle is not compiled with debugging information (e.g. gcc option -g ). This has some impact on debugging Oracle functions (and its parameters), but you can even get the function names without the debug information. In sum this is all we need in case of stack tracing. The content of the stack trace looks like the Oradebug one, expect the signal handling part. However GDB also misses the offset byte addresses, but this is also not an issue in this case. DOAG conference, November 17th - 20th 2015 Nuremberg 6
7 GDB also got some wrapper scripts (e.g. pstack / gstack) where only the process id <PID> is handed over but the end result (stack trace output) is the same. shell> which pstack /usr/bin/pstack shell> ls -la /usr/bin/pstack lrwxrwxrwx. 1 root root 6 Jun /usr/bin/pstack -> gstack shell> file /usr/bin/gstack /usr/bin/gstack: POSIX shell script text executable shell> cat /usr/bin/gstack #!/bin/sh # Run GDB, strip out unwanted noise. $GDB --quiet $readnever -nx /proc/$1/exe $1 <<EOF 2>&1 $backtrace shell> pstack 1834 #0 0x d00e530 in read_nocancel () from /lib64/libpthread.so.0 #1 0x b in snttread () #2 0x b923a95 in nttfprd () #3 0x b90eac9 in nsbasic_brc () #4 0x b90e8d6 in nsbrecv () #5 0x b in nioqrc () #6 0x b5b9a43 in opikndf2 () #7 0x e44f93 in opitsk () #8 0x e49c28 in opiino () #9 0x b5bc3c2 in opiodr () #10 0x e4118a in opidrv () #11 0x f8 in sou2o () #12 0x b393a7 in opimai_real () #13 0x in ssthrdmain () #14 0x b392de in main () Performance counters for Linux (Linux kernel-based subsystem) Capturing stack traces with the Oracle tool Oradebug or with a C debugger like GDB got one common main issue. It needs to be done manually and it is just a snap-reading method, but the target is to know where most of the (CPU) time is spent or if a process is stuck in a specific C function. A lot of stack trace samples need to be gathered in high frequency and afterwards they need to be aggregated to get the whole picture. Tools like Oradebug or GDB are usually not fast enough to sample the stack traces at very high frequency, but luckily the Linux kernel provides a solution for this called Performance counters for Linux. Perf (sometimes Perf Events, originally Performance Counters for Linux ) is a performance analyzing tool in Linux. It is available with kernel version or higher. Performance Counters for Linux (PCL) is a kernel-based subsystem that provides a framework for collecting and analyzing performance data. The PCL subsystem can be used to measure hardware events, including retired instructions and processor clock cycles. It can also measure software events, including major page faults and context switches. For example PCL counters can compute the Instructions Per Clock (IPC) from a process's counts of instructions retired and processor clock cycles. A low IPC ratio indicates the code makes poor use of the CPU. Other hardware events can also be used to diagnose poor CPU performance. However be very careful with the specifically used events (hardware respectively software) due to [10] [11] potential incorrect measurements in virtualized environments. DOAG conference, November 17th - 20th 2015 Nuremberg 7
8 The tool Perf itself is based on the perf_events interface which is exported by recent versions of the Linux kernel. The common used perf option ( perf record ) for Oracle processes is based on sampling or better said perf_events is based on event-based sampling in such cases. The perf_events interface allows two modes to express the sampling period: - The number of occurrences of the event (period) - The average rate of samples/sec (frequency) The tool Perf defaults to the average rate, which is set to 1000Hz or 1000 samples/sec. It means that the kernel is dynamically adjusting the sampling period to achieve the target average rate. In contrast, with the other mode, the sampling period is set by the user and does not vary between samples. In general the default setting is sufficient for troubleshooting Oracle CPU issues in most cases. Let s have a look how it works in general with an Oracle process that executes some SQL statement and fetches data via SQL*Net. This demo case includes some workload as it makes no sense to profile and sample an idling Oracle process (no stack traces are captured if the process is not on CPU and even if it would work this way the call stack would always be the same). The following demo is run on Oracle and Linux kernel el6uek.x86_64. SQL> create table TEST as select * from DBA_SOURCE; SQL> select /*+ use_hash(t2) gather_plan_statistics */ count(*) from TEST t1, TEST t2 where t1.owner = t2.owner; shell> ps -fu oracle grep LOCAL=NO oracle :54? 00:00:03 oraclet12db (LOCAL=NO) shell> perf record -e cpu-cycles -o /tmp/perf.out -g -p 1883 [ perf record: Woken up 47 times to write data ] [ perf record: Captured and wrote MB /tmp/perf.out (~ samples) ] shell> ls -la /tmp/perf.out -rw oracle dba Sep 19 09:56 perf.out The previous perf command has captured round about samples and has written the trace data to output file /tmp/perf.out. This file can be processed later on with various tools to interpret the output. Perf was also instructed to use the hardware event cpu-cycles (parameter -e ) which basically means that the kernel s performance registers are used to gather information about the process that is running on CPU. Perf will automatically fallback to the software event cpu-clock [10] [11] which is based on timer interrupts if the hardware event cpu-cycles is not available. DOAG conference, November 17th - 20th 2015 Nuremberg 8
9 Poor man s stack profiling Sometimes just a quick half-hierarchical and aggregated stack profile is needed or Oracle is running on a platform without any (installed) profiler like Perf. The following solution is pretty slow as it is based on GDB or better said on its wrapper script pstack. In consequence very high sample rates (like with tool Perf ) can not be reached. Let s have a look how it works in general with an Oracle process that executes some SQL statement and fetches data via SQL*Net. The following demo is run on Oracle and Linux kernel el6uek.x86_64. The used script os_explain by Tanel Poder [12] decodes specific well known C functions to useful meanings (e.g. qerhj* to HASH JOIN, etc.). SQL> create table TEST as select * from DBA_SOURCE; SQL> select /*+ use_hash(t2) */ count(*) from TEST t1, TEST t2 where t1.owner = t2.owner; shell> ps -fu oracle grep LOCAL=NO oracle :12? 00:00:00 oraclet12db (LOCAL=NO) shell> export LC_ALL=C ; for i in {1..20} ; do pstack 4663./os_explain -a ; done sort -r uniq -c 20 main 20 ssthrdmain 20 opimai_real 20 sou2o 20 opidrv 20 opiodr 20 opiino 20 opitsk 20 ttcpip 20 opiodr 20 kpoal8 20 SELECT FETCH: 20 GROUP BY SORT: Fetch 20 * TABLE ACCESS: Fetch 20 HASH JOIN: Fetch 20 kdsttgr 20 kdstf km 20 HASH JOIN: InnerProbeHashTableRowset 20 HASH JOIN: InnerProbeProcessRowset 20 HASH JOIN: WalkHashBucket 3 qesraddrowfromctx 7 kxhrunpack 5 kxhrpucompare 1 HASH JOIN: ReturnRowset 5 rworupo 1 _intel_fast_memset.j 2 _intel_fast_memcmp 4 qksbggetcursorval In the previous example 20 stack samples were taken with GDB and the base function HASH JOIN: WalkHashBucket was processed all the time. So basically the CPU usage is caused by the hash join (respective qerhj* functions) in this very simplistic case. However this is not very surprising as the SQL is hinted to perform exactly this action, but this example should only demonstrate the general procedure. DOAG conference, November 17th - 20th 2015 Nuremberg 9
10 Interpreting stack traces on Linux Visualization and interpretation of stack traces is dependent on the source data. The profiling tool Perf can write its output to a file which can be processed later on with various tools. This section introduces the reporting functionality of Perf and one of the most well known tools (also my personal favorite) for interpreting stack traces called Flame graph by Brendan Gregg. [13] Performance counters for Linux with Perf tool In the previous chapter an Oracle process (PID 1883) was already profiled and the traced call stacks were written to file /tmp/perf.out. In this section this file will be processed. shell> perf report -i /tmp/perf.out -g none -n --stdio # ======== # captured on: Sat Sep 19 10:01: # hostname : OEL # os release : el6uek.x86_64 # perf version : el6.x86_64.debug # arch : x86_64 # nrcpus online : 3 # nrcpus avail : 3 # cpudesc : Intel(R) Core(TM) i7-2675qm 2.20GHz # cpuid : GenuineIntel,6,42,7 # total memory : kb # cmdline : /usr/bin/perf record -e cpu-cycles -o /tmp/perf.out -g -p 1883 # event : name = cpu-clock:hg, type = 1, config = 0x0, config1 = 0x0, config2 = 0x0, excl_usr = 0, excl_kern = 0, excl_host = 0, excl_guest = 0, precise_ip = 0, id = { 7 } # HEADER_CPU_TOPOLOGY info available, use -I to display # HEADER_NUMA_TOPOLOGY info available, use -I to display # ======== # # Samples: 45K of event 'cpu-clock:hg' # Event count (approx.): # # Overhead Samples Command Shared Object Symbol # # 27.54% oracle_1883_t12 oracle [.] qerhjwalkhashbucket 14.44% 6534 oracle_1883_t12 oracle [.] kxhrpucompare 14.21% 6429 oracle_1883_t12 oracle [.] rworupo 10.17% 4602 oracle_1883_t12 oracle [.] qesraddrowfromctx 9.49% 4294 oracle_1883_t12 oracle [.] qksbggetcursorval 0.01% 3 oracle_1883_t12 librt-2.12.so [.] clock_gettime 0.01% 3 oracle_1883_t12 [vdso] [.] 0x00007fffecbff9c1 0.00% 1 oracle_1883_t12 [kernel.kallsyms] [k] kref_get 0.00% 1 oracle_1883_t12 [kernel.kallsyms] [k] scsi_run_queue The trace file was analyzed with Perf and option -g none, which basically just prints out the CPU consuming functions at the top of the call stack. Perf record was started with the hardware event cpu-cycles, but the samples were taken with the software event cpu-clock as my platform (Virtual Box) does not support the kernel s performance registers at the time of writing. This silent fallback was already mentioned in the previous chapter. The application (userspace) functions like qerhjwalkhashbucket or kxhrpucompare are marked with [.] in contrast to the OS kernel space functions like kref_get or scsi_run_queue which are marked with [k]. The vdso functions are also included of course. As a result 27.54% of the CPU time was spent in Oracle (user space) function qerhjwalkhashbucket, 14.44% of the CPU time was spent in Oracle (user space) function kxhrpucompare and so on. This method enables to drill down the CPU consumer in detail. DOAG conference, November 17th - 20th 2015 Nuremberg 10
11 Perf report also has the possibility to include the whole stack trace in the output. The following output is truncated to the top userspace functions qerhjwalkhashbucket and rworupo for demonstration purpose. shell> perf report -i /tmp/perf.out -g graph -n --stdio # Overhead Samples Command Shared Object Symbol # # 27.54% oracle_1883_t12 oracle [.] qerhjwalkhashbucket --- qerhjwalkhashbucket qerhjinnerprobeprocessrowset qerhjinnerprobehashtablerowset qerstrowp qerstrowp kdstf km kdsttgr qertbfetch qerstfetch rwsfcd ssthrdmain main libc_start_main 14.21% 6429 oracle_1883_t12 oracle [.] rworupo --- rworupo %-- kxhrunpack qerhjwalkhashbucket qerhjinnerprobeprocessrowset qerhjinnerprobehashtablerowset qerstrowp qerstrowp kdstf km kdsttgr qertbfetch qerstfetch rwsfcd ssthrdmain main libc_start_main %-- qerhjwalkhashbucket qerhjinnerprobeprocessrowset qerhjinnerprobehashtablerowset qerstrowp qerstrowp kdstf km kdsttgr ssthrdmain main libc_start_main DOAG conference, November 17th - 20th 2015 Nuremberg 11
12 The whole stack trace reveals how the top CPU consuming functions are called. For example: - Function qerhjwalkhashbucket (where 27.54% of the CPU time is spent) is just called from one stack (function libc_start_main up to qerhjinnerprobeprocessrowset, which finally calls qerhjwalkhashbucket ). - Function rworupo (where 14.21% of the CPU time is spent) is called from two different child functions (= two different stacks). In this case from stack function libc_start_main up to kxhrunpack, which finally calls rworupo and from stack function libc_start_main up to qerhjwalkhashbucket, which finally calls rworupo. Perf also shows a break down of the CPU time to these different stacks (e.g % from 14.21% overall CPU time is spent on stack from stack function libc_start_main up to kxhrunpack ). The Oracle (kernel) application function names are cryptic, but some can be translated with help of MOS ID # ORA-600 Lookup Error Categories. The note was deleted by Oracle some time ago, but it still can be found in the world wide web very easily. However interpreting stack traces with the tool Perf has one major issue. Basically all we need to know is where the bulk of the CPU time is spent, but the track can be lost very easily, if the CPU consuming functions are called from various stacks and if the calling functions are consuming a lot of CPU too. The previous case is a very simple stack, but it already demonstrates such a situation. Function qerhjwalkhashbucket causes 27.54% of the CPU time, but this function is also included in the stack of the other top consuming function rworupo. So basically the CPU consumption of function rworupo may indirectly caused (as called) by qerhjwalkhashbucket as well, but this is not obvious at the first sight. It is just too much data to interpret with tool Perf in more complex scenarios (and especially with a lot of similar call stacks). DOAG conference, November 17th - 20th 2015 Nuremberg 12
13 Flame graph by Brendan Gregg [13] (CPU) flame graph by Brendan Gregg solves the issue with perf report that was mentioned previously. Flame graph is a visualization of profiled software, allowing the most frequent code-paths to be identified quickly and accurately. The output is an interactive SVG graphic. In the previous chapter an Oracle process (PID 1883) was already profiled with tool Perf and the sampled and traced call stacks were written to file /tmp/perf.out. In this section the file (the same file that was previously processed with perf report ) will be processed with flame graph. shell> perf script -i /tmp/perf.out./stackcollapse-perf.pl > /tmp/perf.folded shell>./flamegraph.pl /tmp/perf.folded > /tmp/perf.folded.svg The following is a description of the graph layout by Brendan Gregg: - Each box represents a function in the stack (a "stack frame"). - The y-axis shows stack depth (number of frames on the stack). The top box shows the function that was on-cpu. Everything beneath that is ancestry. The function beneath a function is its parent, just like the stack traces shown earlier. - The x-axis spans the sample population. It does not show the passing of time from left to right, as most graphs do. The left to right ordering has no meaning (it's sorted alphabetically to maximize frame merging). - The width of the box shows the total time it was on-cpu or part of an ancestry that was on-cpu (based on sample count). Functions with wide boxes may consume more CPU per execution DOAG conference, November 17th - 20th 2015 Nuremberg 13
14 than those with narrow boxes, or, they may simply be called more often. The call count is not shown (or known via sampling). - The sample count can exceed elapsed time if multiple threads were running and sampled concurrently. Zooming into the stacks and searching for some specific function is also possible with the newest flame graph version. However the graphic reveals what was mentioned in the previous chapter. The function qerhjwalkhashbucket is consuming 27.54% of the CPU time on its own, but it is basically active at the whole time as it also calls all the other functions like kxhrpucompare (+ on top functions), kxhrunpack (+ on top functions), qerhjreturnrowset (+ on top functions) and so on. Flame graph solves this lack of information in the Perf output and allows a quick identification of the potential base issue. Safety warning! Are debuggers and capturing stack traces safe to use (in production)? The safety of debugging Oracle depends on the used approach or tools and may be dangerous as the corresponding process might crash or get some ORA errors without any obvious reason. It usually does not matter when the database is already completely stuck and nobody can work anymore, but do not use some specific debuggers on critical background processes (in production) if only some sessions or processes are affected. Tool Oradebug = Unsafe This tool alters the execution path (e.g. ksedsts()+213<-ksdxfstk()+34<-ksdxcb()+914< sspuser()+191<- sighandler() ) of the attached process when dumping the call stack. This might crash the attached process (or the whole database) in case of an Oracle bug. An example of such an issue with LGWR would be Oracle bug # ORACLE LOGWRITER HARD HANG WHEN SIGUSR INTERRUPTS LIBAIO. Tool GDB and its wrapper scripts = Unsafe These tools suspend the process to get a call stack by attaching via ptrace() syscall. The attached process may be affected by ptrace() when communicating with the operating system kernel or other processes (e.g. issues with sending/receiving I/O interrupts, etc.). Do not confuse it with pstack on Solaris or procstack on AIX. These tools do not rely on ptrace() syscalls and are safe to use. Basically both tools just read the stack information from the /proc file system and memory. However be aware that the tool strace is also based on ptrace(). I personally have never experienced an Oracle process crash due to strace, but it is possible in theory as well. After a short chat with Tanel Poder, he also confirmed that he was suffered by crashing processes with strace under certain circumstances. Performance counters for Linux (Linux kernel-based subsystem) = Safe Performance counters for Linux respectively Perf relies on its own kernel interface and do not use ptrace(). It also does not alter the execution path of a process or suspend it. So basically it is safe to use. However the tool Perf only samples stacks of processes that are running on CPU (e.g. like in the previous demo case with CPU intensive functions that are used by the hash join). A fallback to the other tools is still needed, if the process is not running on CPU and stuck somewhere else. DOAG conference, November 17th - 20th 2015 Nuremberg 14
15 Combine the Oracle wait interface and stack traces [14] This paper described detailed CPU consumption analysis so far, but combining the Oracle wait interface (e.g. for I/O wait states, etc.) and Perf analysis in one shot is also possible. This is extremely useful, if the whole response time picture of a process is needed. Craig Shallahamer and Frits Hoogland developed a script called fulltime.sh that is based on the Oracle wait interface (v$session_event) and performance counters for Linux ( Perf ). Let s have a look how it works in general with an Oracle process that executes some SQL statement and fetches data via SQL*Net. The following demo is run on Oracle and Linux kernel el6uek.x86_64. SQL> select /*+ use_hash(t2) */ count(*) from TEST t1, TEST t2 where t1.owner = t2.owner; shell> ps -fu oracle grep LOCAL=NO oracle :40? 00:00:00 oraclet12db (LOCAL=NO) shell>./orapub_fulltime_cpu_wait_perf.sh PID: 1861 SID: 12 SERIAL: 5 USERNAME: TEST at 22-Sep :06:26 CURRENT SQL: select /*+ use_hash(t2) */ count(*) from TEST t1, TEST t2 where t1.own total time: secs, CPU: secs (57.88%), wait: secs (42.12%) Time Time Component secs % wait: SQL*Net message from client cpu : [.] qerhjwalkhashbucket cpu : [.] rworupo cpu : [.] kxhrpucompare cpu : [.] qesraddrowfromctx cpu : [.] qksbggetcursorval cpu : [k] finish_task_switch cpu : [.] kxhrunpack cpu : [.] _intel_fast_memcmp cpu : [.] qksbggetval cpu : [?] sum of funcs consuming less than 2% of CPU time wait: direct path read wait: db file sequential read wait: SQL*Net message to client The output shows a detailed break down of the CPU usage and the additional wait events that occur in the captured time window of 10 seconds (second script parameter). The wait event SQL*Net message from client is on top as the SQL was started after the profiling script orapub_fulltime_cpu_wait_perf.sh. All the other time components are related to the SQL execution. DOAG conference, November 17th - 20th 2015 Nuremberg 15
16 In addition Oracle 12c expanded its kernel diagnostics & tracing infrastructure with the diagnostic event wait_event[]. This event provides the capability to capture a stack trace after a specific wait event has occurred and so it interacts with the general Oracle wait interface. This may be useful for analyzing and drilling down the Oracle code path for/after a specific wait event. The syntax for this new diagnostic event is the following: SQL> alter session set events 'wait_event["<wait event name>"] trace("%s\n", shortstack())'; Let s have a look how it works in general with an Oracle process that executes some SQL statement and fetches data via SQL*Net. The following demo is run on Oracle and Linux kernel el6uek.x86_64. SQL> alter session set events 'wait_event["direct path read"] trace("%s\n", shortstack())'; SQL> exec DBMS_MONITOR.SESSION_TRACE_ENABLE(NULL,NULL,TRUE,FALSE,'NEVER'); SQL> select /*+ use_hash(t2) */ count(*) from TEST t1, TEST t2 where t1.owner = t2.owner; Trace file ===================== PARSING IN CURSOR # len=83 dep=0 uid=116 oct=3 lid=116 tim= hv= ad='6f59e608' sqlid='0w1v4xg8dwzf0' select /*+ use_hash(t2) */ count(*) from TEST t1, TEST t2 where t1.owner = t2.owner END OF STMT PARSE # :c=20997,e=76035,p=1,cr=36,cu=0,mis=1,r=0,dep=0,og=1, plh= ,tim= EXEC # :c=0,e=121,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1, plh= ,tim= WAIT # : nam='sql*net message to client' ela= 13 driver id= #bytes=1 p3=0 obj#=19689 tim= WAIT # : nam='disk file operations I/O' ela= 53 FileOperation=2 fileno=4 filetype=2 obj#=92417 tim= WAIT # : nam='db file sequential read' ela= 7470 file#=4 block#=178 blocks=1 obj#=92417 tim= WAIT # : nam='direct path read' ela= 2166 file number=4 first dba=179 block cnt=13 obj#=92417 tim= kslwtectx<-ksfdaio<-kcflbi<-kcbldio<-kcblrd<-kcblgt<-kcbldrget<-kcbgtcr<-ktrget3<ktrget2<-kdst_fetch<-kdstf km<-kdsttgr<-qertbfetch<-qerstfetch<-rwsfcd<qerstfetch<-qerhjfetch<-qerstfetch<-qergsfetch<-qerstfetch<-opifch2<-kpoal8<-opiodr<ttcpips WAIT # : nam='direct path read' ela= file number=4 first dba=193 block cnt=15 obj#=92417 tim= kslwtectx<-ksfdaio<-kcflbi<-kcbldio<-kcblrd<-kcblgt<-kcbldrget<-kcbgtcr<-ktrget3<ktrget2<-kdst_fetch<-kdstf km<-kdsttgr<-qertbfetch<-qerstfetch<-rwsfcd<qerstfetch<-qerhjfetch<-qerstfetch<-qergsfetch<-qerstfetch<-opifch2<-kpoal8<-opiodr<ttcpips In this example a call stack is dumped every time after the wait event direct path read has occurred. The function kslwtectx() is called at the end of a wait event (in this case direct path read ) and the rest of the call stack is related to the I/O request itself. Real life root cause identified and fixed with help of stack traces A real life root cause analysis with stack tracing is described in one of my blog posts. The whole issue including the solution is described here: DOAG conference, November 17th - 20th 2015 Nuremberg 16
17 References [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 2-understanding-measurements/ [11] [12] [13] [14] Contact address: Stefan Koehler Freelance Consultant (Soocs) Gustav-Freytag-Weg 29 D Coburg, Germany Phone: +49 (0) 172 / [email protected] Internet: DOAG conference, November 17th - 20th 2015 Nuremberg 17
Troubleshooting Oracle performance issues beyond the Oracle wait interface
Troubleshooting Oracle performance issues beyond the Oracle wait interface Stefan Koehler 16.06.16 Page 1 About me Stefan Koehler Independent Oracle performance consultant and researcher 13+ years using
Understanding LGWR, Log File SyncWaits and Commit Performance
Understanding LGWR, Log File SyncWaits and Commit Performance Tanel Põder http://blog.tanelpoder.com http://tech.e2sn.com 1 Intro: About me Tanel Põder http://tech.e2sn.com- My company and technical Oracle
Perf Tool: Performance Analysis Tool for Linux
/ Notes on Linux perf tool Intended audience: Those who would like to learn more about Linux perf performance analysis and profiling tool. Used: CPE 631 Advanced Computer Systems and Architectures CPE
Listening In. Passive Capture and Analysis of Oracle Network Traffic. Jonah H. Harris myyearbook.com
Listening In Passive Capture and Analysis of Oracle Network Traffic Jonah H. Harris myyearbook.com About Me Sr. DBA at myyearbook.com Oracle DBA and developer since Oracle7 Research Oracle Internals Speaker
Basics of VTune Performance Analyzer. Intel Software College. Objectives. VTune Performance Analyzer. Agenda
Objectives At the completion of this module, you will be able to: Understand the intended purpose and usage models supported by the VTune Performance Analyzer. Identify hotspots by drilling down through
PTC System Monitor Solution Training
PTC System Monitor Solution Training Patrick Kulenkamp June 2012 Agenda What is PTC System Monitor (PSM)? How does it work? Terminology PSM Configuration The PTC Integrity Implementation Drilling Down
TUTORIAL WHITE PAPER. Application Performance Management. Investigating Oracle Wait Events With VERITAS Instance Watch
TUTORIAL WHITE PAPER Application Performance Management Investigating Oracle Wait Events With VERITAS Instance Watch TABLE OF CONTENTS INTRODUCTION...3 WAIT EVENT VIRTUAL TABLES AND VERITAS INSTANCE WATCH...4
Red Hat Linux Internals
Red Hat Linux Internals Learn how the Linux kernel functions and start developing modules. Red Hat Linux internals teaches you all the fundamental requirements necessary to understand and start developing
Example of Standard API
16 Example of Standard API System Call Implementation Typically, a number associated with each system call System call interface maintains a table indexed according to these numbers The system call interface
Proactive Performance Monitoring Using Metric Extensions and SPA
Proactive Performance Monitoring Using Metric Extensions and SPA Mughees A. Minhas Oracle Redwood Shores, CA, USA Keywords: Oracle, database, performance, proactive, fix, monitor, Enterprise manager, EM,
Response Time Analysis
Response Time Analysis A Pragmatic Approach for Tuning and Optimizing Database Performance By Dean Richards Confio Software 4772 Walnut Street, Suite 100 Boulder, CO 80301 866.CONFIO.1 www.confio.com Introduction
Long-term monitoring of apparent latency in PREEMPT RT Linux real-time systems
Long-term monitoring of apparent latency in PREEMPT RT Linux real-time systems Carsten Emde Open Source Automation Development Lab (OSADL) eg Aichhalder Str. 39, 78713 Schramberg, Germany [email protected]
ELEC 377. Operating Systems. Week 1 Class 3
Operating Systems Week 1 Class 3 Last Class! Computer System Structure, Controllers! Interrupts & Traps! I/O structure and device queues.! Storage Structure & Caching! Hardware Protection! Dual Mode Operation
Real-Time Systems Prof. Dr. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur
Real-Time Systems Prof. Dr. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture No. # 26 Real - Time POSIX. (Contd.) Ok Good morning, so let us get
OS Observability Tools
OS Observability Tools Classic tools and their limitations DTrace (Solaris) SystemTAP (Linux) Slide 1 Where we're going with this... Know about OS observation tools See some examples how to use existing
Product Review: James F. Koopmann Pine Horse, Inc. Quest Software s Foglight Performance Analysis for Oracle
Product Review: James F. Koopmann Pine Horse, Inc. Quest Software s Foglight Performance Analysis for Oracle Introduction I ve always been interested and intrigued by the processes DBAs use to monitor
Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture
Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 3, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts
Operating System Structures
COP 4610: Introduction to Operating Systems (Spring 2015) Operating System Structures Zhi Wang Florida State University Content Operating system services User interface System calls System programs Operating
OS Thread Monitoring for DB2 Server
1 OS Thread Monitoring for DB2 Server Minneapolis March 1st, 2011 Mathias Hoffmann ITGAIN GmbH [email protected] 2 Mathias Hoffmann Background Senior DB2 Consultant Product Manager for SPEEDGAIN
Realtime Linux Kernel Features
Realtime Linux Kernel Features Tim Burke, Red Hat, Director Emerging Technologies Special guest appearance, Ted Tso of IBM Realtime what does it mean to you? Agenda What? Terminology, Target capabilities
Chapter 6, The Operating System Machine Level
Chapter 6, The Operating System Machine Level 6.1 Virtual Memory 6.2 Virtual I/O Instructions 6.3 Virtual Instructions For Parallel Processing 6.4 Example Operating Systems 6.5 Summary Virtual Memory General
Exploiting Oracle Tools and Utilities for Monitoring and Testing Oracle RAC OTN Tour - 2011
Exploiting Oracle Tools and Utilities for Monitoring and Testing Oracle RAC OTN Tour - 2011 (Costa Rica, Ecuador, Columbia, Peru) Murali Vallath [email protected] About me Independent Oracle
11.1 inspectit. 11.1. inspectit
11.1. inspectit Figure 11.1. Overview on the inspectit components [Siegl and Bouillet 2011] 11.1 inspectit The inspectit monitoring tool (website: http://www.inspectit.eu/) has been developed by NovaTec.
Laboratory Report. An Appendix to SELinux & grsecurity: A Side-by-Side Comparison of Mandatory Access Control & Access Control List Implementations
Laboratory Report An Appendix to SELinux & grsecurity: A Side-by-Side Comparison of Mandatory Access Control & Access Control List Implementations 1. Hardware Configuration We configured our testbed on
Leak Check Version 2.1 for Linux TM
Leak Check Version 2.1 for Linux TM User s Guide Including Leak Analyzer For x86 Servers Document Number DLC20-L-021-1 Copyright 2003-2009 Dynamic Memory Solutions LLC www.dynamic-memory.com Notices Information
IBM Tivoli Monitoring Version 6.3 Fix Pack 2. Infrastructure Management Dashboards for Servers Reference
IBM Tivoli Monitoring Version 6.3 Fix Pack 2 Infrastructure Management Dashboards for Servers Reference IBM Tivoli Monitoring Version 6.3 Fix Pack 2 Infrastructure Management Dashboards for Servers Reference
CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study
CS 377: Operating Systems Lecture 25 - Linux Case Study Guest Lecturer: Tim Wood Outline Linux History Design Principles System Overview Process Scheduling Memory Management File Systems A review of what
Response Time Analysis
Response Time Analysis A Pragmatic Approach for Tuning and Optimizing Oracle Database Performance By Dean Richards Confio Software, a member of the SolarWinds family 4772 Walnut Street, Suite 100 Boulder,
PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions. Outline. Performance oriented design
PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions Slide 1 Outline Principles for performance oriented design Performance testing Performance tuning General
Page 1 of 5. IS 335: Information Technology in Business Lecture Outline Operating Systems
Lecture Outline Operating Systems Objectives Describe the functions and layers of an operating system List the resources allocated by the operating system and describe the allocation process Explain how
Also on the Performance tab, you will find a button labeled Resource Monitor. You can invoke Resource Monitor for additional analysis of the system.
1348 CHAPTER 33 Logging and Debugging Monitoring Performance The Performance tab enables you to view the CPU and physical memory usage in graphical form. This information is especially useful when you
RTOS Debugger for ecos
RTOS Debugger for ecos TRACE32 Online Help TRACE32 Directory TRACE32 Index TRACE32 Documents... RTOS Debugger... RTOS Debugger for ecos... 1 Overview... 2 Brief Overview of Documents for New Users... 3
NetBeans Profiler is an
NetBeans Profiler Exploring the NetBeans Profiler From Installation to a Practical Profiling Example* Gregg Sporar* NetBeans Profiler is an optional feature of the NetBeans IDE. It is a powerful tool that
Monitoring Databases on VMware
Monitoring Databases on VMware Ensure Optimum Performance with the Correct Metrics By Dean Richards, Manager, Sales Engineering Confio Software 4772 Walnut Street, Suite 100 Boulder, CO 80301 www.confio.com
Most Common Database Configuration Mistakes Jože Senegačnik, Oracle ACE Director, Member of OakTable DbProf d.o.o. Ljubljana, Slovenia
Most Common Database Configuration Mistakes Jože Senegačnik, Oracle ACE Director, Member of OakTable DbProf d.o.o. Ljubljana, Slovenia Keywords Oracle Database, Configuration, Introduction The purpose
vmprof Documentation Release 0.1 Maciej Fijalkowski, Antonio Cuni, Sebastian Pawlus
vmprof Documentation Release 0.1 Maciej Fijalkowski, Antonio Cuni, Sebastian Pawlus January 23, 2016 Contents 1 Introduction 1 1.1 Requirements............................................... 1 1.2 Installation................................................
Oracle Database 11 g Performance Tuning. Recipes. Sam R. Alapati Darl Kuhn Bill Padfield. Apress*
Oracle Database 11 g Performance Tuning Recipes Sam R. Alapati Darl Kuhn Bill Padfield Apress* Contents About the Authors About the Technical Reviewer Acknowledgments xvi xvii xviii Chapter 1: Optimizing
A Performance Engineering Story
CMG'09 A Performance Engineering Story with Database Monitoring Alexander Podelko [email protected] 1 Abstract: This presentation describes a performance engineering project in chronological order. The
CSE 120 Principles of Operating Systems. Modules, Interfaces, Structure
CSE 120 Principles of Operating Systems Fall 2000 Lecture 3: Operating System Modules, Interfaces, and Structure Geoffrey M. Voelker Modules, Interfaces, Structure We roughly defined an OS as the layer
CGL Architecture Specification
CGL Architecture Specification Mika Karlstedt Helsinki 19th February 2003 Seminar paper for Seminar on High Availability and Timeliness in Linux University of Helsinki Department of Computer science i
Enterprise Manager Performance Tips
Enterprise Manager Performance Tips + The tips below are related to common situations customers experience when their Enterprise Manager(s) are not performing consistent with performance goals. If you
Monitoring and Diagnosing Production Applications Using Oracle Application Diagnostics for Java. An Oracle White Paper December 2007
Monitoring and Diagnosing Production Applications Using Oracle Application Diagnostics for Java An Oracle White Paper December 2007 Monitoring and Diagnosing Production Applications Using Oracle Application
EVERYTHING A DBA SHOULD KNOW
EVERYTHING A DBA SHOULD KNOW ABOUT TCPIP NETWORKS Chen (Gwen),HP Software-as-a-Service 1. TCP/IP Problems that DBAs Can Face In this paper I ll discuss some of the network problems that I ve encountered
Oracle Enterprise Manager 12c New Capabilities for the DBA. Charlie Garry, Director, Product Management Oracle Server Technologies
Oracle Enterprise Manager 12c New Capabilities for the DBA Charlie Garry, Director, Product Management Oracle Server Technologies of DBAs admit doing nothing to address performance issues CHANGE AVOID
What Is Specific in Load Testing?
What Is Specific in Load Testing? Testing of multi-user applications under realistic and stress loads is really the only way to ensure appropriate performance and reliability in production. Load testing
Objectives. Chapter 2: Operating-System Structures. Operating System Services (Cont.) Operating System Services. Operating System Services (Cont.
Objectives To describe the services an operating system provides to users, processes, and other systems To discuss the various ways of structuring an operating system Chapter 2: Operating-System Structures
Monitoring, Tracing, Debugging (Under Construction)
Monitoring, Tracing, Debugging (Under Construction) I was already tempted to drop this topic from my lecture on operating systems when I found Stephan Siemen's article "Top Speed" in Linux World 10/2003.
Web Application s Performance Testing
Web Application s Performance Testing B. Election Reddy (07305054) Guided by N. L. Sarda April 13, 2008 1 Contents 1 Introduction 4 2 Objectives 4 3 Performance Indicators 5 4 Types of Performance Testing
Operating System and Process Monitoring Tools
http://www.cse.wustl.edu/~jain/cse567-06/ftp/os_monitors/index.html 1 of 12 Operating System and Process Monitoring Tools Arik Brooks, [email protected] Abstract: Monitoring the performance of operating systems
A Comparison of Oracle Performance on Physical and VMware Servers
A Comparison of Oracle Performance on Physical and VMware Servers By Confio Software Confio Software 4772 Walnut Street, Suite 100 Boulder, CO 80301 303-938-8282 www.confio.com Comparison of Physical and
Drilling Deep Into Exadata Performance With ASH, SQL Monitoring and Exadata Snapper
Drilling Deep Into Exadata Performance With ASH, SQL Monitoring and Exadata Snapper Tanel Põder Enkitec h=p:// h=p://blog.tanelpoder.com 1 Intro: About me Tanel Põder Former Oracle Database Performance
PERFORMANCE TUNING ORACLE RAC ON LINUX
PERFORMANCE TUNING ORACLE RAC ON LINUX By: Edward Whalen Performance Tuning Corporation INTRODUCTION Performance tuning is an integral part of the maintenance and administration of the Oracle database
A Comparison of Oracle Performance on Physical and VMware Servers
A Comparison of Oracle Performance on Physical and VMware Servers By Confio Software Confio Software 4772 Walnut Street, Suite 100 Boulder, CO 80301 www.confio.com Introduction Of all the tier one applications
<Insert Picture Here> Java Application Diagnostic Expert
Java Application Diagnostic Expert Agenda 1. Enterprise Manager 2. Challenges 3. Java Application Diagnostics Expert (JADE) 4. Feature-Benefit Summary 5. Features Overview Diagnostic
This presentation will discuss how to troubleshoot different types of project creation issues with Information Server DataStage version 8.
This presentation will discuss how to troubleshoot different types of project creation issues with Information Server DataStage version 8. Page 1 of 29 The objectives of this module are to list the causes
Application-Level Debugging and Profiling: Gaps in the Tool Ecosystem. Dr Rosemary Francis, Ellexus
Application-Level Debugging and Profiling: Gaps in the Tool Ecosystem Dr Rosemary Francis, Ellexus For years instruction-level debuggers and profilers have improved in leaps and bounds. Similarly, system-level
Operating System Structure
Operating System Structure Lecture 3 Disclaimer: some slides are adopted from the book authors slides with permission Recap Computer architecture CPU, memory, disk, I/O devices Memory hierarchy Architectural
SAS Application Performance Monitoring for UNIX
Abstract SAS Application Performance Monitoring for UNIX John Hall, Hewlett Packard In many SAS application environments, a strategy for measuring and monitoring system performance is key to maintaining
WINDOWS PROCESSES AND SERVICES
OBJECTIVES: Services o task manager o services.msc Process o task manager o process monitor Task Scheduler Event viewer Regedit Services: A Windows service is a computer program that operates in the background.
TOP(1) Linux User s Manual TOP(1)
NAME top display top CPU processes SYNOPSIS top [ ] [ddelay] [ppid] [q][c][c][s][s][i][niter] [b] DESCRIPTION top provides an ongoing look at processor activity in real time. It displays a listing of the
Oracle Database 11g: Performance Tuning DBA Release 2
Oracle University Contact Us: 1.800.529.0165 Oracle Database 11g: Performance Tuning DBA Release 2 Duration: 5 Days What you will learn This Oracle Database 11g Performance Tuning training starts with
Performance Monitoring of Parallel Scientific Applications
Performance Monitoring of Parallel Scientific Applications Abstract. David Skinner National Energy Research Scientific Computing Center Lawrence Berkeley National Laboratory This paper introduces an infrastructure
Using New Relic to Monitor Your Servers
TUTORIAL Using New Relic to Monitor Your Servers by Alan Skorkin Contents Introduction 3 Why Do I Need a Service to Monitor Boxes at All? 4 It Works in Real Life 4 Installing the New Relic Server Monitoring
Virtual Private Systems for FreeBSD
Virtual Private Systems for FreeBSD Klaus P. Ohrhallinger 06. June 2010 Abstract Virtual Private Systems for FreeBSD (VPS) is a novel virtualization implementation which is based on the operating system
Kernel comparison of OpenSolaris, Windows Vista and. Linux 2.6
Kernel comparison of OpenSolaris, Windows Vista and Linux 2.6 The idea of writing this paper is evoked by Max Bruning's view on Solaris, BSD and Linux. The comparison of advantages and disadvantages among
LSN 10 Linux Overview
LSN 10 Linux Overview ECT362 Operating Systems Department of Engineering Technology LSN 10 Linux Overview Linux Contemporary open source implementation of UNIX available for free on the Internet Introduced
Delivering Quality in Software Performance and Scalability Testing
Delivering Quality in Software Performance and Scalability Testing Abstract Khun Ban, Robert Scott, Kingsum Chow, and Huijun Yan Software and Services Group, Intel Corporation {khun.ban, robert.l.scott,
VIRTUALIZATION AND CPU WAIT TIMES IN A LINUX GUEST ENVIRONMENT
VIRTUALIZATION AND CPU WAIT TIMES IN A LINUX GUEST ENVIRONMENT James F Brady Capacity Planner for the State Of Nevada [email protected] The virtualization environment presents the opportunity to better
Chapter 2 System Structures
Chapter 2 System Structures Operating-System Structures Goals: Provide a way to understand an operating systems Services Interface System Components The type of system desired is the basis for choices
Operating Systems 4 th Class
Operating Systems 4 th Class Lecture 1 Operating Systems Operating systems are essential part of any computer system. Therefore, a course in operating systems is an essential part of any computer science
Improved metrics collection and correlation for the CERN cloud storage test framework
Improved metrics collection and correlation for the CERN cloud storage test framework September 2013 Author: Carolina Lindqvist Supervisors: Maitane Zotes Seppo Heikkila CERN openlab Summer Student Report
Whitepaper: performance of SqlBulkCopy
We SOLVE COMPLEX PROBLEMS of DATA MODELING and DEVELOP TOOLS and solutions to let business perform best through data analysis Whitepaper: performance of SqlBulkCopy This whitepaper provides an analysis
Oracle Database 12c: Performance Management and Tuning NEW
Oracle University Contact Us: 1.800.529.0165 Oracle Database 12c: Performance Management and Tuning NEW Duration: 5 Days What you will learn In the Oracle Database 12c: Performance Management and Tuning
EE8205: Embedded Computer System Electrical and Computer Engineering, Ryerson University. Multitasking ARM-Applications with uvision and RTX
EE8205: Embedded Computer System Electrical and Computer Engineering, Ryerson University Multitasking ARM-Applications with uvision and RTX 1. Objectives The purpose of this lab is to lab is to introduce
Monitoring IBM HMC Server. eg Enterprise v6
Monitoring IBM HMC Server eg Enterprise v6 Restricted Rights Legend The information contained in this document is confidential and subject to change without notice. No part of this document may be reproduced
Chapter 14 Analyzing Network Traffic. Ed Crowley
Chapter 14 Analyzing Network Traffic Ed Crowley 10 Topics Finding Network Based Evidence Network Analysis Tools Ethereal Reassembling Sessions Using Wireshark Network Monitoring Intro Once full content
Product Guide. Sawmill Analytics, Swindon SN4 9LZ UK [email protected] tel: +44 845 250 4470
Product Guide What is Sawmill Sawmill is a highly sophisticated and flexible analysis and reporting tool. It can read text log files from over 800 different sources and analyse their content. Once analyzed
XpoLog Center Suite Log Management & Analysis platform
XpoLog Center Suite Log Management & Analysis platform Summary: 1. End to End data management collects and indexes data in any format from any machine / device in the environment. 2. Logs Monitoring -
Visualizing gem5 via ARM DS-5 Streamline. Dam Sunwoo ([email protected]) ARM R&D December 2012
Visualizing gem5 via ARM DS-5 Streamline Dam Sunwoo ([email protected]) ARM R&D December 2012 1 The Challenge! System-level research and performance analysis becoming ever so complicated! More cores and
Optimizing Linux Performance
Optimizing Linux Performance Why is Performance Important Regular desktop user Not everyone has the latest hardware Waiting for an application to open Application not responding Memory errors Extra kernel
Users are Complaining that the System is Slow What Should I Do Now? Part 1
Users are Complaining that the System is Slow What Should I Do Now? Part 1 Jeffry A. Schwartz July 15, 2014 SQLRx Seminar [email protected] Overview Most of you have had to deal with vague user complaints
STLinux Software development environment
STLinux Software development environment Development environment The STLinux Development Environment is a comprehensive set of tools and packages for developing Linux-based applications on ST s consumer
Introduction. AppDynamics for Databases Version 2.9.4. Page 1
Introduction AppDynamics for Databases Version 2.9.4 Page 1 Introduction to AppDynamics for Databases.................................... 3 Top Five Features of a Database Monitoring Tool.............................
Table of Contents INTRODUCTION... 3. Prerequisites... 3 Audience... 3 Report Metrics... 3
Table of Contents INTRODUCTION... 3 Prerequisites... 3 Audience... 3 Report Metrics... 3 IS MY TEST CONFIGURATION (DURATION / ITERATIONS SETTING ) APPROPRIATE?... 4 Request / Response Status Summary...
Table of Contents. Chapter 1: Introduction. Chapter 2: Getting Started. Chapter 3: Standard Functionality. Chapter 4: Module Descriptions
Table of Contents Chapter 1: Introduction Chapter 2: Getting Started Chapter 3: Standard Functionality Chapter 4: Module Descriptions Table of Contents Table of Contents Chapter 5: Administration Table
Pushing the Limits of Windows: Physical Memory Mark Russinovich (From Mark Russinovich Blog)
This is the first blog post in a series I'll write over the coming months called Pushing the Limits of Windows that describes how Windows and applications use a particular resource, the licensing and implementation-derived
Cisco Networking Academy Program Curriculum Scope & Sequence. Fundamentals of UNIX version 2.0 (July, 2002)
Cisco Networking Academy Program Curriculum Scope & Sequence Fundamentals of UNIX version 2.0 (July, 2002) Course Description: Fundamentals of UNIX teaches you how to use the UNIX operating system and
This presentation explains how to monitor memory consumption of DataStage processes during run time.
This presentation explains how to monitor memory consumption of DataStage processes during run time. Page 1 of 9 The objectives of this presentation are to explain why and when it is useful to monitor
VI Performance Monitoring
VI Performance Monitoring Preetham Gopalaswamy Group Product Manager Ravi Soundararajan Staff Engineer September 15, 2008 Agenda Introduction to performance monitoring in VI Common customer/partner questions
Practical Experiences With Software Crash Analysis in TV. Wim Decroix/Yves Martens, TPVision
Practical Experiences With Software Crash Analysis in TV, TPVision Overview Context One-slide overview of tooling approach Practical usecases 2 Context: SPACE SW Architecture amapi amapp AnyApp AnyApp
Using Process Monitor
Using Process Monitor Process Monitor Tutorial This information was adapted from the help file for the program. Process Monitor is an advanced monitoring tool for Windows that shows real time file system,
White Paper. Real-time Capabilities for Linux SGI REACT Real-Time for Linux
White Paper Real-time Capabilities for Linux SGI REACT Real-Time for Linux Abstract This white paper describes the real-time capabilities provided by SGI REACT Real-Time for Linux. software. REACT enables
Zing Vision. Answering your toughest production Java performance questions
Zing Vision Answering your toughest production Java performance questions Outline What is Zing Vision? Where does Zing Vision fit in your Java environment? Key features How it works Using ZVRobot Q & A
Tuning WebSphere Application Server ND 7.0. Royal Cyber Inc.
Tuning WebSphere Application Server ND 7.0 Royal Cyber Inc. JVM related problems Application server stops responding Server crash Hung process Out of memory condition Performance degradation Check if the
Chapter 3 Operating-System Structures
Contents 1. Introduction 2. Computer-System Structures 3. Operating-System Structures 4. Processes 5. Threads 6. CPU Scheduling 7. Process Synchronization 8. Deadlocks 9. Memory Management 10. Virtual
Quick Start Guide. Ignite for SQL Server. www.confio.com. Confio Software 4772 Walnut Street, Suite 100 Boulder, CO 80301 866.CONFIO.
Quick Start Guide Ignite for SQL Server 4772 Walnut Street, Suite 100 Boulder, CO 80301 866.CONFIO.1 www.confio.com Introduction Confio Ignite gives DBAs the ability to quickly answer critical performance
Performance rule violations usually result in increased CPU or I/O, time to fix the mistake, and ultimately, a cost to the business unit.
Is your database application experiencing poor response time, scalability problems, and too many deadlocks or poor application performance? One or a combination of zparms, database design and application
CSE 265: System and Network Administration. CSE 265: System and Network Administration
CSE 265: System and Network Administration MW 9:10-10:00am Packard 258 F 9:10-11:00am Packard 112 http://www.cse.lehigh.edu/~brian/course/sysadmin/ Find syllabus, lecture notes, readings, etc. Instructor:
