<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7083484754024706171</id><updated>2012-01-29T20:43:54.135+05:30</updated><category term='monitoring linux'/><category term='Performance testing process'/><category term='statspack'/><category term='Architecture'/><category term='remote execution'/><category term='response time'/><category term='monitoring'/><category term='rexe'/><category term='Oracle'/><category term='database server'/><category term='monitoring windows'/><category term='result cache'/><category term='load balancer'/><category term='application server'/><category term='ISP'/><category term='Sun Management Center'/><category term='ldap'/><category term='TCP'/><category term='perfmon'/><category term='Thomas Kyte'/><category term='glance'/><category term='TCP/IP states'/><category term='Index'/><category term='data pump'/><category term='browser'/><category term='netrc'/><category term='phases'/><category term='MEMORY_MAX_TARGET'/><category term='MEMORY_TARGET'/><category term='performance'/><category term='article'/><category term='Measurement lab'/><category term='web server'/><category term='AWR'/><category term='remote monitoring'/><category term='automactic tuning'/><category term='column selectivity'/><category term='explain plan'/><category term='vmstat'/><category term='safari'/><title type='text'>Performance Tuning Hints</title><subtitle type='html'>Random hints in performance tuning</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-2098221566334999855</id><published>2010-10-20T15:25:00.004+05:30</published><updated>2010-10-20T15:36:19.425+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='article'/><title type='text'>An interesting article about performance titled "Thinking Clearly About Performance"</title><content type='html'>I just happened to read an interesting article related to performance titled "Thinking Clearly About Performance". It is worth spending sometime in it. Click &lt;a href="http://method-r.com/downloads/doc_download/44-thinking-clearly-about-performance"&gt;here&lt;/a&gt; to access the same. Enjoy reading.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers,&lt;/div&gt;&lt;div&gt;Thiru&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-2098221566334999855?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/2098221566334999855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=2098221566334999855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/2098221566334999855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/2098221566334999855'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2010/10/interesting-article-about-performance.html' title='An interesting article about performance titled &quot;Thinking Clearly About Performance&quot;'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-1913475125013864765</id><published>2009-12-04T09:43:00.002+05:30</published><updated>2009-12-04T09:47:37.173+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><title type='text'>Web Site Performance Tips and Tools</title><content type='html'>I have found an interesting basic  article about performance in this week SunFlash news letter. Same is available in link &lt;a href="http://weblogs.java.net/blog/caroljmcdonald/archive/2009/11/12/web-site-performance-tips-and-tools"&gt;here&lt;/a&gt;. Enjoy reading.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thanks,&lt;/div&gt;&lt;div&gt;Thiru&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-1913475125013864765?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/1913475125013864765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=1913475125013864765' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/1913475125013864765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/1913475125013864765'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2009/12/web-site-performance-tips-and-tools.html' title='Web Site Performance Tips and Tools'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-6287389231565097044</id><published>2009-04-28T13:46:00.013+05:30</published><updated>2009-05-02T09:38:36.289+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='column selectivity'/><category scheme='http://www.blogger.com/atom/ns#' term='explain plan'/><category scheme='http://www.blogger.com/atom/ns#' term='Index'/><title type='text'>Oracle Column Selectivity – An Performance Impact</title><content type='html'>&lt;div style="text-align: justify;"&gt;Lot of times I hear developer saying what is the big difference it is going to make when we execute “select * from tab1 where c1=1” instead of “select c2 from tab1 where c1=1”. (Even though they need only c2).  I bet, performance impact will  be big.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Benefits of selecting only required columns are listed below (Below list may not exclusive):&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Network round trip between application server and database server.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Application server’s record set size will consume more memory which adds overhead to JVM’s GC engine.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Database server IO (Quite obvious IO will be having big impact on OLTP systems).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;First 2 points are simple, straight and it is easy to understand. Regarding 3rd point, see my example below which shows IO impact it has because of bad query(selecting all columns).&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;SQL&gt; create table tab1 as select * from all_objects;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Table created.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;SQL&gt; desc tab1&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; Name                                      Null?    Type&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; ----------------------------------------- -------- ----------------------------&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; OWNER                                     NOT NULL VARCHAR2(30)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; OBJECT_NAME                               NOT NULL VARCHAR2(30)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; SUBOBJECT_NAME                                     VARCHAR2(30)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; OBJECT_ID                                 NOT NULL NUMBER&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; DATA_OBJECT_ID                                     NUMBER&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; OBJECT_TYPE                                        VARCHAR2(19)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; CREATED                                   NOT NULL DATE&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; LAST_DDL_TIME                             NOT NULL DATE&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; TIMESTAMP                                          VARCHAR2(19)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; STATUS                                             VARCHAR2(7)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; TEMPORARY                                          VARCHAR2(1)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; GENERATED                                          VARCHAR2(1)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; SECONDARY                                          VARCHAR2(1)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; NAMESPACE                                 NOT NULL NUMBER&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; EDITION_NAME                                       VARCHAR2(30)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;SQL&gt; create index ind1 on tab1(object_id,object_name);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Index created.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;SQL&gt; exec dbms_stats.gather_table_stats( user, 'TAB1');&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;PL/SQL procedure successfully completed.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SQL&gt; select * from tab1;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;53762 rows selected.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Execution Plan&lt;/div&gt;&lt;div style="text-align: justify;"&gt;----------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Plan hash value: 2211052296&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;--------------------------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |&lt;/div&gt;&lt;div style="text-align: justify;"&gt;--------------------------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;|   0 | SELECT STATEMENT  |      | 53762 |  4882K|   228   (1)| 00:00:03 |&lt;/div&gt;&lt;div style="text-align: justify;"&gt;|   1 |  TABLE ACCESS FULL| TAB1 | 53762 |  4882K|   228   (1)| 00:00:03 |&lt;/div&gt;&lt;div style="text-align: justify;"&gt;--------------------------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Statistics&lt;/div&gt;&lt;div style="text-align: justify;"&gt;----------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          1  recursive calls&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  db block gets&lt;/div&gt;&lt;div style="text-align: justify;"&gt;       4352  consistent gets&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  physical reads&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  redo size&lt;/div&gt;&lt;div style="text-align: justify;"&gt;    6269625  bytes sent via SQL*Net to client&lt;/div&gt;&lt;div style="text-align: justify;"&gt;      39840  bytes received via SQL*Net from client&lt;/div&gt;&lt;div style="text-align: justify;"&gt;       3586  SQL*Net roundtrips to/from client&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  sorts (memory)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  sorts (disk)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;      53762  rows processed&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SQL&gt; select object_id,object_name from tab1;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;53762 rows selected.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Execution Plan&lt;/div&gt;&lt;div style="text-align: justify;"&gt;----------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Plan hash value: 4126477464&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;-----------------------------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;| Id  | Operation            | Name | Rows  | Bytes | Cost (%CPU)| Time     |&lt;/div&gt;&lt;div style="text-align: justify;"&gt;-----------------------------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;|   0 | SELECT STATEMENT     |      | 53762 |  1522K|    87   (0)| 00:00:02 |&lt;/div&gt;&lt;div style="text-align: justify;"&gt;|   1 |  INDEX FAST FULL SCAN| IND1 | 53762 |  1522K|    87   (0)| 00:00:02 |&lt;/div&gt;&lt;div style="text-align: justify;"&gt;-----------------------------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Statistics&lt;/div&gt;&lt;div style="text-align: justify;"&gt;----------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          1  recursive calls&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  db block gets&lt;/div&gt;&lt;div style="text-align: justify;"&gt;       3887  consistent gets&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  physical reads&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  redo size&lt;/div&gt;&lt;div style="text-align: justify;"&gt;    1845080  bytes sent via SQL*Net to client&lt;/div&gt;&lt;div style="text-align: justify;"&gt;      39840  bytes received via SQL*Net from client&lt;/div&gt;&lt;div style="text-align: justify;"&gt;       3586  SQL*Net roundtrips to/from client&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  sorts (memory)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  sorts (disk)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;      53762  rows processed&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SQL&gt; select * from tab1 where object_id=2001&lt;/div&gt;&lt;div style="text-align: justify;"&gt;  2  ;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Execution Plan&lt;/div&gt;&lt;div style="text-align: justify;"&gt;----------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Plan hash value: 2086140937&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;------------------------------------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;| Id  | Operation                   | Name | Rows  | Bytes | Cost (%CPU)| Time   |&lt;/div&gt;&lt;div style="text-align: justify;"&gt;------------------------------------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;|   0 | SELECT STATEMENT            |      |     1 |    93 |     3   (0)| 00:00:01 |&lt;/div&gt;&lt;div style="text-align: justify;"&gt;|   1 |  TABLE ACCESS BY INDEX ROWID| TAB1 |     1 |    93 |     3   (0)| 00:00:01 |&lt;/div&gt;&lt;div style="text-align: justify;"&gt;|*  2 |   INDEX RANGE SCAN          | IND1 |     1 |       |     2   (0)| 00:00:01 |&lt;/div&gt;&lt;div style="text-align: justify;"&gt;------------------------------------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Predicate Information (identified by operation id):&lt;/div&gt;&lt;div style="text-align: justify;"&gt;---------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;   2 - access("OBJECT_ID"=2001)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Statistics&lt;/div&gt;&lt;div style="text-align: justify;"&gt;----------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          1  recursive calls&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  db block gets&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          4  consistent gets&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  physical reads&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  redo size&lt;/div&gt;&lt;div style="text-align: justify;"&gt;       1349  bytes sent via SQL*Net to client&lt;/div&gt;&lt;div style="text-align: justify;"&gt;        416  bytes received via SQL*Net from client&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          2  SQL*Net roundtrips to/from client&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  sorts (memory)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  sorts (disk)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          1  rows processed&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SQL&gt; select object_name from tab1 where object_id=2001;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Execution Plan&lt;/div&gt;&lt;div style="text-align: justify;"&gt;----------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Plan hash value: 3743434205&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;-------------------------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;| Id  | Operation        | Name | Rows  | Bytes | Cost (%CPU)| Time     |&lt;/div&gt;&lt;div style="text-align: justify;"&gt;-------------------------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;|   0 | SELECT STATEMENT |      |     1 |    29 |     2   (0)| 00:00:01 |&lt;/div&gt;&lt;div style="text-align: justify;"&gt;|*  1 |  INDEX RANGE SCAN| IND1 |     1 |    29 |     2   (0)| 00:00:01 |&lt;/div&gt;&lt;div style="text-align: justify;"&gt;-------------------------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Predicate Information (identified by operation id):&lt;/div&gt;&lt;div style="text-align: justify;"&gt;---------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;   1 - access("OBJECT_ID"=2001)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Statistics&lt;/div&gt;&lt;div style="text-align: justify;"&gt;----------------------------------------------------------&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          1  recursive calls&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  db block gets&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          3  consistent gets&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  physical reads&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  redo size&lt;/div&gt;&lt;div style="text-align: justify;"&gt;        428  bytes sent via SQL*Net to client&lt;/div&gt;&lt;div style="text-align: justify;"&gt;        416  bytes received via SQL*Net from client&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          2  SQL*Net roundtrips to/from client&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  sorts (memory)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          0  sorts (disk)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;          1  rows processed&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SQL&gt; &lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;If we carefully look in our above example, query "select * from tab1" requires 4882K bytes whereas "&lt;span class="Apple-style-span"  style=" ;font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;select object_id,object_name from tab1&lt;/span&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia;"&gt;" requires only 1522K bytes.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;Likewise "select * from tab1 where object_id=2001" requires 93bytes whereas "select object_name from tab1 where object_id=2001" requires just 29 bytes.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;All of this IO optimization is because of &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia;"&gt;"&lt;span class="Apple-style-span"  style=" ;font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia;"&gt;INDEX FAST FULL SCAN&lt;/span&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia;"&gt;" ==&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;Fast full index scans are an alternative to a full table scan when the index contains all the columns that are needed for the query, and at least one column in the index key has the NOT NULL constraint. A fast full scan accesses the data in the index itself, without accessing the table. It cannot be used to eliminate a sort operation, because the data is not ordered by the index key. It reads the entire index using multiblock reads, unlike a full index scan, and can be parallelized&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;"INDEX RANGE SCAN" ==&gt; An index range scan is a common operation for accessing selective data. It can be bounded (bounded on both sides) or unbounded (on one or both sides). Data is returned in the ascending order of index columns. Multiple rows with identical values are sorted in ascending order by rowid.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;During any index access, if index has all column required to satisfy an SQL, table will not be accessed at all(avoids extra IO/buffer gets).&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia;"&gt;Note: Bytes in above examples means "Estimate by the cost-based approach of the number of bytes accessed by the operation".&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;As a single user, we might not see much performance impact; but at high load this will have huge impact. Whoever developing code, please mark this valuable performance tuning hints.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia;"&gt;As usual, your comments are always welcome.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;-Thiru&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-6287389231565097044?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/6287389231565097044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=6287389231565097044' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/6287389231565097044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/6287389231565097044'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2009/04/oracle-column-selectivity-performance.html' title='Oracle Column Selectivity – An Performance Impact'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-1225582141603154254</id><published>2009-03-24T15:07:00.003+05:30</published><updated>2009-03-24T15:14:14.388+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='result cache'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Improving performance with Result Cache in Oracle 11g</title><content type='html'>&lt;div style="text-align: justify;"&gt;Initially in previous versions(before 11g), Oracle Database started off with caching data block in memory, which inturn is used to construct results for user’s request. Even though data blocks are cached in memory, it should construct results from cache which takes from time, resource, locks (latches &amp;amp; enqueues) etc., Oracle has gone to next level of caching in 11g database. Effective from Oracle 11g, Oracle can cache result sets. Oracle can cache the results of both SQL &amp;amp; PL/SQL. In this article, I am going to discuss basics of SQL result cache and I am planning to write about PL/SQL result cache in future articles. Quite obvious, at the end of article, most people will feel that this is the most interesting performance tuning hints while working in Oracle 11g database.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Few basics about result cache&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Oracle introduced the memory structure called Result Cache to store the results of SQLs &amp;amp; PL/SQL. The database serves the results for the executed SQL queries and PL/SQL functions from the result cache instead of re-executing the actual query, quite obvious this feature will increase the performance. Memory allocated(can be controlled using RESULT_CACHE_MAX_SIZE parameter) for the result cache is taken from the shared pool. By now one might come to the conclusion that result cache will improve the performance of the repeatly used PL/SQL &amp;amp; SQL. RESULT_CACHE_MAX_SIZE specifies the maximum amount of SGA memory (in bytes) that can be used by the Result Cache. If the value of this parameter is 0, then the result cache feature is disabled.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Here are some of the parameters that control the behaviour of the result cache.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;SQL&gt; col name format a30&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;SQL&gt; col value format a25&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;SQL&gt; select name,value from v$parameter where name like 'result_cache%';&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;NAME                           VALUE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;------------------------------ -------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;result_cache_mode              MANUAL&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;result_cache_max_size          5373952&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;result_cache_max_result        5&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;result_cache_remote_expiration 0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Brief description about the above parameters:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;RESULT_CACHE_MODE: RESULT_CACHE_MODE specifies when a ResultCache operator is spliced into a query's execution plan. If set to FORCE, all the queries are cached if they are qualifed and fit in cache. The default is MANUAL, which indicates that only queries with the hint will be cached. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;RESULT_CACHE_MAX_SIZE: Specified maximum size of the result cache. Remember, result cache is part of shared pool and maximum can be of 75% of shared pool size. Also query result.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;RESULT_CACHE_MAX_RESULT: Specifies percentage of RESULT_CACHE_MAX_SIZE that any single query result set can occupy. (Just to prevent the big result set from throwing out all other small resultset).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;RESULT_CACHE_REMOTE_EXPIRATION: Specifies the number of minutes that a cached result that accesses a remote object will remain valid. Setting this parameter to 0 implies that results using remote objects should not be cached. Setting this parameter to a nonzero value may produce stale answers (for example, if the remote table used by a result is modified at the remote database). I personally think it should be set to positive value if remote database is read only database.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;From the below query result, it is evident that result cache is part of shared pool.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;SQL&gt; select * from v$sgastat where pool='shared pool' and name like 'Result%';&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;POOL         NAME                            BYTES&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;------------ -------------------------- ----------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;shared pool  Result Cache: Memory Mgr          200&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;shared pool  Result Cache: Bloom Fltr         2048&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;shared pool  Result Cache: Cache Mgr           152&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Like almost all memory structure in oracle instance, Result cache is also protected by latches. Latches, being serialization devices, are scalability inhibitors. Don’t just to come to conclusion that Latches are evil; afterall we expect database to maintain ACID property.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;SQL&gt; select * from v$latchname where name like 'Result Cache%';&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    LATCH# NAME                                 HASH&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;---------- ------------------------------ ----------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;       377 Result Cache: Latch            1545889529&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;       378 Result Cache: SO Latch          986859868&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Oracle 11g provides couple of views to see the behavious/statistics of result cache. Click on the below view names to see the details in Oracle documentation.&lt;/div&gt;&lt;div&gt;&lt;a href="http://download.oracle.com/docs/cd/B28359_01/server.111/b28320/dynviews_2133.htm"&gt;V$RESULT_CACHE_STATISTICS&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;a href="http://download.oracle.com/docs/cd/B28359_01/server.111/b28320/dynviews_2131.htm"&gt;V$RESULT_CACHE_MEMORY&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://download.oracle.com/docs/cd/B28359_01/server.111/b28320/dynviews_2132.htm"&gt;V$RESULT_CACHE_OBJECTS&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://download.oracle.com/docs/cd/B28359_01/server.111/b28320/dynviews_2130.htm"&gt;V$RESULT_CACHE_DEPENDENCY&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;APIs for the result cache management is available in PL/SQL package DBMS_RESULT_CACHE.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Couple of examples on how to use APIs on DBMS_RESULT_CACHE package.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;SQL&gt; set serveroutput on size 99999&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;SQL&gt; exec  DBMS_RESULT_CACHE.MEMORY_REPORT("TRUE")&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;R e s u l t   C a c h e   M e m o r y   R e p o r t&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;[Parameters]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Block Size          = 1K bytes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Maximum Cache Size  = 5248K bytes (5248 blocks)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Maximum Result Size = 262K bytes (262 blocks)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;[Memory]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Total Memory = 2400 bytes [0.001% of the Shared Pool]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;... Fixed Memory = 2400 bytes [0.001% of the Shared Pool]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;....... Cache Mgr  = 152 bytes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;....... Memory Mgr = 200 bytes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;....... Bloom Fltr = 2K bytes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;....... State Objs =  bytes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;... Dynamic Memory = 0 bytes [0.000% of the Shared Pool]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;SQL&gt; exec DBMS_RESULT_CACHE.flush;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;DBMS_RESULT_CACHE package has lot more functions/procedures and if you are looking for more, login into 11g using SQL* Plus and execute “desc DBMS_RESULT_CACHE” and the documentation for the same can be found &lt;a href="http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28419/d_result_cache.htm"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Background Process&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;SQL&gt; select description from V$BGPROCESS where name like 'RC%';&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;DESCRIPTION&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;----------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Result Cache: Background&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Watch my blog to see result set in action.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As usual, comments are always welcome.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-Thiru&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-1225582141603154254?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/1225582141603154254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=1225582141603154254' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/1225582141603154254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/1225582141603154254'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2009/03/improving-performance-with-result-cache_9126.html' title='Improving performance with Result Cache in Oracle 11g'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-8609566599088897336</id><published>2009-03-05T10:43:00.005+05:30</published><updated>2009-03-06T11:37:40.842+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='perfmon'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring windows'/><title type='text'>Monitoring Oracle database using Perfmon</title><content type='html'>&lt;div style="text-align: justify;"&gt;Performance monitoring is the essential part of performance tuning exercise. Oracle database monitoring is no exception to this rule. As such Oracle database provides various ways to monitor such as statspack, AWR, tracing etc., Some people might be quite interested in seeing numerical values such as hit ratios, DBWR statistics etc., so that they can plot graphs against load and see how the trend is. Oracle running on Windows based Operating System provides features which help to monitor the system via perfmon (click &lt;a href="http://perfhints.blogspot.com/2008/08/monitoring-windows-server-performance.html"&gt;here&lt;/a&gt; to know more about perfmon).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;By default Oracle database related counters are not exposed to perfmon. But there are couple of ways to make it appear on perfmon. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;1.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;By using custom installation&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;By using operfcfg utility&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;By using administrative Assist on Windows&lt;/div&gt;&lt;div style="text-align: justify;"&gt;4.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;By adding couple of values in registry&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;First three ways indirectly adds the values to registry (hides complexity from end user). Oracle recommends user to user operfcfg utility. I am going to explain how to use operfcfg to add Oracle database counters in perfmon.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;operfcfg is an Oracle Database tool that you run from the command prompt. Use this syntax:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;operfcfg [-U username] [-D TNS_Alias_for_database] [-P password]&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;username&lt;/span&gt; is the username registry parameter value that Oracle Counters for Windows Performance Monitor uses to log in to the database. You must have a DBA privilege on this database.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;TNS_Alias_for_database&lt;/span&gt; is the net service name that Oracle Counters for Windows Performance Monitor uses to connect to the database. It affects the Hostname registry parameter. The net service name corresponds to the SID of the database that you want to monitor. The -D command can be specified without providing a database name value.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;password&lt;/span&gt; is the password registry parameter value for username.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If we omit –D &amp;amp; -P, then utility will take the default database on that system and it will interactive asks for password to connect to that user.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Debugging:&lt;/span&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you are not able to see Oracle database counter after running through operfcfg utility, then&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;If you are using TNS alias then try to ping the database using tnsping utility and check whether you are able to reach the database. Click here to know more about &lt;a href="http://download.oracle.com/docs/cd/B12037_01/network.101/b10775/connect.htm#i427276"&gt;tnsping&lt;/a&gt; utility&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Try to connect to the Oracle database using sqlplus with the username, password provided for operfcfg utility.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Make sure the username provided has DBA privilege.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Once you got the counters, then enjoy the performance monitoring &amp;amp; tuning excerise. As usual, you comments are always welcome regarding my performance tuning hints.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers,&lt;/div&gt;&lt;div&gt;Thiru&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-8609566599088897336?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/8609566599088897336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=8609566599088897336' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/8609566599088897336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/8609566599088897336'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2009/03/monitoring-oracle-databse-using-perfmon.html' title='Monitoring Oracle database using Perfmon'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-9195359736863763631</id><published>2009-02-25T16:00:00.004+05:30</published><updated>2009-02-25T16:16:45.894+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='safari'/><category scheme='http://www.blogger.com/atom/ns#' term='response time'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Safari  - Performance</title><content type='html'>&lt;div style="text-align: justify;"&gt;Apple came out with its new browser Safari 4 Beta and as a performance guys, I found something really interesting. Apple claims &lt;span class="Apple-style-span" style="font-style: italic;"&gt;"Safari’s Nitro Engine executes JavaScript up to 30 times faster than Internet Explorer 7 and more than 3 times faster than Firefox 3. "&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Wow! &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As I said earlier &lt;a href="http://perfhints.blogspot.com/2009/01/end-user-response-time-vs-tool-response.html"&gt;here&lt;/a&gt;, most of performance testing tools doesn't have ability to report end user response time and one of the reason being different Javascript engine used by different browser vendor.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For more information about Safari and its performance, check &lt;a href="http://www.apple.com/safari"&gt;here&lt;/a&gt; and &lt;a href="http://www.apple.com/safari/whats-new.html#overlay-performance"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As usual, comments are always welcome.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;-Thiru&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-9195359736863763631?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/9195359736863763631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=9195359736863763631' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/9195359736863763631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/9195359736863763631'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2009/02/safari-performance.html' title='Safari  - Performance'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-3643085501411323094</id><published>2009-02-20T11:54:00.024+05:30</published><updated>2009-07-13T11:54:36.080+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='MEMORY_TARGET'/><category scheme='http://www.blogger.com/atom/ns#' term='MEMORY_MAX_TARGET'/><category scheme='http://www.blogger.com/atom/ns#' term='database server'/><title type='text'>Oracle 11g - Memory Management Made Simple</title><content type='html'>&lt;div style="text-align: justify;"&gt;As and when Oracle release new version of database, DBA gets new bunch of features. &lt;/div&gt;&lt;img src="http://2.bp.blogspot.com/_i3IIqgEY3Kw/SZ5Po1-WAlI/AAAAAAAACrY/Yay4vodMrB0/s400/Oracle_PGA_Parameters.JPG" style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 400px; height: 249px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5304764974190953042" /&gt;Before Oracle 9i, DBA has to maintain the whole bunch of memory parameters like DB_BLOCK_BUFFERS, SHARED_POOL_SIZE, set of PGA parameters *_AREA_SIZE,&lt;div style="text-align: justify;"&gt; LOG_BUFFER and so on. Real complexity before 9i is assigning correct values to *_AREA_SIZE&lt;/div&gt;&lt;img src="http://3.bp.blogspot.com/_i3IIqgEY3Kw/SZ5P-uMsvgI/AAAAAAAACrg/XiYFWDqgt8E/s400/Oracle9i_Instance.JPG" style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 400px; height: 225px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5304765350060801538" /&gt;&lt;div style="text-align: justify;"&gt; (PGA) parameters as these values is not for whole instance; it is for EACH oracle user process(Oracle user process count can grow upto maximum of PROCESSES settings).&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In 9i, Oracle introducted a new parameters called PGA_AGGREGATE_TARGET and WORKAREA_SIZE_POLICY which helps users to assign a single value for the whole instance's PGA and Oracle instance itself will do self mangement for PGA memory. In earlier version, DBA has to assign value for _AREA_SIZE parameters which assign equal size for all sessions.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Oracle 10g has gone to next level from 9i wherein it automates the memory management of whole SGA. Instead of DB_CACHE_SIZE, SHARED_POOL_SIZE, JAVA_POOL_SIZE,&lt;/div&gt;&lt;img src="http://4.bp.blogspot.com/_i3IIqgEY3Kw/SZ5QSFL7FSI/AAAAAAAACro/m_Oy5AWc5aA/s400/Oracle10g_Instance.JPG" style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 400px; height: 168px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5304765682649077026" /&gt;&lt;div style="text-align: justify;"&gt; LARGE_POOL_SIZE and&lt;/div&gt;&lt;img src="http://1.bp.blogspot.com/_i3IIqgEY3Kw/SZ5QnqnaQKI/AAAAAAAACrw/3582BECYLkM/s400/Oracle11g_Instance.JPG" style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 400px; height: 132px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5304766053473730722" /&gt;&lt;div style="text-align: justify;"&gt; LOG_BUFFER parameter; user has to manage just SGA_TARGET and SGA_MAX_SIZE(see diagram).&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Oracle 11g has gone to the next level from 10g of autmatic memory management where in the whole instance can be controlled by initialization parameter MEMORY_TARGET and a maximum memory size initialization parameter MEMORY_MAX_TARGET. Oracle Database then tunes to the target memory size, redistributing memory as needed between the system global area (SGA) and the instance program global area (instance PGA).&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Oracle doc says&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;MEMORY_TARGET specifies the Oracle system-wide usable memory. The database tunes memory to the MEMORY_TARGET value, reducing or enlarging the SGA and PGA as needed.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;MEMORY_MAX_TARGET specifies the maximum value to which a DBA can set the MEMORY_TARGET initialization parameter. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Here is how internally the memory management parameters control the memory structure if MEMORY_TARGET is set to a non-zero value:&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;If SGA_TARGET and PGA_AGGREGATE_TARGET are not set, it will distribute the total server memory in a fixed ratio as 60% and 40% and assign it to SGA_TARGET and PGA_AGGREGATE_TARGET respectively.&lt;/li&gt;&lt;li&gt;If SGA_TARGET and PGA_AGGREGATE_TARGET are set, they will be considered the minimum values for the sizes of SGA and the PGA respectively (But sum of SGA_TARGET and PGA_AGGREGATE_TARGET should be less than or equal to MEMORY_TARGET).&lt;/li&gt;&lt;li&gt;If SGA_TARGET is set and PGA_AGGREGATE_TARGET is not set, we will still auto-tune both parameters. PGA_AGGREGATE_TARGET will be initialized to a value of (MEMORY_TARGET-SGA_TARGET).&lt;/li&gt;&lt;li&gt;If PGA_AGGREGATE_TARGET is set and SGA_TARGET is not set, we will still auto-tune both parameters. SGA_TARGET will be initialized to a value of min(MEMORY_TARGET-PGA_AGGREGATE_TARGET, SGA_MAX_SIZE (if set by the user)).&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Note:&lt;/span&gt; MEMORY_TARGET can be dynamically increased until MEMORY_MAX_TARGET without bouncing the instance. Regarding reducing the size of MEMORY_TARGET, it is just a request to Oracle server which will be honoured in the course of time.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Monitoring Automatic Memory Management in Oracle 11g&lt;/span&gt; using views V$MEMORY_DYNAMIC_COMPONENTS (current size of all memory components) and V$MEMORY_RESIZE_OPS (circular history list of the last 800 SGA resize requests).&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;pre&gt;&lt;br /&gt;C:\Documents and Settings\tchettia&gt;sqlplus&lt;br /&gt;&lt;br /&gt;SQL*Plus: Release 11.1.0.6.0 - Production on Mon Jul 13 11:43:05 2009&lt;br /&gt;&lt;br /&gt;Copyright (c) 1982, 2007, Oracle.  All rights reserved.&lt;br /&gt;&lt;br /&gt;Enter user-name: / as sysdba&lt;br /&gt;&lt;br /&gt;Connected to:&lt;br /&gt;Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production&lt;br /&gt;With the Partitioning, OLAP, Data Mining and Real Application Testing options&lt;br /&gt;&lt;br /&gt;sys@ORCL&gt; set pagesize 50&lt;br /&gt;sys@ORCL&gt; col COMPONENT format a30&lt;br /&gt;sys@ORCL&gt; select COMPONENT,CURRENT_SIZE from V$MEMORY_DYNAMIC_COMPONENTS;&lt;br /&gt;&lt;br /&gt;COMPONENT                      CURRENT_SIZE&lt;br /&gt;------------------------------ ------------&lt;br /&gt;shared pool                       192937984&lt;br /&gt;large pool                          4194304&lt;br /&gt;java pool                          12582912&lt;br /&gt;streams pool                              0&lt;br /&gt;SGA Target                        536870912&lt;br /&gt;DEFAULT buffer cache              318767104&lt;br /&gt;KEEP buffer cache                         0&lt;br /&gt;RECYCLE buffer cache                      0&lt;br /&gt;DEFAULT 2K buffer cache                   0&lt;br /&gt;DEFAULT 4K buffer cache                   0&lt;br /&gt;DEFAULT 8K buffer cache                   0&lt;br /&gt;DEFAULT 16K buffer cache                  0&lt;br /&gt;DEFAULT 32K buffer cache                  0&lt;br /&gt;Shared IO Pool                            0&lt;br /&gt;PGA Target                        318767104&lt;br /&gt;ASM Buffer Cache                          0&lt;br /&gt;&lt;br /&gt;16 rows selected.&lt;br /&gt;&lt;br /&gt;sys@ORCL&gt; col PARAMETER format a30&lt;br /&gt;sys@ORCL&gt; select PARAMETER,OPER_TYPE,INITIAL_SIZE,TARGET_SIZE,FINAL_SIZE,STATUS from V$MEM&lt;br /&gt;ORY_RESIZE_OPS;&lt;br /&gt;&lt;br /&gt;PARAMETER                      OPER_TYPE     INITIAL_SIZE TARGET_SIZE FINAL_SIZE STATUS&lt;br /&gt;------------------------------ ------------- ------------ ----------- ---------- ---------&lt;br /&gt;shared_pool_size               STATIC                   0   192937984  192937984 COMPLETE&lt;br /&gt;db_cache_size                  INITIALIZING     318767104   318767104  318767104 COMPLETE&lt;br /&gt;java_pool_size                 STATIC                   0    12582912   12582912 COMPLETE&lt;br /&gt;streams_pool_size              STATIC                   0           0          0 COMPLETE&lt;br /&gt;sga_target                     STATIC                   0   536870912  536870912 COMPLETE&lt;br /&gt;db_cache_size                  STATIC                   0   318767104  318767104 COMPLETE&lt;br /&gt;db_keep_cache_size             STATIC                   0           0          0 COMPLETE&lt;br /&gt;db_recycle_cache_size          STATIC                   0           0          0 COMPLETE&lt;br /&gt;db_2k_cache_size               STATIC                   0           0          0 COMPLETE&lt;br /&gt;db_4k_cache_size               STATIC                   0           0          0 COMPLETE&lt;br /&gt;db_8k_cache_size               STATIC                   0           0          0 COMPLETE&lt;br /&gt;db_16k_cache_size              STATIC                   0           0          0 COMPLETE&lt;br /&gt;db_32k_cache_size              STATIC                   0           0          0 COMPLETE&lt;br /&gt;pga_aggregate_target           STATIC                   0   318767104  318767104 COMPLETE&lt;br /&gt;db_cache_size                  STATIC                   0           0          0 COMPLETE&lt;br /&gt;large_pool_size                STATIC                   0     4194304    4194304 COMPLETE&lt;br /&gt;&lt;br /&gt;16 rows selected.&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;For more information on Oracle database refer documentation and support check &lt;a href="http://www.oracle.com/database/index.html"&gt;here&lt;/a&gt; and &lt;a href="http://metalink.oracle.com/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Quite obvious, performance tuning will be quite easy.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As usual, comments are always welcome.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers,&lt;/div&gt;&lt;div&gt;Thiru&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Added by Thiru: Almost all parameter available in 9i and 10g is available in 11g&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-3643085501411323094?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/3643085501411323094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=3643085501411323094' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/3643085501411323094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/3643085501411323094'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2009/02/oracle-11g-memory-management-made.html' title='Oracle 11g - Memory Management Made Simple'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_i3IIqgEY3Kw/SZ5Po1-WAlI/AAAAAAAACrY/Yay4vodMrB0/s72-c/Oracle_PGA_Parameters.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-4664887025624681943</id><published>2009-02-17T16:57:00.004+05:30</published><updated>2009-02-17T17:05:53.655+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='monitoring linux'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='vmstat'/><title type='text'>vmstat - Virtual Memory Statistics</title><content type='html'>&lt;div&gt;If someone asks me to check how Linux/UNIX system is performing now, first think I do it vmstat. Lot of people just checks for CPU and memory utilization statistics in vmstat. But in real, it gives more information that just CPU and memory information. In this posting, I am going to explain the detail of vmstat.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;vmstat stands for virtual memory statistics; it collects and displays summary information about memory, processes, interrupts, paging and block I/O information. By specifying the interval, it can be used to observe system activity interactively.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Most commonly people will use 2 numeric arguments in vmstat; first is delay or sleep between updates and the second is how many updates you want to see before vmstat quits. Please note this is not the full syntax of vmstat and also it can vary between OSs. Please refer your OS man page for more information.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To run vmstat with 7 updates, 10 seconds apart type&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;#vmstat 10 7&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Please note, in some systems, reported metrics might be slightly diffent. The heading that I am writing now are reported in Oracle Linux (Unbreakable Oracle Linux)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Process Block&lt;/span&gt;: Provides details of the process which are waiting for something (it can be CPU, IO etc; can be potentially for any resource)&lt;/div&gt;&lt;div&gt;r  --&gt;  Processes waiting for CPU. More the count we observe, more processes waiting to run. If we just observe a spike in the count, we shouldn’t treat them as bottleneck. If value is constantly high (most people treats 2 * CPU count  as high), it hints that CPU is the bottleneck.&lt;/div&gt;&lt;div&gt;b  --&gt;  Uninterruptible sleeping processes, also known as “blocked” processes. These processes are most likely waiting for I/O but could be for something else too&lt;/div&gt;&lt;div&gt;w  --&gt;  number of processes that can be run but have been swapped out to the swap area. This parameter gives hint about memory bottleneck. Please remember, only some system reports this count&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Memory Block:&lt;/span&gt; Provides detailed memory statistics&lt;/div&gt;&lt;div&gt;Swpd  --&gt;  Amount of virtual memory or swapped memory used&lt;/div&gt;&lt;div&gt;Free  --&gt;  Amount of free physical memory (RAM)&lt;/div&gt;&lt;div&gt;Buff  --&gt;  Amount of memory used as buffers. This memory is used to store file metadata such as i-nodes and data from raw block devices&lt;/div&gt;&lt;div&gt;Cache  --&gt;  Amount of physical memory used as cache (Mostly cached file).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Note: Most of the systems report memory block value in KB. Remember I said most; not all. So check man page.&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Swap Block:&lt;/span&gt; Provided memory swap information&lt;/div&gt;&lt;div&gt;si  --&gt;  Rate at which the memory is swapped back from the disk to the physical RAM&lt;/div&gt;&lt;div&gt;so  --&gt;  Rate at which the memory is swapped out to the disk from physical RAM&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Note: Most of the systems reports swap block value in KB. Check man page&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;I/O Block:&lt;/span&gt; I/O related information&lt;/div&gt;&lt;div&gt;bi  --&gt;  Rate at which the system sends data to the block devices (in blocks/sec)&lt;/div&gt;&lt;div&gt;bo  --&gt;  Rate at which the system reads the data from block devices (in blocks/sec)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;System Block:&lt;/span&gt; System information&lt;/div&gt;&lt;div&gt;in  --&gt;  Number of interrupts received by the system per second&lt;/div&gt;&lt;div&gt;cs  --&gt;  Rate of context switching in the process space (in number/sec)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;CPU block:&lt;/span&gt; Most used CPU related information&lt;/div&gt;&lt;div&gt;Us  --&gt;  Shows the percentage of CPU spent in user processes. Most of the user/application/database processes comes under user processes category&lt;/div&gt;&lt;div&gt;Sy  --&gt;  Percentage of CPU used by system processes, such as all root/kernal processes&lt;/div&gt;&lt;div&gt;Id  --&gt;  Percentage of free CPU&lt;/div&gt;&lt;div&gt;Wa  --&gt;  Percentage spent in “waiting for I/O”&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lot of people have problems here. Some people say us + sy +id + wa=100 and some other says us + sy +id =100. I stick to second (I/O doesn’t consume CPU). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;Interpretation with respect to performance:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first line of the output is an average of all the metrics since the system was restarted. So, ignore that line since it does not show the current status. The other lines show the metrics in real time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ideally r/b/w values under procs block with close to 0 or 0 itself. If one or value counter values are constantly reporting high values, it means that system may not have sufficent CPU or Memory or I/O bandwidth.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If value of swpd under swap is too high and it keeps changing, the it means that system is running short of memory.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The data under “io” indicates the flow of data to and from the disks. This shows how much disk activity is going on, which does not necessarily indicate some problem(obviously data has to go to disk in order to be persistent). If we see some large number under “proc” and then “b” column (processes being blocked) and high I/O, the issue could be a I/O contention.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;Rule of thumb in Performance&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Adding more CPU, Memory or I/O bandwidth to the system is not the solution to the problem always; this is just postment of problem to future and it can blow anytime. The real solution is tune the application(every compoent in the architecture) as far as possible. Adding hardware capacity or buying a powerful hardware should be the last option.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As usual, comments are always welcome.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-Thiru&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-4664887025624681943?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/4664887025624681943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=4664887025624681943' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/4664887025624681943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/4664887025624681943'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2009/02/vmstat.html' title='vmstat - Virtual Memory Statistics'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-1121787183130401591</id><published>2009-02-10T12:32:00.006+05:30</published><updated>2009-02-10T12:39:49.297+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='data pump'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>High Performance Oracle Database Export using Data Pump</title><content type='html'>&lt;div&gt;&lt;div&gt;Oracle offers high performance database not only in DDL and DML. Not only this that, but also in data backup and recovery. Oracle 10g offers new export/import utilities called data dump. The biggest advance of using data dump is it can push the system’s hardware capabilities to roof to achieve performance.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oracle Data Pump is the replacement for the original Export and Import utilities. Available starting in Oracle Database 10g, Oracle Data Pump enables very high-speed movement of data and metadata from one database to another.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Data Pump Export and Import utilities have a similar look and feel to the original utilities, but they are much more efficient and give you greater control and management of your import and export jobs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unlike original export/import utilities, data pump runs as jobs primarily on the server using server processes and stores the data in database server itself avoiding network latency(Except db link).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Data pump utilities uses direct file manipulation on the directory objects which helps us to achieve the speed. Since directory object can be managed from Oracle, security can be controlled by DBA.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Sample Practical example for export using data pump (expdp)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;1.&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Creating directory &lt;/span&gt;&lt;/div&gt;&lt;div&gt;Data pump works on direct file manipulation on database object directory. So before invoking data pump utilities, we need to create directory object and grant required permission. See the sample below.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;create directory hr_backup_dir as '/u02/dbbackup';&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;grant read, write on directory hr_backup_dir to scott;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;2.&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;decide on parallelism&lt;/span&gt;&lt;/div&gt;&lt;div&gt;If you the whole system resource is dedicated to database backup, then PARALLEL can be set to number of processor available in that system. If you want to assign only limited processor for backup, then set PARALLEL count accordingly. Based on the PARALLEL count, data dump will span that many number of child Oracle processes.&lt;/div&gt;&lt;div&gt;Parallelism also depends on the number of DUMPFILE specified in expdp. Data pump thread needs exclusive access to DUMPFILE. So if you specify PARALLEL to 8 and give only 1 DUMPFILE, then only 1 data pump process will do export and all other processes will wait for first process to finish and release the dump file. So plan for both PARALLEL and DUMPFILE parameter.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;3.&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;run expdp&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Here we go&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;expdp hr/hrworks SCHEMAS=HR DIRECTORY= hr_backup_dir DUMPFILE=hr.thiru.10-feb-2009%U.dmp LOGFILE=hr.thiru.10-feb-2009.log PARALLEL=8 JOB_NAME=HRDataPumpByThiru&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you specify %U in DUMPFILE, data pump will automatically create required number of files (most probably number of files created will be equal to PARALLEL).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;4.&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;check log files&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Once export got completed, we can check the details in hr.thiru.10-feb-2009.log file.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Interactive Mode&lt;/span&gt;&lt;/div&gt;&lt;div&gt;While data pump export operation is going, user can press ctrl + c; it will stop displaying message in screen, but it will not stop the export operation. Instead it display Export prompt which is interactive. From here user can query to see the status of export operation and also alter data pump parameters such as parallel and so on.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Database Monitoring&lt;/span&gt;&lt;/div&gt;&lt;div&gt;DBA or any other user have permission can view the status of the export operation from the database views, too. The main view to monitor the jobs is DBA_DATAPUMP_JOBS, which tells how many worker processes (column DEGREE) are working on the job. The other view that is important is DBA_DATAPUMP_SESSIONS, which when joined with the previous view and V$SESSION gives the SID of the session of the main foreground process.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;select sid, serial# from v$session s, dba_datapump_sessions d where s.saddr = d.saddr;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For more information refer Oracle documentation &lt;a href="http://www.oracle.com/technology/products/database/utilities/htdocs/data_pump_overview.html"&gt;here&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Post your valuable feedback.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-1121787183130401591?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/1121787183130401591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=1121787183130401591' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/1121787183130401591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/1121787183130401591'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2009/02/data-pump.html' title='High Performance Oracle Database Export using Data Pump'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-3359940784758622178</id><published>2009-02-04T10:40:00.005+05:30</published><updated>2009-02-04T11:48:10.180+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='AWR'/><category scheme='http://www.blogger.com/atom/ns#' term='statspack'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><title type='text'>Statspack</title><content type='html'>&lt;div style="text-align: justify;"&gt;I have worked in databases including IBM's DB2 (infact I am at IBM certified DB2 DBA for version 8.1), Open source MYSQL, Oracle (From Version 8). As a performance tester, I used to wonder how Oracle along can provide such wide range of monitoring facility that no other vendor is able to match. From System wide monitoring using statspack/AWR to session level trace, Oracle's monitoring capability is amazing. This article I am going to cover couple of basic things about Oracle’s very own monitoring utility Statspack. Statspack is the build in tool and installation script comes along with the database itself. (No need to pay even an extra penny from your pocket). All you need is just to install the same and start using the same.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Quote from Oracle Database Documentation about statspack:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;"&lt;span class="Apple-style-span" style="font-style: italic;"&gt;The Statspack package is a set of SQL, PL/SQL, and SQL*Plus scripts that allow the collection, automation, storage, and viewing of performance data. Statspack stores the performance statistics permanently in Oracle tables, which can later be used for reporting and analysis. The data collected can be analyzed using Statspack reports, which includes an instance health and load summary page, high resource SQL statements, and the traditional wait events and initialization parameters.&lt;/span&gt;"&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Installation:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;To invoke the Statspack setup, all you need to do is call the spcreate.sql script which is available in ORACLE_HOME/rdbms/admin. PERFSTAT user own all PL/SQL code, database objects including tables, sequence, constrains etc., In windows, you can login into Oracle user (using SQL* Plus) which has enough privilege to install and run the following &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;%ORACLE_HOME%\rdbms\admin\spcreate&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In Linux/Unix OS, run the following&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;$ORACLE_HOME/rdbms/admin/spcreate&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;During installation it will ask for PERFSTAT schema’s password (usually people use perfstat as password), permanent tables and temporary tablespace. SPCREATE.SQL install script in turn automatically calls the following scripts.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SPCUSR.SQL: Creates the PERFSTAT user and grants privileges required to collect the performance data from V$ tables.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SPCTAB.SQL: Creates the tables which are going to stores performance data.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SPCPKG.SQL: Creates the package required for monitoring, data purging, reporting&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Installation script dumps errors (if any) into SPCUSR.LIS, SPCTAB.LIS, and SPCPKG.LIS output files. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;How it works:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Snapshot of database’s performance was taken, stored in the PERFSTAT tables and will be assigned a unique SNAP_ID for the INSTANCE. Typically we can take snapshots for every pre-defined interval and between snapshots, we can generate performance report. If instance is restarted between snapshots, then reports will be meaning less. Snapshot can be taken at various levels depending up level of monitoring data required. Snapshot level can range from 1 to 10. Default level will be 5. More the level, more performance data (consumes bit high resource also).&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Taking snapshot&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Login as PERFSTAT user or user which can has execute privilege on statspack package and call statspack.snap function. Few examples.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;exec statspack.snap&lt;/div&gt;&lt;div style="text-align: justify;"&gt;exec statspack.snap(I_SNAP_LEVEL=&gt;7)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Statspack report&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Statspack report will give instance-wide statistics between two snapshots. Between snapshots, we can generate reports (but if instance is restarted between snapshot, report will not be meaningful). Just call SPREPORT.SQL and provide begin SNAP_ID, end SNAP_ID and report file name. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Oracle 10g and above has come up with something (feature which combines Statspack &amp;amp; ADDM) called Automatic Workload Repository(AWR). But statspack is still supported.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-3359940784758622178?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/3359940784758622178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=3359940784758622178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/3359940784758622178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/3359940784758622178'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2009/02/statspack.html' title='Statspack'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-645185115823801312</id><published>2009-02-02T13:56:00.003+05:30</published><updated>2009-02-02T14:00:49.463+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Measurement lab'/><category scheme='http://www.blogger.com/atom/ns#' term='ISP'/><title type='text'>Introducing Measurement Lab</title><content type='html'>&lt;div&gt;When an Internet application doesn't work as expected or your connection seems flaky, how can you tell whether there is a problem caused by your broadband ISP, the application, your PC, or something else?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So Google and some other folks found something called Measurement Lab to learn more about the broarband, ISP etc of broadband networks. Measurement Lab (M-Lab) is an open, distributed server platform for researchers to deploy Internet measurement tools. The goal of M-Lab is to advance network research and empower the public with useful information about their broadband connections. By enhancing Internet transparency, M-Lab helps sustain a healthy, innovative Internet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Researchers are already developing tools that allow users to, among other things, measure the speed of their connection, run diagnostics, and attempt to discern if their ISP is blocking or throttling particular applications. These tools generate and send some data back-and-forth between the user's computer and a server elsewhere on the Internet. Unfortunately, researchers lack widely-distributed servers with ample connectivity. This poses a barrier to the accuracy and scalability of these tools. Researchers also have trouble sharing data with one another.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Over the course of early 2009, Google will provide researchers with 36 servers in 12 locations in the U.S. and Europe. All data collected via M-Lab will be made publicly available for other researchers to build on. M-Lab is intended to be a truly community-based effort, and we welcome the support of other companies, institutions, researchers, and users that want to provide servers, tools, or other resources that can help the platform flourish.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Wanna test, check some tools listed on measurement lab? Click &lt;a href="http://www.measurementlab.net/measurement-lab-tools.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To know reason for why people/researchers look for these kind of tools, click &lt;a href="http://www.eff.org/testyourisp"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-645185115823801312?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/645185115823801312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=645185115823801312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/645185115823801312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/645185115823801312'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2009/02/introducing-measurement-lab.html' title='Introducing Measurement Lab'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-7741079344047655040</id><published>2009-01-23T12:27:00.009+05:30</published><updated>2009-01-23T12:44:41.629+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='monitoring linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Sun Management Center'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><title type='text'>Sun Management Center - Sun's Ways of monitoring</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_i3IIqgEY3Kw/SXlr1Wys3YI/AAAAAAAACpo/MB0cWpdijJY/s1600-h/graphic1.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 209px; height: 138px;" src="http://1.bp.blogspot.com/_i3IIqgEY3Kw/SXlr1Wys3YI/AAAAAAAACpo/MB0cWpdijJY/s400/graphic1.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5294381401346203010" /&gt;&lt;/a&gt;&lt;br /&gt;"Sun Management Center", a product from Sun Microsystems for monitoring the Spark and x86 hardware running Solaris and Linux. It provides in-depth monitoring and diagnostics of servers and its services. Sun MC is based on server-agent model.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Architecture&lt;/span&gt;&lt;br /&gt;Sun Management Center software includes three component layers: console, server, and agent. The product is based on the manager and agent architecture:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Console layer&lt;/span&gt;: Console layer is the interface to end users. It exposes web, JWS and console interfaces. Mutiple user can access the same Sun MC at the same time.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Server layer:&lt;/span&gt; server is the core, which talks to Console layer and agent layer. It acts as the central repository and stores data(both historical and current). It includes the components such as configuration manager, event manager,  topology manager etc., Sun Management 4.0 uses &lt;a href="http://www.blogger.com/www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt;(open source) db to store data whereas the previous version 3.6 uses &lt;a href="http://www.oracle.com/database"&gt;Oracle&lt;/a&gt; to store data.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Agent layer:&lt;/span&gt; Agent layer monitors, gather information about the server/system in which it is deployed and it communicates from server using SNMP(modules are used for gathering monitoring data. Different modules are used for different purposes). Agent apart from monitoring, also has the cabability to manage the nodes. The agent uses rule (it will get from server layer) to raise the alarm if the rule is not met.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Modules:&lt;/span&gt; Modules are the components in agent layer responsible for monitoring. They can dynamically loaded, invoked, started, stopped and unisntalled in Sun MC. Kernal reader, file scanning, directory scanning, config reader, fault manager, print spooler, process monitoring are some of the modules.&lt;br /&gt;&lt;br /&gt;Like &lt;a href="http://www.ibm.com/developerworks/aix/library/au-analyze_aix/"&gt;nmon&lt;/a&gt;, Sun MC is free to download and use (you can pay and get support).  Like &lt;a href="http://perfhints.blogspot.com/2008/12/glance-hp-way-of-optimizing-systems.html"&gt;Glance &lt;/a&gt;for monitoring HP machines, Sun MC can be used to monitor the Sun based systems. Next time when you are planning to do performance testing, tuning on Spack or x86 hardware running Solaris, try Sun MC.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-7741079344047655040?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/7741079344047655040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=7741079344047655040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/7741079344047655040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/7741079344047655040'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2009/01/sun-management-center.html' title='Sun Management Center - Sun&apos;s Ways of monitoring'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SXlr1Wys3YI/AAAAAAAACpo/MB0cWpdijJY/s72-c/graphic1.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-8799893323797106788</id><published>2009-01-15T15:35:00.007+05:30</published><updated>2009-01-23T12:42:43.841+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='response time'/><title type='text'>End User Response Time Vs Tool Response Time</title><content type='html'>In olden days browser is more of display tool and for heavy client side processing, thick clients were used. As time and technology evolved, things have changed and current browser itself is more like think client. As the client side logic becoming heavy, obviously client side processing time has to be added to server side response time to get end user response time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Truth about performance testing tool&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In modern day internet/web application, response time can be computed as follows&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Response time = server side response time + network delay + client side processing time + rendering time&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Where as our load testing tools, computes response time as follows.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Response time = server side response time + network delay.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Since client side logic is heavy in modern day web/internet application, most of the tools available today are really missing out the significant portion in response time.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Adding fuel to fire (Java Script Engine)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Because Java Script is so important to the web today, no one can even imagine a web application without java script. A JavaScript engine (also known as JavaScript interpreter or JavaScript implementation) is an interpreter that interprets JavaScript source code and executes the script accordingly in client’s browser. In real, java script execution time by Java Script Engine is also added to end user response time. To name few Spider monkey, V8 are couple of open source java script engine.&lt;br /&gt;&lt;br /&gt;Even if some tools has ability (like Loadrunner click &amp;amp; script), it is very limited to a particular browser and particular java script engine.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;More Fuel&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Even if a tool is able to makeup the java script's response time, calculating full response time by tool has exception. PLUGINS. It is practically impossible for a tool vendor to work with all plugins available. Java and flash are the commonly used plugins in lot of web sites.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Just want to quote an example&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In one of my previous client environment, single user test for a particular page click takes around 50 sec, whereas the loadrunner @ 1000 user load reported the max response time as 10 sec. After seeing the result, client has called in for a meeting and they demonstrated his portion and proved that in real, that particular page takes much longer time to view. To stick to our result, we have done a sniffing of that request using network sniffer and showed that client side JS doing some nasty calculation is the culprit not the server. Also we explained them that, whatever loadrunner gives are the server side response time not the end user response time.&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;So sad&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Even if performance testing tool vendors wants to include client side response time, it is very difficult for them as whole lot of java script engine out in market with various market shares.&lt;br /&gt;&lt;br /&gt;Even tough for some, it is hard to believe that server side response time and end user response time are very different, we have to accept(as it is fact).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-8799893323797106788?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/8799893323797106788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=8799893323797106788' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/8799893323797106788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/8799893323797106788'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2009/01/end-user-response-time-vs-tool-response.html' title='End User Response Time Vs Tool Response Time'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-2560795438373803860</id><published>2008-12-22T11:22:00.001+05:30</published><updated>2008-12-22T11:24:39.149+05:30</updated><title type='text'>AIX vs FreeBSD vs HP-UX vs RedHat vs Solaris vs Tru64</title><content type='html'>&lt;div&gt;Working in lot of flavours of Unix/Linux? Not able to remember all the commands? &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then here is the help for you:&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.unixguide.net/unixguide.shtml"&gt;http://www.unixguide.net/unixguide.shtml&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers,&lt;/div&gt;&lt;div&gt;Thiru&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-2560795438373803860?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/2560795438373803860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=2560795438373803860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/2560795438373803860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/2560795438373803860'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/12/aix-vs-freebsd-vs-hp-ux-vs-redhat-vs.html' title='AIX vs FreeBSD vs HP-UX vs RedHat vs Solaris vs Tru64'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-3458461195868691288</id><published>2008-12-22T10:44:00.003+05:30</published><updated>2008-12-22T11:08:44.258+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='glance'/><title type='text'>Glance - HP Way of optimizing the system's performance</title><content type='html'>&lt;div&gt;I have found a webcast which explains how to use HP glance for monitoring and tuning HP Unix systems. Click &lt;a href="http://h20338.www2.hp.com/hpux11i/cache/571985-0-0-0-121.html"&gt;here&lt;/a&gt; for more information. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Few things to notice&lt;/div&gt;&lt;div&gt;1. We need to buy license from HP (or you can use 60 day trial version)&lt;/div&gt;&lt;div&gt;2. It even supports monitoring AIX, Linux, Solaris apart from HP Unix.&lt;/div&gt;&lt;div&gt;3. Supports drill down to find out what is going on system&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To me Glance looks like more powerful nmon. For those of you who are sick of monitoring systems using vmstat, sar, iostat etc  glance (and nmon) are good tools.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers,&lt;/div&gt;&lt;div&gt;Thiru&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-3458461195868691288?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/3458461195868691288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=3458461195868691288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/3458461195868691288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/3458461195868691288'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/12/glance-hp-way-of-optimizing-systems.html' title='Glance - HP Way of optimizing the system&apos;s performance'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-467728505394657056</id><published>2008-12-18T10:28:00.001+05:30</published><updated>2008-12-18T10:30:52.051+05:30</updated><title type='text'>Be proud of being developer</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_i3IIqgEY3Kw/SUnYsg47weI/AAAAAAAACgI/mU2RvsPJiVk/s1600-h/pic14310.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 187px;" src="http://1.bp.blogspot.com/_i3IIqgEY3Kw/SUnYsg47weI/AAAAAAAACgI/mU2RvsPJiVk/s400/pic14310.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5280990297323192802" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Click the image to enlarge&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-467728505394657056?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/467728505394657056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=467728505394657056' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/467728505394657056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/467728505394657056'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/12/be-proud-of-being-developer.html' title='Be proud of being developer'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SUnYsg47weI/AAAAAAAACgI/mU2RvsPJiVk/s72-c/pic14310.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-2462135479622164235</id><published>2008-12-11T09:30:00.006+05:30</published><updated>2009-01-23T12:43:29.141+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='remote monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='netrc'/><category scheme='http://www.blogger.com/atom/ns#' term='remote execution'/><category scheme='http://www.blogger.com/atom/ns#' term='rexe'/><title type='text'>Executing command on remote host, remote monitoring unix/Linux flavour</title><content type='html'>&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I was given some exercise on remote monitoring. Here is how I cracked the same. I have splited the task into 2 parts. 1) Executing a command on remote host 2) Run vmstat in remote host and collect performance statistics.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Steps for Executing the command on remote host&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Create/update .netrc file in user home directory and add credentials of all the machines that we need to be accessed remotely. Format should be as follows: &lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;machine &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;remote hostname=""&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;remote&gt; login &lt;/remote&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;username&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;username&gt; password &lt;/username&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;password&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;password&gt;&lt;/password&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/password&gt;&lt;/username&gt;&lt;/remote&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Execute “chmod 600 .netrc” so that only owner will have read/write access.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;To execute the command on remote host use the following command:&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;rexec &lt;remote&gt; &lt;command&gt; &lt;/command&gt;&lt;/remote&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;remote hostname=""&gt;&lt;span class="Apple-style-span"  style=" ;font-family:verdana;"&gt; &lt;/span&gt;&lt;/remote&gt;&lt;/li&gt;&lt;/ol&gt;&lt;remote hostname=""&gt;&lt;username&gt;&lt;password&gt;&lt;remote hostname=""&gt;&lt;command to="" be="" executed="" in="" remote="" host=""&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/command&gt;&lt;/remote&gt;&lt;/password&gt;&lt;/username&gt;&lt;/remote&gt;&lt;div&gt;&lt;remote hostname=""&gt;&lt;username&gt;&lt;password&gt;&lt;remote hostname=""&gt;&lt;command to="" be="" executed="" in="" remote="" host=""&gt;&lt;span style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Few examples for remote monitoring&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/command&gt;&lt;/remote&gt;&lt;/password&gt;&lt;/username&gt;&lt;/remote&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  font-weight: bold;font-family:verdana;font-size:13px;"&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;HP Unix:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;rexec remote_hp_ux_host vmstat 1 2 | tail -1 | awk '{print "Load Average : "$1"\nFree Mem :"$5"\nUser CPU : "$16"\nSystem CPU : "$17"\nIdle : "$18}'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;AIX:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Rexec remote_aix_host vmstat 1 2 | awk -v  psize="`pagesize`" '{if (NR ==2) print "Total "$4"\nPage Size : " psize}{if (NR == 8) print "Free list sz: "$4"\nUser CPU   : "$14"\nSystem CPU : "$15"\nIdle       : "$16"\nIO Wait    : "$17}'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Rest of Flavours:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Give a try and send me a feed back.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-2462135479622164235?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/2462135479622164235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=2462135479622164235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/2462135479622164235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/2462135479622164235'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/12/executing-command-on-remote-host-remote.html' title='Executing command on remote host, remote monitoring unix/Linux flavour'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-5631572800399523689</id><published>2008-12-11T09:25:00.005+05:30</published><updated>2009-01-23T12:45:04.136+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='remote monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><title type='text'>Remote monitoring Linux/unix servers from linux/unix server</title><content type='html'>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;u&gt;&lt;span style=" ;font-family:Verdana;font-size:10pt;"&gt;Steps for Executing the command on  remote host&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt; &lt;ol style="MARGIN-TOP: 0in" type="1"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style=" ;font-family:Verdana;font-size:10pt;"&gt;Create/update .netrc file in user  home directory and add credentials of all the machines that we need to be  accessed remotely. Format should be as follows&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/li&gt;&lt;/ol&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;i&gt;&lt;span style=" ;font-family:Verdana;font-size:10pt;"&gt;machine &lt;remote hostname=""&gt;  login &lt;username&gt; password &lt;password&gt;&lt;/password&gt;&lt;/username&gt;&lt;/remote&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;i&gt;&lt;span style=" ;font-family:Verdana;font-size:10pt;"&gt;&lt;/span&gt;&lt;/i&gt; &lt;/p&gt; &lt;ol style="MARGIN-TOP: 0in" type="1" start="2"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style=" ;font-family:Verdana;font-size:10pt;"&gt;Execute “chmod 600 .netrc” so that  only owner will have read/write access.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style=" ;font-family:Verdana;font-size:10pt;"&gt;To execute the command on remote  host use the following command&lt;/span&gt; &lt;/li&gt;&lt;/ol&gt; &lt;div class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style=" ;font-family:Verdana;font-size:10pt;"&gt;&lt;/span&gt;&lt;i&gt;&lt;span style=" ;font-family:Verdana;font-size:10pt;"&gt;rexec &lt;remote hostname=""&gt;  &lt;command to="" be="" executed="" in="" remote="" host=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/command&gt;&lt;/remote&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span class="Apple-style-span"   style="  font-style: italic;font-family:Verdana;font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span class="Apple-style-span"   style="  font-style: italic;font-family:Verdana;font-size:13px;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;To remote monitor&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span class="Apple-style-span"   style="  font-style: italic;font-family:Verdana;font-size:13px;"&gt;rexec remotehost vmstat 1 10&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-5631572800399523689?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/5631572800399523689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=5631572800399523689' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/5631572800399523689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/5631572800399523689'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/12/remote-monitoring-linuxunix-servers.html' title='Remote monitoring Linux/unix servers from linux/unix server'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-3868485913870564254</id><published>2008-10-20T14:43:00.004+05:30</published><updated>2009-01-15T15:51:31.415+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='TCP'/><category scheme='http://www.blogger.com/atom/ns#' term='TCP/IP states'/><title type='text'>TCPIP State</title><content type='html'>&lt;div&gt;Hi All,&lt;/div&gt;&lt;div&gt;     I have found a good article on TCPIP state and flow.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.cs.northwestern.edu/~agupta/cs340/project2/TCPIP_State_Transition_Diagram.pdf"&gt;http://www.cs.northwestern.edu/~agupta/cs340/project2/TCPIP_State_Transition_Diagram.pdf&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mapping the above article with &lt;a href="http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/counters/counters2_lxyl.mspx?mfr=true"&gt;http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/counters/counters2_lxyl.mspx?mfr=true&lt;/a&gt; will throw more light on perfmon counters.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers,&lt;/div&gt;&lt;div&gt;Thiru&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-3868485913870564254?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/3868485913870564254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=3868485913870564254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/3868485913870564254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/3868485913870564254'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/10/tcpip-state.html' title='TCPIP State'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-8446098424507170462</id><published>2008-08-27T16:31:00.004+05:30</published><updated>2009-01-15T15:52:15.700+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thomas Kyte'/><category scheme='http://www.blogger.com/atom/ns#' term='automactic tuning'/><title type='text'>Quote from Thomas Kyte's book</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;About Thomas Kyte: Architect in Oracle Corp. Brain behind &lt;a href="http://asktom.oracle.com/"&gt;http://asktom.oracle.com/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;if you want a 10 step guide to tuning a query, buy a piece of software.  You are not needed in this process, anyone can put a query in, get a query out and run it to see if it is faster.  There are tons of these tools on the market.  They work using rules (heuristics) and can tune maybe 1% of the problem queries out there.  They APPEAR to be able to tune a much larger percent but that is only because the people using these tools never look at the outcome -- hence they continue to make the same basic mistakes over and over and over.&lt;br /&gt;&lt;br /&gt;If you want to really be aboe to tune the other 99% of the queries out there, knowledge of lots of stuff -- physical storage mechanisms, access paths, how the optimizer works -thats the only way.&lt;br /&gt;&lt;br /&gt;..&lt;br /&gt;..&lt;br /&gt;&lt;br /&gt;Think about it for a moment.  If there were a 10 step or even 1,000,000 step process by  which any query can be tuned (or even X% of queries for that matter), we would write a program to do it.  Oh don't get me wrong, there are many programs that actually try to do this - Oracle Enterprise Manager with its tuning pack, SQL Navigator and others.  What they do is primarily recommend indexing schemes to tune a query, suggest materialized views, offer to add hints to the query to try other access plans.  They show you different query plans for the same statement and allow you to pick one.  They offer "rules of thumb" (what I generally call ROT since the acronym and the word is maps to are so appropriate for each other) SQL optimizations - which if they were universally applicable - the optimizer would do it as a matter of fact.  In fact, the cost based optimizer does that already - it rewrites our queries all of the time.  These tuning&lt;br /&gt;tools use a very limited set of rules that sometimes can suggest that index or set of indexes you really should have thought of during your design.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-8446098424507170462?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/8446098424507170462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=8446098424507170462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/8446098424507170462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/8446098424507170462'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/08/quote-from-thomas-kytes-book_27.html' title='Quote from Thomas Kyte&apos;s book'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-8717602155813801627</id><published>2008-08-27T13:43:00.004+05:30</published><updated>2009-01-15T15:54:14.891+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='perfmon'/><title type='text'>Monitoring Windows Server Performance and Activity</title><content type='html'>Microsoft has given step by step guide on how to setup monitoring (using perfmon) on windows system. Click &lt;a href="http://technet.microsoft.com/hi-in/library/bb726968%28en-us%29.aspx"&gt;here&lt;/a&gt; to check the same.&lt;br /&gt;&lt;br /&gt;I just don’t wanna reinvent wheel and also this saved my time.&lt;br /&gt;&lt;br /&gt;For Linux/Unix monitoring, I am planning to write on my own(atleast 1 linux or unix version with detailed example).&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Thiru&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-8717602155813801627?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/8717602155813801627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=8717602155813801627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/8717602155813801627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/8717602155813801627'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/08/monitoring-windows-server-performance.html' title='Monitoring Windows Server Performance and Activity'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-2707525023362660082</id><published>2008-08-26T16:39:00.002+05:30</published><updated>2008-08-26T16:46:15.799+05:30</updated><title type='text'>All I Ever Need to Know about Testing I Learned in Kindergarten - By Lee Copeland</title><content type='html'>While googling, I found an interesting blog (&lt;a href="http://lazith.blogspot.com/2006/01/all-i-ever-need-to-know-about-testing.html"&gt;http://lazith.blogspot.com/2006/01/all-i-ever-need-to-know-about-testing.html&lt;/a&gt;). It is worth spending sometime reading this (to me, at least).&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;-Thiru&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-2707525023362660082?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/2707525023362660082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=2707525023362660082' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/2707525023362660082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/2707525023362660082'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/08/all-i-ever-need-to-know-about-testing-i.html' title='All I Ever Need to Know about Testing I Learned in Kindergarten - By Lee Copeland'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-1247067244871326005</id><published>2008-08-18T12:39:00.001+05:30</published><updated>2008-08-18T12:40:51.882+05:30</updated><title type='text'>web_reg_save_param equallent for webload</title><content type='html'>I have found a site who claims that they have written a function equallent of web_reg_save_param.  Click &lt;a href="http://rupeshmore.blogspot.com/2008/07/loadrunners-function-wegregsaveparam.html"&gt;here&lt;/a&gt; to check.&lt;br /&gt;&lt;br /&gt;Use at your own risk.&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;Thiru&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-1247067244871326005?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/1247067244871326005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=1247067244871326005' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/1247067244871326005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/1247067244871326005'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/08/webregsaveparam-equallent-for-webload.html' title='web_reg_save_param equallent for webload'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-8281093046716308599</id><published>2008-08-13T10:55:00.006+05:30</published><updated>2009-01-15T15:53:43.730+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='monitoring linux'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='perfmon'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring windows'/><title type='text'>OS Monitoring</title><content type='html'>Monitoring a server isn't something you should do chaotically. You need to have a clear plan—a set of goals that you hope to achieve. Troubleshooting server performance problems is a key reason for monitoring. Not just to plot good looking graphs and show it to superiors. Without monitoring, tuning is almost an impossible activity.&lt;br /&gt;&lt;br /&gt;Basically monitoring is done for 2 purposes&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Benchmark&lt;/li&gt;&lt;li&gt;Tuning&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;While monitoring OS, following are the basic things need to be considered regardless of OS platform.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;CPU Utilization&lt;/li&gt;&lt;li&gt;Memory, paging&lt;/li&gt;&lt;li&gt;Throughput &amp;amp; retransmission statistics&lt;/li&gt;&lt;li&gt;TCP statistics&lt;/li&gt;&lt;li&gt;Disk statistics&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Not all things need to be presented in report. Presenting 10-20 page report containing only relevant is always better than presenting a 100 page report (album). If you want to show your hard work, create annexure section and attached to it (I may not call it album here. After-all we are showing our hard work at relevant place. He he). &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#000066;"&gt;Linux Monitoring&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Monitoring Linux based systems are not as complex as many people thing. All we need to know is just simple, basic shell scripting and few basic commands.&lt;/p&gt;&lt;p&gt;To know the version of Linux kernel&lt;br /&gt;uname –a&lt;/p&gt;&lt;p&gt;&lt;strong&gt;vmstat command&lt;/strong&gt;&lt;br /&gt;vmstat reports information about processes, memory, paging, block IO, traps, and CPU activity.&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Basic syntax&lt;/em&gt;&lt;br /&gt;vmstat [[delay] count]&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Example&lt;br /&gt;&lt;/em&gt;vmstat 10 7&lt;br /&gt;&lt;br /&gt;The first statistics that are printed are averaged over the system uptime.Don’t consider this unless it really make sense.&lt;br /&gt;&lt;br /&gt;See man page for more information&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;iostat command&lt;/strong&gt;&lt;br /&gt;iostat displays kernel I/O statistics on terminal, device and cpu operations.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Basic syntax&lt;br /&gt;&lt;/em&gt;iostat [[delay] count]&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Example&lt;/em&gt;&lt;br /&gt;Iostat 10 7&lt;br /&gt;&lt;br /&gt;The first statistics that are printed are averaged over the system uptime.Don’t consider this unless it really make sense.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;netstat command&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;netstat prints network connections, routing tables, interface statistics, masquerade connections, and multicast memberships. There are a number of output formats, depending on the options for the information presented.&lt;br /&gt;&lt;br /&gt;See man page for more information&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Nmon utility&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Quote from IBM&lt;br /&gt;“&lt;em&gt;This free tool gives you a huge amount of information all on one screen. Even though IBM doesn't officially support the tool and you must use it at your own risk, you can get a wealth of performance statistics. Why use five or six tools when one free tool can give you everything you need?&lt;/em&gt;”&lt;br /&gt;&lt;br /&gt;The nmon tool runs on:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;AIX® 4.1.5, 4.2.0 , 4.3.2, and 4.3.3 (nmon Version 9a: This version is functionally established and will not be developed further.) &lt;/li&gt;&lt;li&gt;AIX 5.1, 5.2, and 5.3 (nmon Version 10: This version now supports AIX 5.3 and POWER5™ processor-based machines, with SMT and shared CPU micro-partitions.&lt;/li&gt;&lt;li&gt;Linux® SUSE SLES 9, Red Hat EL 3 and 4, Debian on pSeries® p5, and OpenPower™&lt;br /&gt;Linux SUSE, Red Hat, and many recent distributions on x86 (Intel and AMD in 32-bit mode) &lt;/li&gt;&lt;li&gt;Linux SUSE and Red Hat on zSeries® or mainframe &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Click &lt;a href="http://www.ibm.com/developerworks/aix/library/au-analyze_aix/"&gt;here&lt;/a&gt; for more information.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color:#000066;"&gt;Windows Monitoring&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Windows provide huge set of monitoring counters to end users. Not all need to be monitored always, but all counters might be useful at one point or another. All windows OS related counters can be monitoring using perfmon (just goto run and type perfmon).&lt;/p&gt;&lt;a href="http://4.bp.blogspot.com/_i3IIqgEY3Kw/SKJyNGFLy_I/AAAAAAAABBA/rD7_eEdHYyk/s1600-h/perfmon.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5233871286254160882" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_i3IIqgEY3Kw/SKJyNGFLy_I/AAAAAAAABBA/rD7_eEdHYyk/s320/perfmon.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;I am planning to write Step by step instruction on how to monitoring windows using perfmon later in as a separate blog.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-8281093046716308599?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/8281093046716308599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=8281093046716308599' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/8281093046716308599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/8281093046716308599'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/08/os-monitoring.html' title='OS Monitoring'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_i3IIqgEY3Kw/SKJyNGFLy_I/AAAAAAAABBA/rD7_eEdHYyk/s72-c/perfmon.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-6174562378165087203</id><published>2008-07-26T13:33:00.004+05:30</published><updated>2008-07-26T14:11:09.193+05:30</updated><title type='text'>Performance in Linux and Windows Servers</title><content type='html'>Performance of Windows Servers are quite unpredictable. The CPU mainly is totally not understandable. It does not show any trend. It could go to the peak load at very initial stages of the load test and would remain there for the remaining duration of the test run. Sometimes, it can also be observed that at some load, the CPU comes down and goes up again. Even the Memory and other parameters that are mainly considered for the performance tuning show sporadic nature. But the response times might show a constant trend. Due to these unpredictability, it is very difficult to predict the optimised Parameters of the performance.&lt;br /&gt;&lt;br /&gt;Peformance of the same parameters in the Linux and AIX machines are very trendy. They show a particular trend with which it is very easy to predict and recommend various Performance parameters to optimise the performance of these Servers. It can even be observed that the response time statistics are very much in the trend with the UserLoad and CPU Utilisation, etc.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The observations are of my personal experience. Comments, suggestions and Views are welcome.&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-6174562378165087203?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/6174562378165087203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=6174562378165087203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/6174562378165087203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/6174562378165087203'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/07/performance-in-linux-and-windows.html' title='Performance in Linux and Windows Servers'/><author><name>Bhargav</name><uri>http://www.blogger.com/profile/06129992255609320634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-384166747913474035</id><published>2008-07-15T10:39:00.006+05:30</published><updated>2009-01-23T12:44:04.038+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='web server'/><category scheme='http://www.blogger.com/atom/ns#' term='load balancer'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><category scheme='http://www.blogger.com/atom/ns#' term='application server'/><category scheme='http://www.blogger.com/atom/ns#' term='database server'/><title type='text'>Understanding Architecture</title><content type='html'>Most important phase of performance tuning is to understand Architecture of the System under testing. Without understanding the end to end architecture, performance tuning is like “searching needle in hay”.&lt;br /&gt;Few basic components and its definitions&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Load balancer -&gt; Technique to spread work between two or more computers, network links, CPUs, hard drives, or other resources, in order to get optimal resource utilization, throughput, or response time.&lt;/li&gt;&lt;li&gt;Web server -&gt; A computer program that is responsible for accepting HTTP requests from web clients, which are known as web browsers, and serving them HTTP responses along with optional data contents, which usually are web pages such as HTML documents and linked objects such as images, css etc.,(usually static content)&lt;/li&gt;&lt;li&gt;LDAP server -&gt; The Lightweight Directory Access Protocol, or LDAP, is an application protocol for querying and modifying directory services running over TCP/IP. The most common example is the telephone directory, which consists of a series of names (either of persons or organizations) organized alphabetically, with each name having an address and phone number attached. Due to this basic design (among other factors) LDAP is often used by other services for authentication(SSA).&lt;/li&gt;&lt;li&gt;Application Server -&gt; An application server is a software engine that delivers applications to client computers or devices, typically through the Internet and using the HyperText Transfer Protocol. Application servers are distinguished from web servers by the extensive use of server-side dynamic content and frequent integration with database engines. An application server handles most, if not all, of the business logic and data access of the application.&lt;/li&gt;&lt;li&gt;Database server -&gt; complex set of software programs that controls the organization, storage, management, and retrieval of data in a database.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;During testing, monitoring and logging all the components + OS involved is mandatory. Without monitoring all components including network, improvement/tuning acheived is pure luck.&lt;/p&gt;&lt;p&gt;Next blog plan: monitoring&lt;/p&gt;&lt;p&gt;-Thiru&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-384166747913474035?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/384166747913474035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=384166747913474035' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/384166747913474035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/384166747913474035'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/07/understanding-architecture.html' title='Understanding Architecture'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-4145381755841823736</id><published>2008-07-02T11:19:00.003+05:30</published><updated>2008-07-02T11:28:25.823+05:30</updated><title type='text'>Windows XP getting weird ??</title><content type='html'>Windows XP will either get into weird state or stop working if we haven’t rebooted the system for long time. Either we have to logout and login or reboot to make it run smoother.&lt;br /&gt;There are alternatives out there.&lt;br /&gt;Create desktop shortcut for “&lt;strong&gt;%windir%\system32\rundll32.exe advapi32.dll,ProcessIdleTasks&lt;/strong&gt;” and then invoke the created shortcut whenever you feel the system is slow/weird.&lt;br /&gt;Don't want to do this?? Simple: Update to SP1. (Seems to be fixed in SP1).&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-4145381755841823736?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/4145381755841823736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=4145381755841823736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/4145381755841823736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/4145381755841823736'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/07/make-xp-to-run-smooth-without-rebooting.html' title='Windows XP getting weird ??'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-781841548091373951</id><published>2008-06-27T15:25:00.003+05:30</published><updated>2008-06-27T16:05:23.011+05:30</updated><title type='text'>Performance - Go Green</title><content type='html'>&lt;span style="color:#009900;"&gt;Performance is not just making system to run faster. It effective use of whatever is available to us. Few questions/suggestions for us:&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="color:#009900;"&gt;Have we switched off your monitor while leaving for break in the middle of work?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#009900;"&gt;Have we switched off your computer while going home? Our systems are not server that is accessed 24x7. Nothing wrong is wasting 2 minutes next day morning to turn on.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#009900;"&gt;Have we turned off your bike in signal?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#009900;"&gt;Have we turned off the switch after charging the mobile?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#009900;"&gt;Do we use printer effectively? (2 sides printing, print 2 pages on each side etc.,)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#009900;"&gt;Use reusable plates rather than using plastic or paper plate.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#009900;"&gt;Replace normal bulb with a compact fluorescent. Saves electricity. (google: ban the bulb).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#009900;"&gt;Don’t keep your refrigerator door open for long time. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#009900;"&gt;Please don’t use PLASTIC or try to minimize. &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;I am planning to follows this atleast from today. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;These are very few things but can make big difference. Go Green.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;Thanks&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;Thiru&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-781841548091373951?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/781841548091373951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=781841548091373951' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/781841548091373951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/781841548091373951'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/06/performance.html' title='Performance - Go Green'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-867225703631187766</id><published>2008-06-24T12:24:00.001+05:30</published><updated>2009-01-15T15:52:50.049+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='phases'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance testing process'/><title type='text'>Performance Testing Process/Phases</title><content type='html'>Performance testing is testing that is performed to determine how fast some aspect of a system performs under a particular workload. To become a successful Performance Engineer one should have&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Basic concept of how things work (HTTP, Network, LB, Web Server, App server, DB server, LDAP, SSL Accelerator etc.,)&lt;/li&gt;&lt;li&gt;Eagerness to learn things&lt;/li&gt;&lt;li&gt;patience&lt;/li&gt;&lt;li&gt;In sting (list continues based on what you do)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Check whether it met predefined SLA&lt;/li&gt;&lt;li&gt;Compare 2 systems and find out which is performing better&lt;/li&gt;&lt;li&gt;Find bottleneck and tune to make the system to perform better&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Performance Testing/Engineering is not a science, it is rather art.&lt;br /&gt;Phases in Performance Testing/Engineering&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Requirement collection&lt;/li&gt;&lt;li&gt;Feasibility study&lt;/li&gt;&lt;li&gt;Test Plan&lt;/li&gt;&lt;li&gt;Scripting&lt;/li&gt;&lt;li&gt;Monitoring Design &amp;amp; Deployment&lt;/li&gt;&lt;li&gt;Smoke Test&lt;/li&gt;&lt;li&gt;Test Execution &amp;amp; Data Collection&lt;/li&gt;&lt;li&gt;Analysis and Reporting&lt;/li&gt;&lt;li&gt;Closure&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Requirement Collection&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Understand want customer really wants&lt;/li&gt;&lt;li&gt;Tell customer what performance team do and make sure they understand what it means.&lt;/li&gt;&lt;li&gt;Ask customer what to do&lt;/li&gt;&lt;li&gt;While selecting business flow for simulation, select flow(s) which obey the following rule. “20% of total business flow carried out by 80% of users”. (Traversal document)&lt;/li&gt;&lt;li&gt;Understand the architecture (this has to done in detail if monitoring and tuning is involved)&lt;/li&gt;&lt;li&gt;Stress to customer that&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;a. We are not here to do function testing.&lt;/p&gt;&lt;p&gt;b. We don’t/can’t performance test everything.&lt;/p&gt;&lt;p&gt;c. We don’t/can’t simulate 100% of production transactions.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Feasibility Study&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Can we do what customer wants? If not, ask customer for help. Better to say no rather than doing something wrong or giving false commitment. This will make sure we get repeated customer. &lt;/li&gt;&lt;li&gt;How fast can we do this task? (this helps in planning)&lt;/li&gt;&lt;li&gt;Does tool by native support this or do we need to build work around?&lt;br /&gt;Note: In the same service based company, marketing team can’t say no most of the times (May be due to aggressive targets set by management or earn commission and much more); in that case, always insist for employee training whenever possible.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Test Plan&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Form a team. Know their skills&lt;/li&gt;&lt;li&gt;When to do what?&lt;/li&gt;&lt;li&gt;Deadlines. Fix deadline based on team’s skill(not based on TL's skill).&lt;/li&gt;&lt;li&gt;Get approval from client &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Scripting&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Simulate as per traversal document&lt;/li&gt;&lt;li&gt;Remember we simulate only core portion; so don’t make mistake in that.&lt;/li&gt;&lt;li&gt;Build agenda/driver script based on mix.&lt;/li&gt;&lt;li&gt;We are testing something to find issues. Make sure your script doesn’t have issues.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Monitoring design &amp;amp; Deployment&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Get the list of servers that needs to be monitored (including versions)&lt;/li&gt;&lt;li&gt;If you haven’t worked on that specific version of servers, spend sometime in going though ‘new features’&lt;/li&gt;&lt;li&gt;Design &amp;amp; deploy the monitoring for OS(perfmon, vmstat, netstat etc.,) and then corresponding servers specific monitors(perfservlet, server-status, statspack etc.,).&lt;br /&gt;Smoke Test&lt;/li&gt;&lt;li&gt;Smoke Test is the test to make sure script and monitoring are working as required&lt;/li&gt;&lt;li&gt;Make sure entire team is there during smoke (scripting team and monitoring design/deployment team)&lt;/li&gt;&lt;li&gt;Have you detected something suspicious? Check and/or correct the same. Mistakes here will lead to failure of whole engagement.&lt;/li&gt;&lt;li&gt;Redo smoke test if some changes were made&lt;/li&gt;&lt;li&gt;Make sure enough time is allotted for smoke. Don’t do smoke just before 1 hour of test. Atleast give 1 or 2 days for smoke depends on complexity of engagement.&lt;/li&gt;&lt;li&gt;Make sure you have check list&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Test Execution &amp;amp; Data collection&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Should be only started if everything was gone fine in smoke.&lt;/li&gt;&lt;li&gt;Make sure check list is correctly followed.&lt;/li&gt;&lt;li&gt;After test execution, collect simulation tool logs, monitoring logs, configuration files, log files and whatever is required by analysis team.&lt;/li&gt;&lt;li&gt;Most importantly timesync information of all servers.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Analysis and Reporting&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Nothing wrong in Newbie doing analysis. But?? (read the last point)&lt;/li&gt;&lt;li&gt;Reporting should focus and answer for every question in requirement document. Nothing wrong in providing value add. Also nothing wrong in missing value add. But make sure customer gets what he wants. &lt;strong&gt;There is no point is giving value addition without addressing customers basic requirements&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Recommendation should have substantiation or else say best practice.&lt;/li&gt;&lt;li&gt;Review the report. After customer is expecting only this from us.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Closure&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Anything gone wrong? Why? Make sure that it is not getting repeated in future project&lt;/li&gt;&lt;li&gt;Appreciate who ever deserves. After all PE guys doesn’t only work for money. &lt;/li&gt;&lt;li&gt;Appreciation must be given for fresher who did excellent job in scripting inspite of this being his/her first project.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Whatever phase I listed below has to happen ideally; not necessarily always.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Comments are always welcome.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-867225703631187766?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/867225703631187766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=867225703631187766' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/867225703631187766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/867225703631187766'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/06/performance-testing-is-testing-that-is.html' title='Performance Testing Process/Phases'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7083484754024706171.post-7360012968660648308</id><published>2008-06-17T15:38:00.000+05:30</published><updated>2008-06-17T15:45:14.563+05:30</updated><title type='text'>Welcome</title><content type='html'>&lt;div align="justify"&gt;&lt;/div&gt;&lt;p align="justify"&gt;Hello Everyone,&lt;br /&gt;   &lt;br /&gt;Welcome to Performance Hints Blog.&lt;br /&gt;I will try to provide accurate information as much as possible in this blog. But whatever I write/say in the blog is my personal opinion. It has nothing to do with my employer.&lt;br /&gt;&lt;br /&gt;Keep posting your ideas/queries and me this blog a interactive one. Anyone willing to join as author? Send me your personal email id.&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;Thiru&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7083484754024706171-7360012968660648308?l=perfhints.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://perfhints.blogspot.com/feeds/7360012968660648308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7083484754024706171&amp;postID=7360012968660648308' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/7360012968660648308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7083484754024706171/posts/default/7360012968660648308'/><link rel='alternate' type='text/html' href='http://perfhints.blogspot.com/2008/06/welcome.html' title='Welcome'/><author><name>Thiru</name><uri>http://www.blogger.com/profile/00253871008781872742</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_i3IIqgEY3Kw/SKJ75FZI83I/AAAAAAAABBU/8N4RvAz0hak/s1600-R/DSC00057.JPG'/></author><thr:total>0</thr:total></entry></feed>
