DBAsupport.com Forums - Powered by vBulletin
Results 1 to 3 of 3

Thread: DB CPU and USER I/O Conflicts

  1. #1
    Join Date
    Jan 2015
    Posts
    4

    DB CPU and USER I/O Conflicts

    Hi,

    I am Testing an application in shared Database with some set of users 'x'.
    we ran 3 loads with with increased number users like 1x ,3x and 4x

    we found other application users during 1x and 4x load testing, except in 3x.

    Below are user I/O and DB CPU values for the same:

    Code:
    Database Time % of	1X-Load Run	3X-Load Run	4X-Load Run
    User I/O	        55.47         	5.26	        46.28
    DB CPU	                42.11	        89.81	        22.37
    sql%execelapsedtime     99.5            98.21           69.49
    I know DB CPU is mostly utilized in SQL execution 3x which is very good. And in others loads CPU was consumed in waiting.

    But i didnt understand the variations in User I/O.

    direct path read temp was common wait event consumed >50% db time in 1x and 3x.

    Please help me to get good explanation for this variations to explain my dumb clients
    Last edited by gandolf989; 01-05-2015 at 09:55 AM.

  2. #2
    Join Date
    Nov 2000
    Location
    Pittsburgh, PA
    Posts
    4,166
    User I/O would likely be explained by the amount of data cached in the database. If something happened before
    or during the second test to cause the cache to get flushed, then the database would need to read all of the
    data in again.

    Rather than running the same test with different numbers of users for each test, and potentially a small or
    large load placed on the database unrelated to the test, you would be better off turning on tracing and
    looking for badly performing SQL that can get tuned. i.e. you should tune for logical IO not physical IO or CPU time.

    Pete Finnigan has a link for turning on tracing for other sessions:

    http://www.petefinnigan.com/rambling..._set_trace.htm

    and if you can run the individual SQL statements by hand, this will allow you to turn on tracing for the current session:

    http://oracle-base.com/articles/misc...and-tkprof.php

    If you aren't sure where trace files are written the Pete Finnigan link has a query near the top that will tell
    you where the trace files will get written. Just run the first set of alter session commands, then in the same
    session execute all of the SQL that you application uses. When you have run all of the SQL then run the
    second set of commands and use tkprof for each trace file and see what took the most time.

    Code:
    alter session set timed_statistics=TRUE;
    ALTER SESSION SET TRACEFILE_IDENTIFIER = "MY_TEST_SESSION";
    ALTER SESSION SET sql_trace=TRUE;
    ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';
    alter session set events '10053 trace name context forever, level 1;
    SET TIMING ON


    Code:
    ALTER SESSION SET EVENTS '10046 trace name context off';
    alter session set events '10053 trace name context off';
    ALTER SESSION SET sql_trace=FALSE;
    
    tkprof my_trace_file.trc my_trace_file.out explain=priv_user/pwd table=sys.plan_table sys=no waits=yes sort=execu, exeela

  3. #3
    Join Date
    Jan 2015
    Posts
    4
    Thanks for the reply

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  


Click Here to Expand Forum to Full Width