<?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-6767212759522432339</id><updated>2012-01-23T03:50:53.663+08:00</updated><category term='processing'/><category term='TTL'/><category term='Message'/><category term='protocol'/><category term='Internet Explorer 7'/><category term='assessment'/><category term='vuser'/><category term='measurement'/><category term='ping'/><category term='vm'/><category term='replay'/><category term='LRU'/><category term='Windows'/><category term='api'/><category term='resolution'/><category term='service'/><category term='Microsoft SQL Server'/><category term='iteration'/><category term='iostat'/><category term='lr_start_transaction'/><category term='copy'/><category term='presentation server'/><category term='recommended'/><category term='FTP'/><category term='threshold'/><category term='scenario'/><category term='hard disk'/><category term='resource'/><category term='license'/><category term='ctrx_sync_on_bitmap'/><category term='virtual'/><category term='traceroute'/><category term='Host-ID'/><category term='solaris'/><category term='running vusers'/><category term='hook'/><category term='patch'/><category term='system'/><category term='logical'/><category term='page faults'/><category term='Business Process Management'/><category term='authentication'/><category term='citrix agent'/><category term='leak'/><category term='memory'/><category term='Maximum'/><category term='IIS'/><category term='record'/><category term='page'/><category term='Scheduler Dispatch Queue'/><category term='controller'/><category term='Failure'/><category term='citrix'/><category term='VIEWSTATE'/><category term='different'/><category term='bandwidth'/><category term='FP'/><category term='faults'/><category term='unvoluntary wait'/><category term='ISR'/><category term='network'/><category term='iterations'/><category term='correlation'/><category term='committed bytes'/><category term='interrupt'/><category term='content'/><category term='vmstat'/><category term='transaction response time'/><category term='virtualization'/><category term='activity'/><category term='capacity'/><category term='temp'/><category term='contention'/><category term='kb'/><category term='TIME_EXCEEDED'/><category term='file download'/><category term='paging'/><category term='Threads'/><category term='protocols'/><category term='diagnostics'/><category term='GDI'/><category term='HostID'/><category term='latency'/><category term='ica'/><category term='MTU'/><category term='ctrx_sync_on_window'/><category term='excel'/><category term='ECHO_REPLY'/><category term='uptime'/><category term='IE 7'/><category term='SilkPerformer'/><category term='パフォーマンス　センター'/><category term='tuning'/><category term='clearance'/><category term='Java performance'/><category term='ロードランナー'/><category term='routine'/><category term='manual'/><category term='free list'/><category term='ready queue'/><category term='web_reg_max_html_param_len'/><category term='CLASSPATH'/><category term='router'/><category term='rmi-java'/><category term='transaction'/><category term='chunks'/><category term='netstat'/><category term='standby'/><category term='Multimedia'/><category term='basic'/><category term='lr_set_debug_message'/><category term='processor'/><category term='abnormal'/><category term='allocate'/><category term='files'/><category term='think time'/><category term='dispatcher'/><category term='Step Download Timeout'/><category term='DPC'/><category term='memory leaks'/><category term='thread'/><category term='click'/><category term='fault'/><category term='unix'/><category term='Load Testing'/><category term='kernel'/><category term='Sharepoint'/><category term='bottom-up'/><category term='server'/><category term='Tools'/><category term='RTS'/><category term='thread state'/><category term='MS Word'/><category term='top-down'/><category term='PORT_UNREACHABLE'/><category term='DOS'/><category term='bottleneck'/><category term='web_custom_request'/><category term='DNS'/><category term='installation'/><category term='rup'/><category term='-Xrunjdkhook'/><category term='sitescope'/><category term='disk'/><category term='Client'/><category term='exclude'/><category term='Web'/><category term='HTTP'/><category term='rstatd'/><category term='test'/><category term='Business Availability Center'/><category term='lr_end_transaction'/><category term='available bytes'/><category term='parameterization'/><category term='hotfixes'/><category term='Bundle'/><category term='footprints'/><category term='performance'/><category term='cron'/><category term='raid'/><category term='generate'/><category term='winsock'/><category term='負荷テスト'/><category term='NTLM'/><category term='IE7'/><category term='nfuse'/><category term='certificates'/><category term='MS SQL Server'/><category term='jre'/><category term='transition'/><category term='process working set'/><category term='vmware'/><category term='on-the-fly'/><category term='state'/><category term='RMI'/><category term='working'/><category term='I/O'/><category term='load generator'/><category term='reference'/><category term='html'/><category term='Socket'/><category term='trimming'/><category term='Session ID'/><category term='Full Extended Log'/><category term='BAC'/><category term='illustration'/><category term='Performance center'/><category term='ramp'/><category term='virtual machines'/><category term='LoadRunner'/><category term='processor queue length'/><category term='studio'/><category term='hp'/><category term='OS'/><category term='fly'/><category term='randomize'/><category term='auto'/><category term='cache'/><category term='thrashing'/><category term='partitions'/><category term='pageable'/><category term='load'/><category term='environment'/><category term='export'/><category term='RAM'/><category term='Parasoft'/><category term='recording'/><category term='srvinfo'/><category term='concurrent'/><category term='virtual memory'/><category term='duplicate'/><category term='virtual addressing'/><category term='download'/><category term='physical'/><category term='delete'/><category term='transactions'/><category term='address'/><category term='General'/><category term='CPU'/><category term='sdk'/><category term='analysis'/><category term='Winint'/><category term='ECHO_REQUEST'/><category term='browser'/><category term='Planning'/><category term='monitor'/><category term='priorty scheduling'/><category term='Jtest'/><category term='script'/><category term='bat'/><category term='wininet'/><category term='Operating System'/><category term='CORBA-java'/><category term='ADO'/><category term='Xbootclasspath'/><category term='DCOM'/><category term='recommendation'/><category term='advance trace'/><category term='crash'/><category term='on the fly'/><category term='pages'/><category term='counter'/><category term='voluntary wait'/><category term='document'/><category term='random'/><category term='memoryy'/><category term='BPM'/><category term='zero list'/><category term='monitoring'/><category term='windows scheduler'/><category term='ICMP'/><category term='Java'/><category term='Performance Testing'/><category term='working set size'/><category term='page fault resolution'/><category term='communicate'/><category term='mercury'/><category term='runtime'/><category term='IE'/><category term='Vugen'/><category term='ODBC'/><category term='throughput'/><category term='utilization'/><category term='web_reg_save_param'/><title type='text'>Performance Testing, LoadRunner Tips&amp;Tricks</title><subtitle type='html'>This page is dedicated to performance testing using LoadRunner. Current development also includes tuning on various technologies and business perspective in load testing and usage of other load testing tools.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Hs</name><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><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>95</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-6523476848204795772</id><published>2007-10-29T21:57:00.000+08:00</published><updated>2007-10-29T22:05:03.388+08:00</updated><title type='text'>LoadRunner TnT</title><content type='html'>Just to bring to your attention that if you had not subscribed to the contents of my new site, now is the time to do so.  I'm still using FeedBurner to deliver quality LoadRunner and Performance Testing content to you.  I'm also including information to analyze, troubleshoot and tune whenever I have anything to share with you guys out there.  So why wait any further if you are new to this field, take the opportunity to subscribe to the new site now! :) It's free anyway. :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;form style="border: 1px solid rgb(204, 204, 204); padding: 3px; text-align: center;" action="http://www.feedburner.com/fb/a/emailverify" method="post" target="popupwindow" onsubmit="window.open('http://www.feedburner.com/fb/a/emailverifySubmit?feedId=1170915', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true"&gt;&lt;p&gt;Enter your email address:&lt;/p&gt;&lt;p&gt;&lt;input style="width: 140px;" name="email" type="text"&gt;&lt;/p&gt;&lt;input value="http://feeds.feedburner.com/~e?ffid=1170915" name="url" type="hidden"&gt;&lt;input value="LoadRunner TnT" name="title" type="hidden"&gt;&lt;input name="loc" value="en_US" type="hidden"&gt;&lt;input value="Subscribe" type="submit"&gt;&lt;p&gt;Delivered by &lt;a href="http://www.feedburner.com/" target="_blank"&gt;FeedBurner&lt;/a&gt;&lt;/p&gt;&lt;/form&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-6523476848204795772?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://feeds.feedburner.com/~e?ffid=1170915' title='LoadRunner TnT'/><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/6523476848204795772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=6523476848204795772' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6523476848204795772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6523476848204795772'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/10/loadrunner-tnt.html' title='LoadRunner TnT'/><author><name>Hs</name><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>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-2168569239991085880</id><published>2007-09-06T19:58:00.000+08:00</published><updated>2007-09-29T12:21:16.327+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><title type='text'>It's a brand new start for LoadRunner TnT</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:arial;"&gt;Many thanks to all who had been following and supporting this website.  The time to move to a bigger space has come and we are excited to announce the new website &lt;/span&gt;&lt;a style="font-family: arial;" href="http://loadrunnertnt.com/"&gt;LoadRunner TnT&lt;/a&gt;&lt;span style="font-family:arial;"&gt; is up and running.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; font-family: arial;"&gt;&lt;a href="http://loadrunnertnt.com/"&gt;Log on to LoadRunner TnT now!&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The new site will continue to provide quality information on LoadRunner and Performance Testing to help newbies or mid-career performance tester in their work.  Posting on this site will be discontinued but for those existing articles, they will be moved to the new home not shortly but surely.&lt;/span&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/6767212759522432339-2168569239991085880?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/2168569239991085880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=2168569239991085880' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2168569239991085880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2168569239991085880'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/09/its-brand-new-start-for-loadrunner-tnt.html' title='It&apos;s a brand new start for LoadRunner TnT'/><author><name>Hs</name><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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-7832841746547146463</id><published>2007-08-27T09:40:00.000+08:00</published><updated>2008-12-09T16:50:22.316+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='top-down'/><category scheme='http://www.blogger.com/atom/ns#' term='transaction'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='bottom-up'/><title type='text'>General: Load Testing Objectives</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;There are two approaches from the user perspective on defining load testing objectives, either &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;top-down (business perspective)&lt;/span&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;bottom-up (techincal perspective).&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:Arial;color:#3333ff;"&gt;&lt;/span&gt;&lt;/strong&gt; &lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5104384314327720994" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_O2pYmSzohE4/RtZqfVyUZCI/AAAAAAAAApQ/qIzEPmirwrc/s200/General_Perspective.jpg" border="0" /&gt; &lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;The top-down, meaning the transaction time take to submit a request and having it responded on the user's machine. This is a business perspective where they just want to know how the application is responding. The user do not want to know how many Hits/sec or Throughput but just want to know how much time was taken for a transaction (therefore the terminology of "transcation" must be aligned with you and the user). &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;The bottom-up, is a techincal perspective as you had pointed out such as the &lt;/span&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://asp.net/" target="_blank"&gt;&lt;span style="font-family:arial;"&gt;ASP.NET&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; transactions or the database transactions (or commits). This is usually a persepctive from a technical manager so they can configure the system accordingly (or whatever they are going to do their system).&lt;br /&gt;&lt;br /&gt;Hopefully the above is helpful in understandin your users/clients a little bit more before giving them a satisfying answer.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;General&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html" yyn8d="2" vi8w7="0"&gt;&lt;span style="font-family:arial;"&gt;General: How does LoadRunner license work? &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-are-client-activities-recorded.html" yyn8d="2" vi8w7="0"&gt;&lt;span style="font-family:arial;"&gt;General: Are client activities recorded by Vugen?&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-scenario-execution.html"&gt;&lt;span style="font-family:arial;"&gt;General: Scenario Execution &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-detecting-memory-leaks-using.html"&gt;&lt;span style="font-family:arial;"&gt;General: Detecting Memory Leaks Using LoadRunner&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-vugencontroller-crash-or.html"&gt;&lt;span style="font-family:arial;"&gt;General: Vugen/Controller Crash or Abnormal Behavior &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/06/general-virtualization-with-loadrunner.html"&gt;&lt;span style="font-family:arial;"&gt;General: Virtualization with LoadRunner&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/after-writing-couple-of-posts-for-past.html"&gt;&lt;span style="font-family:arial;"&gt;General: Planning for Load Testing&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a title="'Permanent" style="FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/07/general-planning-for-load-testing.html" rel="bookmark" yyn8d="0" vi8w7="0"&gt;&lt;span style="font-family:arial;"&gt;General: Planning for Load Testing - Soliciting Requirements&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/07/this-is-point-that-load-tester-must.html" rel="bookmark" yyn8d="0" vi8w7="0"&gt;&lt;span style="font-family:arial;"&gt;General: Planning for Load Testing - Application Design&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/07/general-planning-for-load-testing_25.html" rel="bookmark" qy_fp="0" uevuh="0"&gt;&lt;span style="font-family:arial;"&gt;General: Planning for Load Testing - Protocols&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a title="'Permanent" style="FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/07/general-planning-for-load-test-monitor.html" rel="bookmark" yyn8d="0" vi8w7="0"&gt;&lt;span style="font-family:arial;"&gt;General: Planning for Load Testing - Monitor Setup&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a title="'Permanent" style="FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/08/general-planning-for-load-testing.html" rel="bookmark" yyn8d="0" vi8w7="0"&gt;&lt;span style="font-family:arial;"&gt;General: Planning for Load Testing - Monitoring&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a title="'Permanent" style="FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/08/general-planning-for-load-testing_05.html" rel="bookmark" yyn8d="0" vi8w7="0"&gt;&lt;span style="font-family:arial;"&gt;General: Planning for Load Testing - Analyzing&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a title="'Permanent" style="FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/08/general-planning-for-load-testing_07.html" rel="bookmark" yyn8d="0" vi8w7="0"&gt;&lt;span style="font-family:arial;"&gt;General: Planning for Load Testing - Recommendations&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-7832841746547146463?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/7832841746547146463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=7832841746547146463' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7832841746547146463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7832841746547146463'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/08/general-load-testing-objectives.html' title='General: Load Testing Objectives'/><author><name>Hs</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_O2pYmSzohE4/RtZqfVyUZCI/AAAAAAAAApQ/qIzEPmirwrc/s72-c/General_Perspective.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-4452331997129460854</id><published>2007-08-21T20:14:00.000+08:00</published><updated>2007-08-21T20:22:10.202+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parameterization'/><category scheme='http://www.blogger.com/atom/ns#' term='Vugen'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Scripts: Parameterization</title><content type='html'>&lt;div style="text-align: justify;"&gt;  &lt;span style="font-weight: bold; font-family: arial;"&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;Point to note that parameterization may result in data dependency which the tester should be aware of and handle it appropriately.       Every load test should at least require parameterization.  Parameterization includes passing different types of data into the application to emulate the real world users performing/entering different values.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;What do clients want to achieve from &lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;parameterization&lt;/span&gt;?     &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol style="font-family: arial; text-align: justify;"&gt;&lt;li&gt;To test different data &lt;/li&gt;&lt;li&gt;Just to load/emulate the data     &lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: arial;"&gt;Parameterization requires identifying with the clients which areas required data input.  This will be useful when discussing in the &lt;a href="http://loadrunnertnt.blogspot.com/2007/07/this-is-point-that-load-tester-must.html"&gt;Application Design&lt;/a&gt;.  From there, they can prepare the data from the database which is a more efficient method.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: arial;"&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Preparing the data   &lt;/span&gt;  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Usually after walking through the application, I will request the client to prepare the date via the database and export it out as an excel file.  This will reduce the time in preparing lengthy excel or notepad files.   From there, you can manipulate the data easily in either Excel or OpenOffice.org.  After I’ve amended the files properly, I will save it as a .dat file and placed it in a shared folder for my scripts to access.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Once converted into .dat file, ensure that they have been delimited properly with the commas.  Take note that Vugen allows different delimiters in the Parameter List.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;The usual items to parameterize are username, password, dates, etc but not limited to the mentioned.  However, there are also hidden values that are stored in web pages (e.g. in the form of AJAX) or HTML codes (e.g. hard-coded hidden input) which are captured by Vugen.  As such, I will point it out to the clients and request them to prepare the data for me.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Having said that, it’s best to define what is correlation and parameterization or you may end up spending effort in the wrong track.        &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: arial; color: rgb(102, 0, 0);"&gt;Placement of the Parameter file  &lt;/span&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: rgb(102, 0, 0);"&gt; &lt;/span&gt;  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;When you created a parameter for each script, by default, it’s stored in the root of the script folder.  That is, if you save the script as test_script.usr in C:\, the parameter file will be saved in C:\test_script.  For every script that has a parameter, it will be saved in its individual script folder.  This way is good for a single script but when multiple scripts using the same parameter file is involved in the load test, it will be advisable to centralize the parameter file.      &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;What I do when I’ve prepared the data files is that I will place them in a central repository (folder) where all my scripts will access.  This is tidier and provides a way of ensuring consistency of the parameter used for all scripts.         &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: arial; color: rgb(102, 0, 0);"&gt;Why parameterize different data?&lt;/span&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;  &lt;/span&gt;    &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Why is there different effect on different data?  A simple example is uploading of different sizes of files.  If parameter A is uploading 2MB of file while parameter B is uploading 4MB of file, it will definitely generate a higher throughput on the latter parameter.  This may be a concern of the client.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Another example is querying different items in a database.  Parameter A may query and return a smaller result while parameter B returns a bigger result causing a higher throughput.        &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: arial; color: rgb(102, 0, 0);"&gt;Not the Obvious Data Dependency   &lt;/span&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: rgb(102, 0, 0);"&gt; &lt;/span&gt;  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Point to note that parameterization may result in data dependency which the tester should be aware of and handle it appropriately.       &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Examples are username and password submission:  A username login will require a valid password.  This may seemed obvious for this situation.  However, as pointed earlier about the hidden input, you will have to be cautious on it.  As Vugen records whatever is been transmitted to the server, the hidden input are recorded as well.  Therefore, you will need to check back with the application developers to find out more about the hidden values associated with each parameter value.  If possible, request them to provide a list of the values in Excel file format for you to manipulate.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: arial;"&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Which Settings are correct?&lt;/span&gt;   &lt;/span&gt;&lt;span style="font-family: arial;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Parameterization settings vary depending on your applications.  You may like to sequential it or randomize it.  Ensure the settings are correct.  Usually I defined them as unique.        &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: arial;"&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Testing the data  &lt;/span&gt; &lt;/span&gt;&lt;span style="font-family: arial;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;There is various ways to test if the parameters are correct.  You can perform the following:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol style="font-family: arial; text-align: justify;"&gt;&lt;li&gt;Replay the script in Vugen with one iteration&lt;/li&gt;&lt;li&gt;Replay the script in Vugen with three iterations.&lt;/li&gt;&lt;li&gt;Replay the script in Controller with one Vuser.&lt;/li&gt;&lt;li&gt;Replay the script in Controller with three Vusers.       &lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: arial;"&gt;These will be sufficient to test out the validity of the parameters used.     You can also defined at which point the parameter values are been used by defining the starting row to retrieve data.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Other tips &amp; tricks     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Some applications/business processes only allow one time use of the parameter.  For example, deletion.  As such, you should be aware that after each test, request the client or the application team to revert the changes for you so that there are data for you to delete.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;Related Topics&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-duplicating-files-on-fly.html"&gt;Scripts: Duplicating Files on the Fly &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-step-download-timeout.html"&gt;&lt;span style="font-family: arial;"&gt;Scripts: Step Download Timeout&lt;/span&gt; &lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-viewstate.html"&gt;Scripts: VIEWSTATE &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-auto-or-manual-correlation.html"&gt;&lt;span style="font-family: arial;"&gt;Scripts: Auto or Manual Correlation?&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-remove-think-time.html"&gt;&lt;span style="font-family: arial;"&gt;Scripts: Remove Think Time &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/sometimes-there-is-need-to-know-what-is.html"&gt;&lt;span style="font-family: arial;"&gt;Scripts: Set Debug Mode in Script&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-replay-failure-use-full.html"&gt;Scripts: Replay Failure – Use Full Extended Log!&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial; font-size: 100%;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/scripts-starting-new-transaction-during.html" rel="bookmark" title="Permanent Link to &amp;quot;Scripts: Starting a new transaction during iterations&amp;quot;"&gt;Scripts: Starting a new transaction during iterations&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-family: arial;" href="http://loadrunnertnt.blogspot.com/2007/08/scripts-any-compatibility-after.html" rel="bookmark" title="Permanent Link to &amp;quot;Scripts: Any compatibility issues after upgrading LoadRunner versions?&amp;quot;"&gt;Scripts: Any compatibility issues after upgrading LoadRunner versions?&lt;/a&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/6767212759522432339-4452331997129460854?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/4452331997129460854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=4452331997129460854' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4452331997129460854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4452331997129460854'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/08/scripts-parameterization.html' title='Scripts: Parameterization'/><author><name>Hs</name><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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-2477081375021987333</id><published>2007-08-19T13:20:00.000+08:00</published><updated>2007-08-19T13:47:10.373+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Process Management'/><category scheme='http://www.blogger.com/atom/ns#' term='ctrx_sync_on_bitmap'/><category scheme='http://www.blogger.com/atom/ns#' term='BAC'/><category scheme='http://www.blogger.com/atom/ns#' term='citrix'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><category scheme='http://www.blogger.com/atom/ns#' term='Vugen'/><category scheme='http://www.blogger.com/atom/ns#' term='Business Availability Center'/><title type='text'>Scripts: Any compatibility issues after upgrading LoadRunner versions?</title><content type='html'>&lt;div  style="text-align: justify;font-family:arial;"&gt;Personally, I encountered problem while porting the scripts recorded in 8.0 to 8.1 .  This was actually pertaining to &lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Citrix&lt;/span&gt; protocol where there is an additional parameter needed for the APIs.  This will be particular to users that are using scripts in &lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;BPM (Business Process Management)&lt;/span&gt; of &lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;BAC (Business Availability Center)&lt;/span&gt;.  Take note that BPM uses the same recording tool, &lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;VuGen&lt;/span&gt; in &lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;LoadRunner&lt;/span&gt;, however at a version lower than the currently released LoadRunner Vugen).&lt;br /&gt;&lt;br /&gt;If I didn't recall wrongly, the Citrix API &lt;b style="font-weight: bold;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ctrx_sync_on_bitmap&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&gt;, had an additional parameter, &lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;"CTRX_LAST"&lt;/span&gt; at the end of its parameter list in 8.1 as compared to 8.0.   Since then, I haven't had any problem with other protocol scripts so far.&lt;br /&gt;&lt;br /&gt;Anyway, my advice are as the followed:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Read the upgrade readme file.&lt;/li&gt;&lt;li&gt;Clone an image prior the upgrade.  In this way, you can revert back to the older version.&lt;/li&gt;&lt;li&gt;Test the previously recorded scripts from the older version.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Do you have any incompatibility issues of scripts before?  Feel free to share with us!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Related Topics&lt;/span&gt;&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-duplicating-files-on-fly.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: Duplicating Files on the Fly&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-step-download-timeout.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: Step Download Timeout &lt;/span&gt;&lt;/a&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-viewstate.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: VIEWSTATE&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-auto-or-manual-correlation.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: Auto or Manual Correlation?&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-remove-think-time.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: Remove Think Time&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/sometimes-there-is-need-to-know-what-is.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: Set Debug Mode in Script&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-replay-failure-use-full.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: Replay Failure – Use Full Extended Log!&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: arial;" href="http://loadrunnertnt.blogspot.com/2007/07/scripts-starting-new-transaction-during.html" rel="bookmark" title="Permanent Link to &amp;quot;Scripts: Starting a new transaction during iterations&amp;quot;"&gt;Scripts: Starting a new transaction during iterations&lt;/a&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/6767212759522432339-2477081375021987333?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/2477081375021987333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=2477081375021987333' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2477081375021987333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2477081375021987333'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/08/scripts-any-compatibility-after.html' title='Scripts: Any compatibility issues after upgrading LoadRunner versions?'/><author><name>Hs</name><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-4686143691028341665</id><published>2007-08-15T13:05:00.000+08:00</published><updated>2007-08-15T13:09:19.954+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='measurement'/><category scheme='http://www.blogger.com/atom/ns#' term='throughput'/><category scheme='http://www.blogger.com/atom/ns#' term='bandwidth'/><title type='text'>Understanding Network: Performance Measurements</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: arial;"&gt;Evaluating path performance means doing  three types of measurements.  &lt;/span&gt; measurements will give  you an idea of the hardware capabilities of your network, such as the  maximum capacity of your network.  &lt;span style="font-weight: bold; font-family: arial;"&gt;BandwidthThroughput&lt;/span&gt;&lt;span style="font-family: arial;"&gt; measurements will  help you discover what capacity your network provides in practice, i.e.,  how much of the maximum is actually available.  Traffic measurements  will give you an idea of how the capacity is being used. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="font-weight: bold; color: rgb(102, 0, 0); font-family: arial;"&gt;Performance Measurements &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="font-family: arial;"&gt;Two factors determine how long it takes  to send a packet or frame across a single link.  The amount of  time it takes to put the signal onto the cable is known as the transmission  time or transmission delay.  This will depend on the transmission  rate (or interface speed) and the size of the frame.  The amount  of time it takes for the signal to travel across the cable is known  as the propagations time or propagations delay.  Propagation time  is determined by the type of media used and the distance involved.   &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="font-family: arial;"&gt;Once we move to multi-hop paths, a third  consideration enters the picture – the delay introduced from processing  packets at intermediate devices such as routers and switches.   This is usually called the queuing delay since, for the most part, it  arises from the time packets spend in queues within the device.   The total delay in delivering a packet is the sum of these three delays.   Transmission and propagation delays are usually quite predictable and  stable.  Queuing delays, however, can introduce considerably variability. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="font-family: arial;"&gt;The term bandwidth is typically used  to describe the capacity of a link.   &lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="font-family: arial;"&gt;Throughput is a measure of the amount  of data that can be sent over a link in a given amount of time.   Throughput estimates, typically obtained through measurements based  on the bulk transfer of data, are usually expressed in bits per second  or packets or second.  Throughput is frequently used as an estimate  of the bandwidth of a network, but bandwidth and throughput are really  two different things.  Throughput measurement may be affected by  considerable overhead that is not included in bandwidth measurements&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255); font-family: arial;"&gt;.   Consequently, throughput is a more realistic estimator of the actual  performance you will see. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="font-family: arial;"&gt;Throughput is generally an end-to-end  measurement.  When dealing with multi-hop paths, however, the bandwidths  may vary from link to link.  The bottleneck bandwidth is the bandwidth  if the slowest link on a path, i.e., the link with the lowest bandwidth. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;The above was extracted from the book, &lt;a href="http://www.oreilly.com/catalog/nettroubletools/"&gt;"Network Troubleshooting Tools"&lt;/a&gt; by &lt;/span&gt;&lt;span style="white-space: nowrap; font-family: arial;"&gt;&lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.oreillynet.com/pub/au/694"&gt;Joseph D. Sloan&lt;/a&gt;&lt;span style="font-family: arial;"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0); font-family: arial;"&gt;Related Topics&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: arial;" href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;Content Page - General&lt;/a&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/6767212759522432339-4686143691028341665?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/4686143691028341665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=4686143691028341665' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4686143691028341665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4686143691028341665'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/08/understanding-network-performance.html' title='Understanding Network: Performance Measurements'/><author><name>Hs</name><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-6811435909295736007</id><published>2007-08-12T21:51:00.000+08:00</published><updated>2007-10-06T20:41:34.754+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TTL'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='TIME_EXCEEDED'/><category scheme='http://www.blogger.com/atom/ns#' term='traceroute'/><category scheme='http://www.blogger.com/atom/ns#' term='PORT_UNREACHABLE'/><category scheme='http://www.blogger.com/atom/ns#' term='ICMP'/><title type='text'>Understanding Network: How traceroute works?</title><content type='html'>&lt;div  style="text-align: justify;font-family:arial;"&gt;  The program was written by Van Jacobson and others.  It is based on a clever use of the Time-To-Live (TTL) field in the IP packet’s header.  The TTL field is used to limit the life of a packet.  When a router fails or is mis-configured, a routing loop or circular path may result.  The TTL field prevents packets from remaining on a network indefinitely should such a routing loop occurs.  A packet’s TTL field is decremented each time the packet crosses a router on its way through a network.  When its value reaches 0, the packet is discarded rather forwarded.  When discarded, the ICMP TIME_EXCEEDED message is sent back to the packet’s source to inform the source that the packet was discarded.  By manipulating the TTL field original packet, the program traceroute uses information from these ICMP messages to discover paths through a network. &lt;br /&gt;&lt;br /&gt;Traceroute sends a series of UDP packets with the destination address of the device you want a path to.  * By default, traceroute sends sets of three packets to discover each hop.  Traceroute sets the TTL field in the first three packets to a value of 1 so that they are discarded by the first router on the path.  When the ICMP TIME_EXCEEDED messages are returned by that router, traceroute records the source IP address of these ICMP messages.  This is the IP address of the first hop on the route to the destination. &lt;br /&gt;&lt;br /&gt;Next, three packets are sent with their TTL field set to 2.  These will be discarded by the second router on the path.  The ICMP messages returned by this router reveal the IP address of the second router on the path.  The program proceeds in this manner until a set of packets finally has a TTL value large enough so that the packets reach their destination. &lt;br /&gt;&lt;br /&gt;Typically, when the probe packets finally have an adequate TTL and reach their destination, they will be discarded and an ICMP PORT_UNREACHABLE message will be returned.  This happens when traceroute sends all its probe packets with what should be invalid port numbers, i.e., port numbers that aren’t usually used.  To do this, traceroute starts with a very large port number, typically 33434, and increments this value with each subsequent packet.  Thus, each of the three packets in a will have three different unlikely port numbers.  The receipt of ICMP PORT_UNREACHABLE messages is the signal that the end of the path has reached. &lt;br /&gt;&lt;br /&gt;Should a packet be lost, an asterisk is printed in the place of the missing time.  In some cases, all three times may be replaced with asterisks.  This can happen for several reasons.  First, the router at this hop may not return ICMP TIME_EXCEEDED messages. Second, some older routers may incorrectly forward packets even though the TTL is 0.  Third possibility is that ICMP messages may be given low priority and may not be returned in a timely fashion.  Finally, beyond some point of the path, ICMP packets may be blocked.    &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;Options     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-n: disable name resolution. &lt;br /&gt;&lt;br /&gt;-v: enable verbose option which will log source and packet sizes of the probes will be reported for each packet. &lt;br /&gt;&lt;br /&gt;-m: define maximum number of hops where default is 30 hops before halting. &lt;br /&gt;&lt;br /&gt;-p: traceroute usually receives a PORT_UNREACHABLE message when it reaches its final destination because it uses a series of unusually large port numbers as the destination ports.  Should the number actually match a port that has a running service, the PORT_UNREACHABLE message will not be returned.  This is rarely a problem since three packets are sent with different port numbers, but, if it is, the option lets you specify a different starting port so these ports can be avoided. &lt;br /&gt;&lt;br /&gt;-q: traceroute sends three probe packets for each TTL value with a timeout of three seconds for replies.  This can be changed using –q option.  &lt;br /&gt;&lt;br /&gt;-w: define the default timeout value for the probe packets.           &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The above was extracted from the book, &lt;a href="http://www.oreilly.com/catalog/nettroubletools/"&gt;"Network Troubleshooting Tools"&lt;/a&gt; by &lt;/span&gt;&lt;span style="white-space: nowrap;font-family:arial;" &gt;&lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.oreillynet.com/pub/au/694"&gt;Joseph D. Sloan&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;Related Topics&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;Content Page - General&lt;/a&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/6767212759522432339-6811435909295736007?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/6811435909295736007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=6811435909295736007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6811435909295736007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6811435909295736007'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/08/understanding-network-how-traceroute.html' title='Understanding Network: How traceroute works?'/><author><name>Hs</name><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-6767212759522432339.post-8266520926995350447</id><published>2007-08-09T11:28:00.000+08:00</published><updated>2007-08-09T11:38:56.947+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MTU'/><category scheme='http://www.blogger.com/atom/ns#' term='ping'/><category scheme='http://www.blogger.com/atom/ns#' term='TTL'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='router'/><category scheme='http://www.blogger.com/atom/ns#' term='traceroute'/><category scheme='http://www.blogger.com/atom/ns#' term='ECHO_REPLY'/><category scheme='http://www.blogger.com/atom/ns#' term='ICMP'/><category scheme='http://www.blogger.com/atom/ns#' term='ECHO_REQUEST'/><title type='text'>Understanding Network: How Ping Works?</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:arial;"&gt;One network device sends a request for a reply to another device and records the time the request was sent.  The device receiving the request sends a packet back.  When the reply is received, the round-trip time for packet propagation can be calculated.  The receipt of a reply indicates a working connection.  This elapsed time provides an indication of the length of the path.  Consistency among repeated queries gives an indication of the quality of the connection.  Thus, ping answers the two basic questions.  Do I have a connection?  How good is that connection? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Clearly, for the program to work, the networking protocol must support this query/response mechanism.  The ping program is based on Internet Control Message Protocol (ICMP), part of the TCP/IP protocol.  ICMP was designed to pass information about network performance between network devices and exchange error messages.  It supports a wide variety of message types, including query/response mechanism.       &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The normal operation of ping relies on two specific ICMP messages, ECHO_REQUEST and ECHO_REPLY, but it may response to ICMP messages other than ECO_REPLY when appropriate.  In theory, all TCP/IP-based network equipment should respond to an ECHO_REQUEST by returning the packet to the source, but this is not always the case.      &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:arial;" &gt;Interpreting Results     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;In different flavors of ping, results vary.  However, for each packet we are given the size and source of each packet, an ICMP sequence number, a Time-To-Live (TTL) counter, and the round-trip times.  Of course, the sequence number and the round trip time are the most revealing when evaluating basic connectivity.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;When each ECHO_REQUEST packet is sent, the time the packet is sent is recorded in the packet.  This is copied into the corresponding ECHO_REPLY packet by the remote host.  When an ECHO_REPLY packet is received, the elapsed time is calculated by comparing the current time to the time recorded in the packet, i.e., the time the packet was sent.  This difference, the elapsed time, is reported along with ECHO_REPLY packet is received that matches a particular sequence number, that packet is resumed lost.  The size and the variability of elapsed times will depend on the number and speed of intermediate links as well as the congestion on those links.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;It may seem that the TTL field could be used to estimate the number of hops on a path.  Unfortunately, this is problematic.  When a packet is sent, the TTL field is initialized and is subsequently decremented by each router along the path.  If it reaches zero, the packet discarded.  This imposes a finite lifetime on all packets ensuring that, in the event of a routing loop, the packet won’t remain on the network indefinitely.  Unfortunately, the TTL field may or may not be reset at the remote machine and, if reset, there is little consistency in what it is set to.  Thus, you need to know very system-specific information to use the TTL field to estimate the number of hops on a path.        &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:arial;" &gt;Options  &lt;/span&gt;&lt;span style="font-family:arial;"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="font-family: arial; text-align: justify;"&gt;&lt;li&gt;-c: allow you to specify the number of packets you want to send.     &lt;/li&gt;&lt;li&gt;-f: used to flood packets onto network.  This option is to send as fast as the receiving host can handle them which is useful for stress testing a link or to get some indication of the comparative performance of interfaces.  This is restricted to root.     &lt;/li&gt;&lt;li&gt;-l: used to flood packets onto network. It takes a count and sends out that many packets as fast as possible which eventually falls back to normal mode.  This could be used to see how the router handles a flood of packets. This is restricted to root.     &lt;/li&gt;&lt;li&gt;-i: allows the user to specify the amount of time in seconds to wait between sending consecutive packets.      &lt;/li&gt;&lt;li&gt;-n: restricts output to numeric form which is useful if you have DNS problems.   &lt;/li&gt;&lt;li&gt;-v: used for verbose output.     &lt;/li&gt;&lt;li&gt;-q, -Q: used for quiet output.     &lt;/li&gt;&lt;li&gt;-s: specifies how much data to send.  If set too small, less than 8, there won’t be space in the packet for a time-stamp.  Setting the packet size can help in diagnosing a problem caused by path Maximum Transmission Unit (MTU) settings (the largest frame size that can be sent on the path) or fragmentation problems.  (Fragmentation is dividing data among multiple frames when a single packet is too large to cross a link.  It is handled by the IP portion of the protocol stack.)  The general approach is to increase packet sizes up to the maximum allowed to see if at some point you have problems.  When this option isn’t used, ping defaults to 64 bytes, which may be too small a packet to reveal some problems.  Also, remember that ping does not count the IP or ICMP header in the specified length so that your packets will be 28 bytes larger than you specify.     &lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:arial;"&gt;You could conceivably see MTU problems with protocols, such as PPP, that use escaped characters as well.  With escaped characters, a single character may be replaced by two characters.  The expansion of escaped characters increases the size of the data frame and can cause problems with MTU restrictions or fragmentation.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="font-family: arial; text-align: justify;"&gt;&lt;li&gt;-p: allows you to specify a pattern for the data included within the packet after the timestamp.     &lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The above are not the entire list of options.  As such, be sure to consult the documentation if things don’t work as expected.        &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:arial;" &gt;Using Ping     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;To isolate problems with ping, you will want to run it repeatedly, changing your destination address so that you work your way through each intermediate device to your destination. You should begin with your loopback interface.  Use either localhost or 127.0.0.1.  Next, ping your interface by IP number. (Run ifconfig –a if in doubt.)  If either of these fails, you know that you have a problem with the host.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Next, try a host on a local network that you know is operational.  Use its IP address rather than its hostname.  If this fails, there are several possibilities.  If other hosts are able to communicate on the local network, then you likely have problems with your connection to the network.  This could be your interface, the cable to your machine, or your connection to a hub or switch.  Of course, you can’t rule out configuration errors such as media type on the adapter or a bad IP address or mask.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Next, try to reach the same host by name rather than number.  If this fails, you almost certain to have problems with name resolution.       &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Try reaching the near and far interfaces of the router.  This will turn up any basic routing problems you may have on your host or connectivity problems getting to your router.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;If all goes well here, you are ready to ping remote computers. (You will need to know the IP address of the intermediate devices to do this test.  If in doubt, use traceroute to determine the machines.)  Realize, of course, that if you start having failures at this point, the problem will likely lie beyond your router.  For example, your ICMP ECHO_REQUEST packets may reach the remote machine, but it may not have a route to your machine to use for the ICMP ECHO_REPLY packets.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;When faced with failure at this point, your response will depend on who is responsible for the machines beyond your router.  If this is still part of your network, you will want to shift your tests to machines on the other side of the router and try to work in both directions.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;If these machines are outside your responsibility or control, you will need to enlist the help of the appropriate person.  Before you contact this person, you should collect as much as information as you can.  There are three things you may want to do.  First, go back to using IP numbers if you have been using names.  As said before, if things start working, you have a name resolution problem.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Second, if you were trying to ping a device several hops beyond your router, go back to closer machines and try to zero in on exactly where you first encountered the problem.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Finally, be sure to probe form more than one machine.  While you may have a great deal of confidence in your local machine at this point, your discussion with the remote administrator may go much more smoothly if you can definitely say that you are seeing this problem from multiple machines instead of just one.          &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:arial;" &gt;Problems with Ping     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The program does not exist in isolation, but depends on the proper functioning of other elements of the network.  Ping usually depends upon ARP and DNS.  As previously mentioned, if you are using a hostname rather than an IP address as destination, the name of the host will have to be resolved before ping can send any packets.  You can bypass DNS by using IP address.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;It is also necessary to discover the host’s link level address for each host along the path to the destination.  Although this is rarely a problem, should ARP resolution fail, then ping will fail.  You could avoid this problem, in part; by using start ARP entries to ensure that the ARP table is correct.  A more common problem is that the time reported by ping for the first packet sent will often be distorted since it reflects both transit times and ARP resolution times.  On some networks, the first packet will often be lost.  You can avoid this problem by sending more than one packet and ignoring the results for the first packet.                &lt;br /&gt;&lt;br /&gt;The above was extracted from the book, &lt;a href="http://www.oreilly.com/catalog/nettroubletools/"&gt;"Network Troubleshooting Tools"&lt;/a&gt; by &lt;/span&gt;&lt;span style="white-space: nowrap; font-family: arial;"&gt;&lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.oreillynet.com/pub/au/694"&gt;Joseph D. Sloan&lt;/a&gt;&lt;span style="font-family: arial;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;Related Topics&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;a style="font-family: arial;" href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;Content Page - General&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&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/6767212759522432339-8266520926995350447?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/8266520926995350447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=8266520926995350447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/8266520926995350447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/8266520926995350447'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/08/understanding-network-how-ping-works.html' title='Understanding Network: How Ping Works?'/><author><name>Hs</name><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-6767212759522432339.post-153094472643040669</id><published>2007-08-07T09:58:00.000+08:00</published><updated>2007-08-07T10:03:30.487+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Planning'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Load Testing'/><title type='text'>General: Planning for Load Testing - Recommendations</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: arial;"&gt;After identifying trends, it’s time to propose an action plan, proposal or recommendation to your client.      &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;This maybe just telling the client that “Dear client, your application is running at this rate, I would recommend to re-look the SLAs with your users.” or “Dear client, the server housing the application is encountering processor contention.  I would like to recommend you to distribute the load across with a new server (or processor).” This is of course tied to the initial requirements and the limitations the clients are bounded in.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;At this point if they have follow up actions to improve the system, do keep a record of the last changed parameter on the server.  This will be useful for you to track the changes over time on their application and determined if the changed had enhanced the application.   Unless you are part of the server team, you might not be involved in the tuning process.   &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Once the changes have been made, conduct a load test to verify the changes.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: arial;" align="justify"&gt;&lt;strong&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Related Topics&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;a style="font-family: arial;" href="http://loadrunnertnt.blogspot.com/2007/07/after-writing-couple-of-posts-for-past.html"&gt;General: Planning for Load Testing&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: arial;" href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html" rel="bookmark" title="Permanent Link to &amp;quot;Content Page - General&amp;quot;"&gt;Content Page - General&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-153094472643040669?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/153094472643040669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=153094472643040669' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/153094472643040669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/153094472643040669'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/08/general-planning-for-load-testing_07.html' title='General: Planning for Load Testing - Recommendations'/><author><name>Hs</name><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-545820281160885350</id><published>2007-08-05T12:37:00.000+08:00</published><updated>2007-08-05T13:03:12.641+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Planning'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Load Testing'/><title type='text'>General: Planning for Load Testing - Analyzing</title><content type='html'>&lt;div style="text-align: justify; font-family: arial;"&gt;This is the stage where it intertwined with the monitoring.  At this stage, similarly to &lt;a href="http://loadrunnertnt.blogspot.com/2007/08/general-planning-for-load-testing.html"&gt;Monitoring&lt;/a&gt;, it is important to have a sound knowledge of the server or database internal workings.  With that you will know what to further investigate and what the graph represents.    &lt;br /&gt;&lt;br /&gt;A graph looks great with the lines flying up and down but that is information.  You will need to have a lot of experience to translate that information to useful knowledge.  This will be done with merging and correlating of the load generated against the utilization of resources.  You must be able to “see” the trend and identify possible bottlenecks.&lt;br /&gt;&lt;br /&gt;I would recommend acquiring lots of information of the server (either the software or hardware perspective) you are monitoring as this is required for your analyzing.  You can refer a previous consolidated article, &lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html" rel="bookmark" title="Permanent Link to &amp;quot;Content Page - General&amp;quot;"&gt;"Content Page - General"&lt;/a&gt; which provides a proportion of basic information that will be useful to you in facilitating the analyzing.&lt;br /&gt;&lt;br /&gt;Other than the knowledge, you will have to refer back to the initial requirements set down by your clients.  They can comprised from a top-down interest/approach such as transaction response time to a bottom-up technical interest/approach such as the utilization of the server/network resources.   In any case, show them what you've gathered in their best interest.&lt;br /&gt;&lt;br /&gt;From there, you will know what to look out for in the graphs, such as amount of users that were actually generated and if the application was able to support the defined transaction response time.  Or the utilization across all servers met (either under-utilized, over-utilized or unevenly balanced).&lt;br /&gt;&lt;br /&gt;Some combination of graphs that will be useful in analyzing are as followed (but not limited to the list):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;Vuser - System Resource (Windows or Unix) or any other resource graphs&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Useful in determining/describing the capacity that the resource (server) can work with the generated load.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;Vuser - Transaction Response Time&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Useful in determining/describing the transaction response time over time when vusers are generated into the application.  This will determine the point or amount of users that the server can handle with respect to the defined transaction response time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;Vusers - Transactions Per Seconds&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Useful in determining/describing the amount of transactions that were generated with respect to the amount of users generated.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;Vusers - Errors&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Useful in determining/describing the breaking point of the application where transactions start to fail (consistently) with respect to the amount of users generated.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;Vusers - Errors - System Resource&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Useful in determining/describing if the resources (servers) are experiencing difficulties handling the generated load with respect to the amount of errors.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;Transaction Response Time (Percentile)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Useful in determining/describing the overall performance of the transactions in terms of percentage.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0); font-weight: bold;"&gt;System Resource - System Resource&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Useful in determining if the resources (servers) have been properly distributed in load.  Usually, I will also ask my clients to verify the load balancer logs and the application logs on the activities.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Please feel free to add or comment if you have a good combination of graphs!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: arial;" align="justify"&gt;&lt;strong&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Related Topics&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div style="font-family: arial;" align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/after-writing-couple-of-posts-for-past.html"&gt;General: Planning for Load Testing&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html" rel="bookmark" title="Permanent Link to &amp;quot;Content Page - General&amp;quot;"&gt;Content Page - General&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-monitors.html" rel="bookmark" title="Permanent Link to &amp;quot;Content Page - Monitors&amp;quot;"&gt;Content Page - Monitors&lt;/a&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/6767212759522432339-545820281160885350?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/545820281160885350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=545820281160885350' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/545820281160885350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/545820281160885350'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/08/general-planning-for-load-testing_05.html' title='General: Planning for Load Testing - Analyzing'/><author><name>Hs</name><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-6767212759522432339.post-4569756364963558539</id><published>2007-08-03T10:01:00.000+08:00</published><updated>2007-08-03T10:03:32.439+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Planning'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Load Testing'/><title type='text'>General: Planning for Load Testing - Monitoring</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: arial;"&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;I separated the Monitoring from the &lt;a href="http://loadrunnertnt.blogspot.com/2007/07/general-planning-for-load-test-monitor.html"&gt;Monitor Setup&lt;/a&gt; because I feel that the setup is prior the load test runs.  In this stage, what we are concerned are the counters and metrics to monitor.  If you are starting off without any knowledge or history of the system such as performance issues, it’s advisable to monitor the 4 main categories, namely Processor, Memory, Disk and Network.  Once the load test completes, you should have an overview of the application performance.  From there, go to a 2nd level of monitoring till the nth level until you are satisfied with the investigation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;For example, on the 1st load test, you observed that the page faults are occurring at a level higher than the accepted threshold indicating memory problems.  From there, you may want to investigate further on the cause of the page fault such as, if it is a hard page fault or soft page fault.  Therefore, you may like to monitor the Transition Faults, Pages Input and Pages Output to answer your doubts.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Of course, to know what to investigate further requires knowledge of the application, server, network, and what the counters and metrics mean.   This is also assisted if you have a good understanding of the internals working of the component.&lt;/span&gt;&lt;br /&gt;&lt;span class="" style="display: block;" id="formatbar_JustifyFull" title="Justify Full" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 13);ButtonMouseDown(this);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="font-family: arial;" align="justify"&gt;&lt;strong&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Related Topics&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div style="font-family: arial;" align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/after-writing-couple-of-posts-for-past.html"&gt;General: Planning for Load Testing&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: arial;" align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;General - Content Page&lt;/a&gt;&lt;/div&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-monitors.html" rel="bookmark" title="Permanent Link to &amp;quot;Content Page - Monitors&amp;quot;"&gt;Content Page - Monitors&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="" style="display: block;" id="formatbar_JustifyFull" title="Justify Full" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 13);ButtonMouseDown(this);"&gt;&lt;br /&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/6767212759522432339-4569756364963558539?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/4569756364963558539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=4569756364963558539' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4569756364963558539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4569756364963558539'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/08/general-planning-for-load-testing.html' title='General: Planning for Load Testing - Monitoring'/><author><name>Hs</name><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-5624437376498007484</id><published>2007-08-01T13:33:00.000+08:00</published><updated>2007-08-01T13:42:24.262+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='available bytes'/><category scheme='http://www.blogger.com/atom/ns#' term='committed bytes'/><category scheme='http://www.blogger.com/atom/ns#' term='page'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='RAM'/><title type='text'>Monitors: Memory Glossary</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: arial;"&gt;This is a compilation of memory-related counters.  Do feel free to revert or comment should you have additional information on the counter.&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Available Bytes&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Process Working Set growth becomes constrained when Available Bytes &lt;&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Pool Nonpaged Bytes&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;The system’s non-pageable (fixed) memory.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Pool Paged Resident Bytes&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;The OS‘s pageable memory that is currently resident in RAM.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;System Code Resident Bytes&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;[Coming soon]&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;System Driver Resident Bytes&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Total System Resident Bytes = Pool Nonpaged Bytes + Pool Paged Resident Bytes + System Code Resident Bytes + System Driver Resident Bytes + System Cache Resident Bytes.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;System Cache Resident Bytes&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;The current amount of RAM used for the file cache.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Page Faults/sec&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Can be a grossly misleading number.  Page Faults/sec = “soft” Transition Faults + application file Cache Faults + demand zero faults + hard page faults.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Page Reads/sec&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;This counter measures the number of requests to the I/O manager to retrieve pages of memory from the disk. Despite the name of this counter, it measures requests, not pages; a request can be for more than a single page.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Equivalent to hard page fault rate.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Page Writes/sec&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;This counter measures the number of requests to the I/O manager to write pages of memory to the disk.  Again, each request can be for more than a single page.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Updated “dirty” pages must be flushed to disk before they can be reused by a different application. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Pages Input/sec&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;This counter measures the number of pages read from the disk per second.  Combing this counter with the Page Reads/sec counter can tell you how many pages are retrieved per request.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Calculate the bulk paging rate: Pages Input/sec / Pages Read/sec&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Pages Output/sec&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;This counter measures the number of pages written to the disk per second.  Combining this counter with the Page Writes/sec counter can tell you how many pages are written per request.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Try to limit Pages Input/sec + Pages Output/sec to 10 – 20% of total disk bandwidth, if possible.  Disk bandwidth absorbed for paging operations is unavailable for application processes.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Pages/sec&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;This counter measures the total number of pages read and written to the disk.  This counter represents the sum of Pages Input/sec and Pages Output/sec.  Using this counter along with the Disk Bytes/sec counter from the Physical Disk Object, you can determine what portion of the data transferred to the disk is due to memory access, and what portion is due to file system access. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Committed Bytes&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Represents virtual memory pages backed in either RAM or secondary storage (paging files).  Calculate a virtual: real memory contention index = Committed Bytes / Total RAM.  Consider adding RAM when this ration starts to approach 2:1.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Commit Limit&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Maximum number of virtual memory pages that can be allocated without extending the paging file(s).&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;% Committed Bytes in Used&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Committed Bytes / Commit Limit.  Consider adding RAM when consistently &gt; 70% on a server.  &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Cache Bytes&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Actually, the system address space working set, but includes the file cache.  The sum of Pool Paged Resident Bytes + System Code Resident Bytes + System Driver Resident Bytes + System Cache Resident Bytes.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Transition Faults/sec&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;“Soft” page faults resolved without having to access the disk.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Cache Faults/sec&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Normal application file I/O operations are diverted to use the paging subsystem.  Each file cache fault leads to a physical disk read I/O operation.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Demand Zero Faults/sec&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;The rate at which applications require brand new pages.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Write Copies/sec&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Private Copy on Write pages from shared DLLs.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(102, 0, 0);"&gt;Pool Paged Bytes&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Calculate a virtual: real memory contention index = Pool Paged Resident Bytes / Pool Paged Bytes.  Compared to Page Reads/sec to anticipate real memory bottlenecks.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: arial; color: rgb(102, 0, 0);"&gt;Related Topics&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;&lt;span style="font-family: arial;"&gt;Content Page - General&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-family: arial;" href="http://loadrunnertnt.blogspot.com/2007/05/content-page-monitors.html" rel="bookmark" title="Permanent Link to &amp;quot;Content Page - Monitors&amp;quot;"&gt;Content Page - Monitors&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;/span&gt;&lt;a style="font-family: arial;" href="http://loadrunnertnt.blogspot.com/2007/05/monitors-what-metricscounters-to.html"&gt;Monitors: What metrics/counters to monitor for Windows System Resource? &lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/understanding-memory-virtual-addressing.html"&gt;&lt;span style="font-family: arial;"&gt;Virtual Addressing&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-page-fault.html"&gt;&lt;span style="font-family: arial;"&gt;Page Fault Resolution &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/general-understanding-memory-page-fault.html"&gt;&lt;span style="font-family: arial;"&gt;Page Fault Resolution (Illustration)&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory_06.html"&gt;&lt;span style="font-family: arial;"&gt;Performance Concerns &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-virtual_06.html"&gt;&lt;span style="font-family: arial;"&gt;Virtual Memory Shortage Alerts &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-available.html"&gt;&lt;span style="font-family: arial;"&gt;Available Bytes &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-lru.html"&gt;&lt;span style="font-family: arial;"&gt;LRU &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-system.html"&gt;&lt;span style="font-family: arial;"&gt;System Working Set &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-detecting.html"&gt;&lt;span style="font-family: arial;"&gt;Detecting Memory Leaks&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-measuring.html"&gt;&lt;span style="font-family: arial;"&gt;Measuring Memory Utilization&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-5624437376498007484?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/5624437376498007484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=5624437376498007484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5624437376498007484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5624437376498007484'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/08/monitors-memory-glossary.html' title='Monitors: Memory Glossary'/><author><name>Hs</name><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-6767212759522432339.post-6535007206954873642</id><published>2007-07-30T22:25:00.000+08:00</published><updated>2007-07-30T22:36:35.161+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Planning'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Load Testing'/><title type='text'>General: Planning for Load Testing - Monitor Setup</title><content type='html'>&lt;span style="font-family:arial;"&gt;The setting up of monitors poses some challenge and I advised you to cater one or two days to implement the monitors.  LoadRunner features agentless monitoring (which other products do too).  However, in order to achieve such feature it needs the SUT (System Under Test) to be configured properly.        &lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This “configure properly” becomes sort of “out-sourced” to the system admin team and if problem arises, the blame of product issue will be reduced.  Depending on the type of monitors you are implementing, you will require time and effort to clear ports and justify your case to the security or the network team before the actual implementation is possible.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This is where the initial gathering of information is important in &lt;a href="http://loadrunnertnt.blogspot.com/2007/07/general-planning-for-load-testing.html"&gt;Soliciting Requirements&lt;/a&gt;.  With the architecture diagram, you can relate to the security or network team on the team of installation of agents or opening of ports.  But of course this will come under scrutiny if you do not provide sufficient convincing information to them.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This is also the part of load test where you start to work with even more people from other teams, such as, system, network, database, security or whatever titles they are given.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Also, take note that for different applications or servers, configuration has to be done before the tool can collect monitoring information from them.  Examples like &lt;span style="color: rgb(51, 51, 255);"&gt;perfmon&lt;/span&gt; for Windows, &lt;span style="color: rgb(51, 51, 255);"&gt;rstatd&lt;/span&gt; for UNIX, &lt;span style="color: rgb(51, 51, 255);"&gt;JMX&lt;/span&gt; or &lt;span style="color: rgb(51, 51, 255);"&gt;JMS &lt;/span&gt;for WebLogic.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Point to take note at this stage, every organization has different requirements in their infrastructure and for this, you need to respect that and be sensitive to it.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div  align="justify" style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Related Topics&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div style="font-family: arial;" align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/after-writing-couple-of-posts-for-past.html"&gt;General: Planning for Load Testing&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: arial;" align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;General - Content Page&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: arial;" align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-monitors.html" rel="bookmark" title="Permanent Link to &amp;quot;Content Page - Monitors&amp;quot;"&gt;Content Page - Monitors&lt;/a&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/6767212759522432339-6535007206954873642?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/6535007206954873642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=6535007206954873642' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6535007206954873642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6535007206954873642'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/07/general-planning-for-load-test-monitor.html' title='General: Planning for Load Testing - Monitor Setup'/><author><name>Hs</name><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-5801225217712983540</id><published>2007-07-25T10:04:00.000+08:00</published><updated>2007-07-25T10:20:49.164+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Planning'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Load Testing'/><title type='text'>General: Planning for Load Testing - Protocols</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Load testing is about capturing the traffic sent by the application to the server. And using the captured traffic, the tool scripts out APIs to generate the traffic, which is been emulated during replay and sent back to the server. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Through understanding the &lt;/span&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/this-is-point-that-load-tester-must.html"&gt;&lt;span style="font-family:arial;"&gt;Application Design&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;, you should be able to determine the type of protocol that is been communicated. As I pointed in previous &lt;/span&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-protocols.html"&gt;&lt;span style="font-family:arial;"&gt;articles&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; , LoadRunner focuses a lot on protocol and therefore the need to know this information is critical. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;To be able to read the logs and find meaningful information out of it, I would recommend you to acquire as much knowledge as possible. For example, HTTP, the replay log merely displays the transmission of the HTTP requests in text. From there, you will know information such as authentication headers or the body that was sent. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I cannot emphasize again that do not associate functional testing as load testing. Therefore, if you are from the functional testing background, please be sure to acquire more knowledge on the protocol that you are working on before proceeding.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;color:#660000;"&gt;Related Topics&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/after-writing-couple-of-posts-for-past.html"&gt;&lt;span style="font-family:arial;"&gt;General: Planning for Load Testing&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;&lt;span style="font-family:arial;"&gt;General - Content Page&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-protocols.html"&gt;&lt;span style="font-family:arial;"&gt;General - Protocols&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&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/6767212759522432339-5801225217712983540?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/5801225217712983540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=5801225217712983540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5801225217712983540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5801225217712983540'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/07/general-planning-for-load-testing_25.html' title='General: Planning for Load Testing - Protocols'/><author><name>Hs</name><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-6767212759522432339.post-5322256151252977843</id><published>2007-07-23T09:26:00.001+08:00</published><updated>2008-12-09T16:50:22.556+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtual addressing'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='RAM'/><title type='text'>Understanding Memory: Virtual Addressing (Illustration)</title><content type='html'>&lt;span style="font-family:arial;"&gt;The following illustration explains the process of virtual addressing when a program is loaded into memory. For detailed explanation, refer to &lt;/span&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/07/understanding-memory-virtual-addressing.html" rel="bookmark" l957c="0" ogvir="0"&gt;&lt;span style="font-family:arial;"&gt;"Understanding Memory: Virtual Addressing"&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5090198142561431986" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 420px; CURSOR: hand; HEIGHT: 297px; TEXT-ALIGN: center" height="307" alt="" src="http://2.bp.blogspot.com/_O2pYmSzohE4/RqQEPdu6MbI/AAAAAAAAADU/wDXdCruRNnU/s400/General_Virtual_Addressing.jpg" width="416" border="0" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Executable program image file loads into memory.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Logical memory address range of the application is divided into fixed-size chunks caled pages.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Page mapping in Virtual Memory is dynamic.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Frequently referenced logical addresses tend to reside in physical memory.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Infrequently referenced pages are relegated to paging files on secondary disk storage.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;color:#660000;"&gt;Related Topics&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;&lt;span style="font-family:arial;"&gt;Content Page - General&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/understanding-memory-virtual-addressing.html"&gt;&lt;span style="font-family:arial;"&gt;Virtual Addressing&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-page-fault.html"&gt;&lt;span style="font-family:arial;"&gt;Page Fault Resolution &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/general-understanding-memory-page-fault.html"&gt;&lt;span style="font-family:arial;"&gt;Page Fault Resolution (Illustration)&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory_06.html"&gt;&lt;span style="font-family:arial;"&gt;Performance Concerns &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-virtual_06.html"&gt;&lt;span style="font-family:arial;"&gt;Virtual Memory Shortage Alerts &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-available.html"&gt;&lt;span style="font-family:arial;"&gt;Available Bytes &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-lru.html"&gt;&lt;span style="font-family:arial;"&gt;LRU &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-system.html"&gt;&lt;span style="font-family:arial;"&gt;System Working Set &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-detecting.html"&gt;&lt;span style="font-family:arial;"&gt;Detecting Memory Leaks&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-measuring.html"&gt;&lt;span style="font-family:arial;"&gt;Measuring Memory Utilization&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-5322256151252977843?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/5322256151252977843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=5322256151252977843' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5322256151252977843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5322256151252977843'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/07/understanding-memory-virtual-addressing_23.html' title='Understanding Memory: Virtual Addressing (Illustration)'/><author><name>Hs</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_O2pYmSzohE4/RqQEPdu6MbI/AAAAAAAAADU/wDXdCruRNnU/s72-c/General_Virtual_Addressing.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-7206755713788351087</id><published>2007-07-22T17:37:00.000+08:00</published><updated>2007-07-22T17:40:45.144+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Planning'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Load Testing'/><title type='text'>General: Planning for Load Testing - Application Design</title><content type='html'>&lt;div style="text-align: justify;"&gt;  &lt;span style="font-family:arial;"&gt;This is the point that the load tester must understand how the application works.  When we refer to how it works, it’s not about just clicks on links and buttons, or the calendar will pop up.  It goes deeper such as the following but not limited to the list:   &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li style="font-family: arial;"&gt;What is      the type of communication between the client and server?&lt;/li&gt;&lt;li style="font-family: arial;"&gt;Is the      application client-side?&lt;/li&gt;&lt;li style="font-family: arial;"&gt;Is there      client-side activities involved in the entire application?&lt;/li&gt;&lt;li style="font-family: arial;"&gt;What is      the authentication mechanism?&lt;br /&gt;&lt;/li&gt;&lt;li style="font-family: arial;"&gt;Does the      application allow multiple login of a single user?&lt;/li&gt;&lt;li style="font-family: arial;"&gt;How does      the application maintain a session?&lt;br /&gt;&lt;/li&gt;&lt;li style="font-family: arial;"&gt;How does      the load balancer distribution the load?&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;What are      the parameters been sent to the server?        &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Basically, this &lt;/span&gt;&lt;span style="font-family:arial;"&gt;is actually gathering the technical details of the application unlike the initial Soliciting Requirements which comprises of the “big picture” information.   &lt;br /&gt;&lt;br /&gt;Without knowing how it works and you start clicking the links and buttons, you are bound for a failing load test at the script level.   Also if you were intending to seek assistance from the paid support, chances is that they will ask you if you know the application well enough such as protocol used, client-side activities, and so on so forth.   &lt;br /&gt;&lt;br /&gt;This information should be consulted with the application developer as he/she is the one that developed it and will be the most knowledgeable amount the performance test team.   &lt;br /&gt;&lt;br /&gt;However, take note that you may bump into an inexperienced developer of the application, which might end up providing wrong information and wasting everyone’s time and effort.  My advice is to be sure of the technology you are working with before approaching them.   &lt;br /&gt;&lt;br /&gt;Another thing to note, from a consultant or vendor company perspective, I do recognize that the load tester may have trouble conveying such messages or questions to your client’s development team.  The time for them to answer your questions might not be as fruitful as writing another two modules to them.  But bare minimum is that you must be able to translate and convince them the importance for the need to know the application design.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:arial;" &gt;Related Topics&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/after-writing-couple-of-posts-for-past.html"&gt;&lt;span style="font-family:arial;"&gt;General: Planning for Load Testing&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;&lt;span style="font-family:arial;"&gt;General - Content Page&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&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/6767212759522432339-7206755713788351087?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/7206755713788351087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=7206755713788351087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7206755713788351087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7206755713788351087'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/07/this-is-point-that-load-tester-must.html' title='General: Planning for Load Testing - Application Design'/><author><name>Hs</name><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-6767212759522432339.post-597428810153235474</id><published>2007-07-21T00:53:00.000+08:00</published><updated>2007-07-21T00:59:03.889+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Planning'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Load Testing'/><title type='text'>General: Planning for Load Testing - Soliciting Requirements</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:arial;"&gt;Prior to this stage, I always give a “sales talk” of what we do for a living and also to get them excited (if they are not).  Gathering and soliciting accurate requirements will save you lots of unnecessary work.       &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Be sure to get hold of the requirements to monitor such as acceptable Transaction Response Time or server utilization.  Clients need to be clear of what they want before you can proceed to achieve (unless is you who proposes the benchmark).  For example, if CIO wants the response time for a search to be fewer 10 seconds will be a good metric to achieve.  This is also the exit criteria as per se for the load test project.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;They may also like to know the utilization of the servers under load and not really concerned with the response time.  Usually, these are applications that are already problematic and it’s what they are hiring you to dig the cause of the bottleneck.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Always get an overview of the architecture which includes all components that inhabitant it.  You can leave out the number of switches or routers if they do not provide much usage except routing and separating networks.  It is important to get information like number of servers and what is housed in it, load balancers, firewall and databases. This will aid you in discussion and knowing what machines to be monitored.       &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Assist the clients in understanding which business process may raise performance issues or they see it’s criticality in the business competitive edge.  With this, it can translate into the scripts that will be used in the load test.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:arial;" &gt;Related Topics&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/after-writing-couple-of-posts-for-past.html"&gt;&lt;span style="font-family:arial;"&gt;General: Planning for Load Testing&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;&lt;span style="font-family:arial;"&gt;General - Content Page&lt;/span&gt;&lt;/a&gt;&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/6767212759522432339-597428810153235474?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/597428810153235474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=597428810153235474' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/597428810153235474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/597428810153235474'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/07/general-planning-for-load-testing.html' title='General: Planning for Load Testing - Soliciting Requirements'/><author><name>Hs</name><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-3343710430859392098</id><published>2007-07-19T11:01:00.000+08:00</published><updated>2007-08-07T10:05:06.958+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Planning'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Load Testing'/><title type='text'>General: Planning for Load Testing</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;After writing a couple of posts for the past few months, I would like to touch on the basic understanding of using LoadRunner in Performance Testing. This will provide an overview how you should facilitate the entire load testing process and be aware of the requirements that surfaces. If course, this is not limited to other load testing tools because the concepts are the same.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;There are few areas to be aware or trained in order to have the load test proceed with minimal difficulties. I’ve broken them down into the following: namely, soliciting requirements, application design, protocols, monitor setup, monitoring, analyzing and recommendations.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/general-planning-for-load-testing.html"&gt;Soliciting Requirements&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/this-is-point-that-load-tester-must.html"&gt;Application Design&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/general-planning-for-load-testing_25.html"&gt;Protocols&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/general-planning-for-load-test-monitor.html"&gt;Monitor Setup&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/08/general-planning-for-load-testing.html"&gt;Monitoring&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/08/general-planning-for-load-testing_05.html"&gt;Analyzing&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/08/general-planning-for-load-testing_07.html"&gt;Recommendations&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color: rgb(102, 0, 0);font-family:arial;" &gt;&lt;strong&gt;Related Topics&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;General - Content Page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&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/6767212759522432339-3343710430859392098?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/3343710430859392098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=3343710430859392098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3343710430859392098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3343710430859392098'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/07/after-writing-couple-of-posts-for-past.html' title='General: Planning for Load Testing'/><author><name>Hs</name><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-6767212759522432339.post-1403450002613198352</id><published>2007-07-15T11:55:00.000+08:00</published><updated>2007-07-17T20:55:57.216+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtual addressing'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='RAM'/><title type='text'>Understanding Memory: Virtual Addressing</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:arial;"&gt;Virtual memory is a feature supported by most advanced processors.  Hardware support for virtual memory includes hardware mechanism to map from logical (virtual) memory address that application programs reference to physical (real) memory hardware addresses.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;When an executable program’s image file is first loaded into memory, the logical memory address range of the application is divided into fixed-size chunks called pages.  These logical pages are them mapped to similar-sized physical pages that are resident in real memory.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This mapping is dynamic in that frequently referenced logical addresses tend to reside in physical memory (also know s RAM, real memory, or main memory), while infrequently referenced pages are relegated to paging files on secondary disk storage.  The active subset of virtual memory pages associated with a single process’s address space currently resident in RAM is known as the process’s working set, because they are the active pages referenced by the programs as it executes.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Virtual addressing is designed to be transparent to application programs, allowing them to be written without regard to specific real memory limitations of this or that computer.  Virtual addressing even makes it possible for an executing program to reference an address space that is larger than the amount of physical memory installed on a particular computer.  Virtual addressing allows a programmer to exploit what looks like a virtually infinite-sized computer memory where each individual process can address up to 4 GB of virtual addresses.  As of the above, performance issues still exists when the OS attempts to reference more memory locations than can actually fit inside real memory.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Virtual memory system works well because executing programs seldom require all the associated code and data areas they allocate to be resident in physical memory concurrently in order to run. With virtual memory, only the active pages associated with a program’s current working set remain resident in real memory.  On the other hand, virtual memory systems can run very poorly when the working sets of active processes greatly exceed the amount of physical RAM that the computer contains.  It is important to understand the logical and physical memory usage to diagnose performance problems arising from real memory being over-committed.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;The above was extracted from the book, &lt;a href="http://www.oreilly.com/catalog/w2kperf/toc.html"&gt;Windows 2000 Performance Guide by Mark Friedman &amp; Odysseas Pentakalos&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;Related Topics&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;&lt;span style="font-family:arial;"&gt;Content Page - General&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-page-fault.html"&gt;Page Fault Resolution &lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/general-understanding-memory-page-fault.html"&gt;Page Fault Resolution (Illustration)&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory_06.html"&gt;Performance Concerns &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-virtual_06.html"&gt;Virtual Memory Shortage Alerts&lt;br /&gt;&lt;/a&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-available.html"&gt;Available Bytes &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-lru.html"&gt;LRU &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-system.html"&gt;System Working Set &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-detecting.html"&gt;Detecting Memory Leaks&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-measuring.html"&gt;&lt;span style="font-family:arial;"&gt;Measuring Memory Utilization&lt;/span&gt;&lt;/a&gt;&lt;span class="" style="display: block;" id="formatbar_JustifyFull" title="Justify Full" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 13);ButtonMouseDown(this);"&gt;&lt;br /&gt;&lt;br /&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/6767212759522432339-1403450002613198352?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/1403450002613198352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=1403450002613198352' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/1403450002613198352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/1403450002613198352'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/07/understanding-memory-virtual-addressing.html' title='Understanding Memory: Virtual Addressing'/><author><name>Hs</name><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-6767212759522432339.post-1905783675329498407</id><published>2007-07-15T11:15:00.001+08:00</published><updated>2008-12-09T16:50:22.978+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='page fault resolution'/><category scheme='http://www.blogger.com/atom/ns#' term='page faults'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='illustration'/><title type='text'>General: Understanding Memory - Page Fault Resolution (Illustration)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:arial;"&gt;Illustration of Page Fault Resolution.  To better understand how Page Fault occurs with respect to the illustration, refer to article, &lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;"&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-page-fault.html" rel="bookmark" title="Permanent Link to &amp;quot;General: Understanding Memory - Page Fault Resolution&amp;quot;"&gt;General: Understanding Memory - Page Fault Resolution&lt;/a&gt;".  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Fig 1: Page Fault Resolution&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_O2pYmSzohE4/RpmRWxawNLI/AAAAAAAAADM/8GUy6Y2VORE/s1600-h/Page_Fault_Resolution.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 408px; height: 388px;" src="http://3.bp.blogspot.com/_O2pYmSzohE4/RpmRWxawNLI/AAAAAAAAADM/8GUy6Y2VORE/s400/Page_Fault_Resolution.jpg" alt="Page Fault Resolution, page fault, memory" id="BLOGGER_PHOTO_ID_5087257074500383922" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;The sequence of Page Fault resolution as follows.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol style="font-family: arial;"&gt;&lt;li&gt;Thread attempts to reference page in memory.&lt;/li&gt;&lt;li&gt;Page not resident in real memory thus not found.&lt;/li&gt;&lt;li&gt;Hardware interrupt occur to resolve page fault.&lt;/li&gt;&lt;li&gt;ISR gains control to validate the referenced address.&lt;/li&gt;&lt;li&gt;Locate page on secondary storage.&lt;/li&gt;&lt;li&gt;Copy page into available free page in real memory.&lt;/li&gt;&lt;li&gt;Resume thread execution cycle.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The time taken for Page Fault Resolution thus equivalent from Step [3] to [6].    Having mentioned that, if memory is the performance bottleneck with the number of Page Faults increases over time, the application/system may experience delay due to the time needed to perform Page Fault Resolution pointed in Step [3] to [6].&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-family:arial;" &gt;Related Topics&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-page-fault.html"&gt;Page Fault Resolution &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory_06.html"&gt;Performance Concerns &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-virtual_06.html"&gt;Virtual Memory Shortage Alerts&lt;br /&gt;&lt;/a&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-available.html"&gt;Available Bytes &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-lru.html"&gt;LRU &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-system.html"&gt;System Working Set &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-detecting.html"&gt;Detecting Memory Leaks&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-measuring.html"&gt;&lt;span style="font-family:arial;"&gt;Measuring Memory Utilization&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-1905783675329498407?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/1905783675329498407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=1905783675329498407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/1905783675329498407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/1905783675329498407'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/07/general-understanding-memory-page-fault.html' title='General: Understanding Memory - Page Fault Resolution (Illustration)'/><author><name>Hs</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_O2pYmSzohE4/RpmRWxawNLI/AAAAAAAAADM/8GUy6Y2VORE/s72-c/Page_Fault_Resolution.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-2207676447401670481</id><published>2007-07-14T23:18:00.000+08:00</published><updated>2007-07-14T23:21:56.114+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DNS'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='latency'/><category scheme='http://www.blogger.com/atom/ns#' term='bottleneck'/><category scheme='http://www.blogger.com/atom/ns#' term='bandwidth'/><title type='text'>Basics: Network Bottlenecks</title><content type='html'>&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;At the network level, many things can affect performance.&lt;span style=""&gt;  &lt;/span&gt;The bandwidth (the amount of data that can be carried by the network) tends to be the first culprit checked.&lt;span style=""&gt;  &lt;/span&gt;Assuming you have determined that bad performance is attributable to the network component of an application, there is more likely cause of bad network performance than network bandwidth.&lt;span style=""&gt;  &lt;/span&gt;The most likely cause of bad network performance is the application itself and how it is handling distributed data and functionality.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;br /&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;The overall speed of a particular network connection is limited by the slowest link in the connection chain and the length of the chain.&lt;span style=""&gt;  &lt;/span&gt;Identifying the slowest link is difficult and may not even be consistent: it can vary at different times of the day or for different communication paths.&lt;span style=""&gt;  &lt;/span&gt;A network communication path lead from an application through a TCP/IP stack (which adds various layers of headers, possibly encrypting and compressing data as well), then through the hardware interface, through a modem, over a phone line, through another modem, over to a service provider’s router, through many heavily congested data lines of various carrying capacities and multiple routers with different maximum throughputs and configurations, to a machine at the other end with its own hard interface, TCP/IP stack and application. A typical web download route is just like this.&lt;span style=""&gt;  &lt;/span&gt;In addition, there are dropped packets, acknowledgements, retries, bus contention, and so on.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;Because so many possibilities causes of bad network performance are external to an application, one option you can consider including in an application is a network speed testing facility that reports to the user.&lt;span style=""&gt;  &lt;/span&gt;This should test the speed of data transfer from the machine to various destinations: to itself, to another machine on the local network, to the Internet Service Provider, to the target server across the network, and to any other destinations appropriate.&lt;span style=""&gt;  &lt;/span&gt;This type of diagnostics report can tell users that they are obtaining bad performance from something other than your application.&lt;span style=""&gt;  &lt;/span&gt;If you feel that the performance of your application is limited by the actual network communication speed, and not by other (application) factors, this facility will report the maximum possible speeds to your user.&lt;br /&gt; &lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br /&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; color: rgb(102, 0, 0);" class="MsoNormal"&gt;&lt;b style=""&gt;&lt;i style=""&gt;&lt;span style="font-family: Arial;"&gt;Latency&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;Latency is different from the load-carrying capacity (bandwidth) of a network.&lt;span style=""&gt;  &lt;/span&gt;Bandwidth refers to how much data can be sent down the communication channel for a given period of time and is limited by the link in the communication chain that has the lowest bandwidth.&lt;span style=""&gt;  &lt;/span&gt;The latency is the amount of time a particular data packet takes to get from one end of the communication channel to the other.&lt;span style=""&gt;  &lt;/span&gt;Bandwidth tells you the limits within which your application can operate before the performance become affected by the volume of data being transmitted.&lt;span style=""&gt;  &lt;/span&gt;Latency often affects the user’s view of the performance even when bandwidth isn’t a problem.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;In most cases, especially Internet traffic, latency is an important concern.&lt;span style=""&gt;  &lt;/span&gt;You can determine the basic round-trip time for a data packets from any two machines using the ping utility.&lt;span style=""&gt;  &lt;/span&gt;This utility provides a measure of the time it takes a packet of data to reach another machine and be returned.&lt;span style=""&gt;  &lt;/span&gt;However, the time measure is for a basic underlying protocol (ICMP packet) to travel between the machines.&lt;span style=""&gt;  &lt;/span&gt;If the communication channel is congested and the overlying protocol requires re-transmissions (often the case for Internet traffic), one transmission at the application level can actually be equivalent to many round trips.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;It is important to be aware of these limitations.&lt;span style=""&gt;  &lt;/span&gt;It is often possible to tune the application to minimize the number of transfers by packing data together, caching and redesigning the distributed application protocol to aim for a less conversational mode of operation.&lt;span style=""&gt;  &lt;/span&gt;At the network level, you need to monitor the transmission statistics (using the ping and netstat utilities and packet sniffers) and consider tuning any network parameters that you have access to in order to reduce re-transmissions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; color: rgb(102, 0, 0);" class="MsoNormal"&gt;&lt;b style=""&gt;&lt;i style=""&gt;&lt;span style="font-family: Arial;"&gt;TCP/IP Stacks&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;The TCP/IP stack is the section of code that is responsible for translating each application-level network request (send, receive, connect, etc.) through the transport layers down to the wire and back up to the application at the other end of the connection.&lt;span style=""&gt;  &lt;/span&gt;Because the stacks are usually delivered with the operation system and performance-tested before delivery (since a slow network connection on an otherwise fast machine and fast network is pretty obvious), it is unlikely that the TCP/IP stack itself is a performance problem.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;In addition to the stack itself, stacks include several tunable parameters.&lt;span style=""&gt;  &lt;/span&gt;Most of these parameters deal with transmission details beyond the scope of the book.&lt;span style=""&gt;  &lt;/span&gt;One parameter worth mentioning is the maximum packet size.&lt;span style=""&gt;  &lt;/span&gt;When your application sends data, the underlying protocol breaks the data into packets that are transmitted.&lt;span style=""&gt;  &lt;/span&gt;There is an optimal size for packets transmitted over a particular communication channel, and the packet size actually used by the stack is compromise.&lt;span style=""&gt;  &lt;/span&gt;Smaller packets are less likely to be dropped, but they introduced more overhead, as data probably has to be broken up into more packets with more header overhead.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;If your communication takes place over a particular set of endpoints, you may want to alter the packet sizes.&lt;span style=""&gt;  &lt;/span&gt;For a LAN segment with no router involved, the packets can be big (e.g. 8KB).&lt;span style=""&gt;  &lt;/span&gt;For a LAN with routers, you probably want to set the maximum packet size to the size the routers allow to pass unbroken.&lt;span style=""&gt;  &lt;/span&gt;(Routers can break up the packets into smaller ones; 1500 bytes is the typical maximum packet size and the standard for the Ethernet.&lt;span style=""&gt;  &lt;/span&gt;The maximum packet size is configurable by the router’s network administrator.)&lt;span style=""&gt;  &lt;/span&gt;If your application is likely to be sending data over the Internet and you cannot guarantee the route and quality of routers it will pass through, 500 bytes per packet is likely to be optimal.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; color: rgb(102, 0, 0);" class="MsoNormal"&gt;&lt;b style=""&gt;&lt;i style=""&gt;&lt;span style="font-family: Arial;"&gt;Network Bottlenecks&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;Other causes of slow network I/O can be attributed directly to the load or configuration of the network.&lt;span style=""&gt;  &lt;/span&gt;For example, a LAN may become congested when many machines are simultaneously trying to communicate over the network.&lt;span style=""&gt;  &lt;/span&gt;The potential throughput of the network could handle the load, but the algorithms to provide communication channels slow the network, resulting in a lower maximum throughput.&lt;span style=""&gt;  &lt;/span&gt;A congested Ethernet network has an average throughput approximately one third the potential maximum throughputs.&lt;span style=""&gt;  &lt;/span&gt;Congested networks have other problems, such as dropped network packets.&lt;span style=""&gt;  &lt;/span&gt;If you are using TCP, the communication rate on a congested network is much slower as the protocol automatically resends the dropped packets.&lt;span style=""&gt;  &lt;/span&gt;If you are using UDP, your application must resend multiple copies for each transfer.&lt;span style=""&gt;  &lt;/span&gt;Dropping packets in this way is common for the Internet.&lt;span style=""&gt;  &lt;/span&gt;For LANs, you need to coordinate closely with network administrators to alert them to the problem.&lt;span style=""&gt;  &lt;/span&gt;For single machines connected by a service provider, suggesting improvements.&lt;span style=""&gt;  &lt;/span&gt;The phone line to the service provider may be noisier than expected: if so, you also need to speak to the phone line provider.&lt;span style=""&gt;  &lt;/span&gt;It is also worth checking with the service provider, who should have optimal configurations they can demonstrate.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;Dropped packets and re-transmissions are a good indication of network congestion problems, and you should be on constant lookup for them.&lt;span style=""&gt;  &lt;/span&gt;Dropped packets often occur when routers are overloaded and find it necessary to drop some of the packets being transmitted as the router’s buffer overflow.&lt;span style=""&gt;  &lt;/span&gt;This means that the overlying protocol will request the packets to be resent.&lt;span style=""&gt;  &lt;/span&gt;The netstat utility lists re-transmission and other statistics that can identify these sorts of problems.&lt;span style=""&gt;  &lt;/span&gt;Re-transmissions may indicate that the maximum packet size is too large.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; color: rgb(102, 0, 0);" class="MsoNormal"&gt;&lt;b style=""&gt;&lt;i style=""&gt;&lt;span style="font-family: Arial;"&gt;DNS Lookup&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;Looking up network address is an often-overlooked cause of bad network performance.&lt;span style=""&gt;  &lt;/span&gt;When your application tries to connect to a network address such as foo.bar.somthing.org (e.g. downloading a webpage from &lt;a href="http://foo.bar.something.org/"&gt;http://foo.bar.something.org&lt;/a&gt;), your application first translates foo.bar.somthing.org into a four-byte network IP address such as 10.33.6.45.&lt;span style=""&gt;  &lt;/span&gt;This is the actual address that the network understands and uses for routing network packets.&lt;span style=""&gt;  &lt;/span&gt;The is this translation works is that your system is configured with some seldom-used files that can specify this translation, and a more frequently used Domain Name System (DNS) server that can dynamically provide you with the address from the given string.&lt;span style=""&gt;  &lt;/span&gt;DBS translation works as follows:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;ol style="margin-top: 0in; text-align: justify;" start="1" type="1"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;The machine running the application sends the      text string of the hostname (e.g. foo.bar.something.org) to the DNS      server.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;The DNS server checks its cache to find an IP      address corresponding to that hostname.&lt;span style=""&gt;       &lt;/span&gt;If the server does not find an entry in the cache, it asks its own      DNS server (usually further up the Internet domain-name hierarchy) until      ultimately the name is resolved.&lt;span style=""&gt;       &lt;/span&gt;(This may be by components of the name being resolved, e.g. first      .org, then something.org, etc, each time asking another machine as the      search request is successively resolved.)&lt;span style=""&gt;       &lt;/span&gt;This resolved IP address is added to the DBS server’s cache.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;The IP address s returned to the original      machine running the application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;The application uses the IP address to connect      to the desired destination.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;The address lookup does not need to be repeated once a connection is established, but any other connections (within the same session of the application or in other session s at the same time and later) need to repeat the lookup procedure to start another connection.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;You can improve this situation by running a DNS server locally on the machine, or on a local server if the application uses a LAN.&lt;span style=""&gt;  &lt;/span&gt;A DNS server can be run as a “caching-only” server that resets its cache each time the machine is rebooted.&lt;span style=""&gt;  &lt;/span&gt;There would be little point in doing this if the machine used only one or two connections per hostname between successive reboots.&lt;span style=""&gt;  &lt;/span&gt;For more frequent connections, a local DNS server can provide a noticeable speedup to connections. Nslookup is useful for investigating how a particular system does translations.&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-family: Arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;span style="font-family: arial;"&gt;&lt;strong&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Related Topic&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family: arial;"&gt;&lt;strong&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html" rel="bookmark" sdmcf="0" j8rta="0"&gt;&lt;span style="font-family: arial;"&gt;Content Page - General&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html" rel="bookmark" sdmcf="0" j8rta="0"&gt;&lt;span style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;br /&gt;&lt;span style="font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&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/6767212759522432339-2207676447401670481?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/2207676447401670481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=2207676447401670481' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2207676447401670481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2207676447401670481'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/07/basics-network-bottlenecks.html' title='Basics: Network Bottlenecks'/><author><name>Hs</name><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-6767212759522432339.post-2770384432858300679</id><published>2007-07-11T09:23:00.001+08:00</published><updated>2008-12-09T16:50:23.246+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iostat'/><category scheme='http://www.blogger.com/atom/ns#' term='monitor'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='vmstat'/><category scheme='http://www.blogger.com/atom/ns#' term='netstat'/><title type='text'>Tools: Monitoring Unix Resource Script ver 1.0</title><content type='html'>&lt;p&gt;&lt;span style="font-family:arial;"&gt;Due to the past experiences working in my organization, having the problem of not able to monitor the Unix system resources due to whatever reasons (rstatd configuration, dynamic ports, security reasons or lazy administrators) had always been bothering us.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Our team came up with the simple initiative to monitor using the same concept as perfmon. We requested (outsourced) one of our interims to search for unix monitoring scripts and modify it to collect data periodically. And here we are, special thanks to the interim, we finally got the first-cut of the scripts.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="text-align: left;"&gt;&lt;span style="font-family:arial;"&gt;Copy and paste the below script starting from here ==================================================================&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;#!/bin/bash&lt;br /&gt;# (C) 2006 Mark Boddington, &lt;/span&gt;&lt;a href="http://www.badpenguin.co.uk/"&gt;&lt;span style="font-family:arial;"&gt;http://www.badpenguin.co.uk/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;# &lt;/span&gt;&lt;span style="font-family:arial;"&gt;(C) 2007 Modified by Hwee Seong, http://loadrunnertnt.blogspot.com&lt;br /&gt;# Licensed under the GNU GPL Version 2.&lt;br /&gt;# ***** Configuration *****&lt;br /&gt;# set LOG to the directory you want to write the performance data to.&lt;br /&gt;# set HDD to the number of had disks in your machine.&lt;br /&gt;# NOTE : Do not change the variable LIMIT&lt;br /&gt;LOG=/home/Admin/report&lt;br /&gt;HDD=2&lt;br /&gt;LIMIT=0&lt;br /&gt;genStat()&lt;br /&gt;{&lt;br /&gt;test=$1&lt;br /&gt;SLEEP=$2&lt;br /&gt;filename=$(date +%Y%m%d%H%M%S)&lt;br /&gt;for((num=0;num&lt;test;num++)) day="$(date" dat="$(date" limit="$LIMIT"&gt;&gt; ${LOG}/vm.${filename}.log &amp;&lt;br /&gt;sleep $SLEEP&lt;br /&gt;done&lt;br /&gt;if [[ LIMIT -eq test ]]&lt;br /&gt;then&lt;br /&gt;#VM csv&lt;br /&gt;echo Date,Time,Procs in Run Queue,Procs Blocked,Virtual Memory Used,Idle Memory,Buff Memory Used,Cache Memory Used,Swap In,Swap Out,Blocks Received,Blocks Sent,System Interrupt,Context Switches/sec,Cpu User Time,Cpu System Time,Cpu Idle Time,Cpu Waiting Time&gt; ${LOG}/vm.${filename}.csv&lt;br /&gt;cat ${LOG}/vm.${filename}.log awk '{for(l=1;l&lt;17;l++)&gt;&gt; ${LOG}/vm.${filename}.csv&lt;br /&gt;fi&lt;br /&gt;}&lt;br /&gt;case $1 in&lt;br /&gt;run)&lt;br /&gt;genStat $2 $3&lt;br /&gt;;;&lt;br /&gt;*)&lt;br /&gt;echo -e ":::: Usage ::::"&lt;br /&gt;echo -e "$0 run 5 10 : Collect stats for 5 times with 10 seconds interval"&lt;br /&gt;echo -e "Note : Change the first parameter for the number of stats"&lt;br /&gt;echo -e " Change the second parameter for the number of seconds between each stats"&lt;br /&gt;;;&lt;br /&gt;esac&lt;/test;num++))&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;==================================================================&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The original script was developed by Mark Boddington and could be obtained from http://www.badpenguin.co.uk &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The modified script allows the interval between each collection and the number of times the collection is made. However, this script lacks the ability to set the output path and it is created based on vmstat. Also, you will have to estimate the completion time for the scenario to complete.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;To use the script, copy the quoted content (above) and name it MonitorPerformance.sh. Then in the directory that the script exists, type the following:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;\MonitorPerformance.sh 5 10&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Where 5 is the number of times the collection is made and 10 is the interval between each collection in seconds. &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Once the collection is complete, import the file in analysis. Our settings in Analysis are as follows.&lt;/span&gt;&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5085752965411003522" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://1.bp.blogspot.com/_O2pYmSzohE4/RpQ5YGa2XII/AAAAAAAAADE/aFUJmzp1CK4/s400/ia_unix_import_settings.JPG" border="0" /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;This is a minimal start for us and we intend to further enhance the script to allow the following (provided we can squeeze some time out):&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;1. Changing of the output path&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;2. Include iostat and netstat.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Please feel free to use the script and we welcome suggestions, modifications and enhancement to the scripts to make it a better tool.&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;(simple tools making lifes easier)&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: rgb(102, 0, 0);font-family:arial;" &gt;Related Topics&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/monitors-how-does-monitoring-work.html" y4ojz="0" lpyf5="0"&gt;Tools: Duplicating Files Prior Load Test &lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/tools-determine-windows-patches.html" y4ojz="0" lpyf5="0"&gt;Tools: Determine the Windows patches installed using Windows 2003 Resource Kit&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&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/6767212759522432339-2770384432858300679?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/2770384432858300679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=2770384432858300679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2770384432858300679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2770384432858300679'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/07/tools-monitoring-unix-resource-script.html' title='Tools: Monitoring Unix Resource Script ver 1.0'/><author><name>Hs</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_O2pYmSzohE4/RpQ5YGa2XII/AAAAAAAAADE/aFUJmzp1CK4/s72-c/ia_unix_import_settings.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-29380923524013213</id><published>2007-07-09T13:45:00.000+08:00</published><updated>2007-07-09T23:18:33.824+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iterations'/><category scheme='http://www.blogger.com/atom/ns#' term='transactions'/><category scheme='http://www.blogger.com/atom/ns#' term='lr_end_transaction'/><category scheme='http://www.blogger.com/atom/ns#' term='lr_start_transaction'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Scripts: Starting a new transaction during iterations</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Recently one of my load testing projects required us to monitor the time taken to upload a file into the application. This sounds simple and straight forward with the implementation of the lr_start_transaction and the lr_end_transaction. However, the catch is that the action block be iterated 10 times and within the 10 iterations, one of the iteration is to upload a different file of different size (thus causing different response time), which they want to measure.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;span style="font-family:arial;"&gt;What we did was implement a if-then-else to check the file and perform a lr_start_transaction when the script is uploading the different file and end the transaction with the lr_end_transaction when the submission completes.  The snippet of the code is as followed:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;if (!strcmp(lr_eval_string("{file}"), lr_eval_string("{set_file}")))&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;    lr_start_transaction("tx_check_upload_different_file");&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;    lr_start_trasaction("tx_tx_check_same_upload_file");&lt;/span&gt;&lt;/div&gt;}&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;...&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000066;"&gt;...&lt;span style="font-size:-0;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:-0;"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;\\other&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;color:#000066;"&gt; codes&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;...&lt;br /&gt;if (!strcmp(lr_eval_string("{file}"),lr_eval_string("{set_file}")))&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;    lr_end_transaction("tx_check_upload_different_file",LR_AUTO); &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;{&lt;/span&gt;&lt;/div&gt;    &lt;span style="font-family:arial;color:#000066;"&gt;lr_end_trasaction("tx_check_same_upload_file",LR_AUTO);&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The code detects the if the uploaded file is different and will start tracking the timing for the upload transaction.   Hope it's useful to you.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Related Topics&lt;/span&gt;&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-duplicating-files-on-fly.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: Duplicating Files on the Fly &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-step-download-timeout.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: Step Download Timeout &lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-viewstate.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: VIEWSTATE &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-auto-or-manual-correlation.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: Auto or Manual Correlation?&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-remove-think-time.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: Remove Think Time &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/sometimes-there-is-need-to-know-what-is.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: Set Debug Mode in Script&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-replay-failure-use-full.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: Replay Failure – Use Full Extended Log!&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;"&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/6767212759522432339-29380923524013213?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/29380923524013213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=29380923524013213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/29380923524013213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/29380923524013213'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/07/scripts-starting-new-transaction-during.html' title='Scripts: Starting a new transaction during iterations'/><author><name>Hs</name><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-6767212759522432339.post-4470316427826950703</id><published>2007-07-08T16:02:00.000+08:00</published><updated>2007-07-08T16:06:49.626+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bottleneck'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='RAM'/><title type='text'>Basics: Memory Bottlenecks</title><content type='html'>&lt;div style="text-align: justify;"&gt;  &lt;span style="font-family: arial;"&gt;Maintaining watch directly on the system memory (RAM) is not usually that helpful in identifying performance problems.  A better indication that memory might be affecting performance can be gained by watching for paging of data from memory to the swap files.  Most current OS have a virtual memory that is made up of the actual (real) system memory using RAM chips, and one or more swap files on the system disks.  Processes that are currently running are operating in real memory.  The OS can take pages from any of the processes currently in real memory and swap them out to disk.  This is known as paging.  Paging leaves free space in real memory to allocate to other processes that need to bring in a page from disk.   &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Obviously, if all the processes currently running can fit into real memory, there is no need for the system to swap out any pages.  However, if there are too many processes to fit into real memory, paging allows the system to free up system memory to run more processes.  Paging affects system performance in many ways. One obvious way is that if a process has had some pages moved to disk and the process becomes run-able, the OS has to pull back the pages from dusk before that process can be run.  This leads to delays in performance.  In addition, both CPU and the disk I/O spend time doing the paging, reducing available processing power and increasing the load on the disks.  This cascading effect involving both the CPU and I/O can degrade the performance of the whole system in such a way that it maybe difficult to even recognize that paging is the problem.  The extreme version of too much paging is thrashing, in which the system is spending so much time moving pages around that it fails to perform any other significant work.  (The next step is likely to be a system crash).     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;As with run-able queues (see CPU section), a little paging of the system does not affect the performance enough to cause concern.  In fact, some paging can be considered good.  It indicated that the system’s memory resources are fully utilized.  But at the point where paging becomes a significant overhead, the system is overloaded.      &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Monitoring paging is relatively easy.  On UNIX, the utilities vmstat and iostat provide details as to the level of paging, disk activity and memory levels.  On Windows, the performance monitor has categories to show these details, as well as being able to monitor the system swap files.     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;If there is more paging than is optimal, the system’s RAM is insufficient or processes are too big.  To improve this situation, you need to reduce the memory being used by reducing the number of processes or the memory utilization of some processes.  Alternatively, you can add RAM.  Assuming that it is your application that is causing the paging (Otherwise, either the system needs an upgrade, or someone else’s processes may also have to be tuned), you need to reduce the memory resources you are using.      &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;When the problem is caused by a combination of your application and others, you can partially address the situation by using process priorities (see the CPU “section”).  The equivalent to priority levels for memory usage is an all-or-nothing option, where you can lock process in memory. This option is not available on all systems and is more often applied to shared memory than to processes, but nevertheless, it is useful to know.  If this option is applied, the process is locked into real memory and is not paged out at all.  You need to be aware that using this option reduces the amount of RAM available to all other processes, which can make overall system performance worse.  Any deterioration in system performance is likely occurring at heavy system load, so make sure you extrapolate the effect of reducing the system memory in this way.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p align="justify"&gt;&lt;span style="font-family: arial;"&gt;&lt;strong&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Related Topic&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family: arial;"&gt;&lt;strong&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html" rel="bookmark" sdmcf="0" j8rta="0"&gt;&lt;span style="font-family: arial;"&gt;Content Page - General&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html" rel="bookmark" sdmcf="0" j8rta="0"&gt;&lt;span style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&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/6767212759522432339-4470316427826950703?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/4470316427826950703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=4470316427826950703' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4470316427826950703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4470316427826950703'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/07/basics-memory-bottlenecks.html' title='Basics: Memory Bottlenecks'/><author><name>Hs</name><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-4151496512877601269</id><published>2007-07-06T16:21:00.000+08:00</published><updated>2007-07-06T16:45:24.780+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SilkPerformer'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Load Testing'/><title type='text'>Products: SilkPerformer (a comparison with LoadRunner)</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;SilkPerformer is a load testing tool from Borland, originally Segue. SilkPerformer have almost all features that LoadRunner have. Therefore, you may like to read about the product LoadRunner &lt;/span&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/products-loadrunner.html"&gt;&lt;span style="font-family:arial;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; before proceeding further on this article. The SilkPerformer suite consists of the Workbench, Silk TrueLog and Silk Performance Explorer. The entire load test implementation is the same where the load generators have to be installed at the machines. For the sales talk by the vendor, click &lt;/span&gt;&lt;a href="http://www.borland.com/us/products/silk/silkperformer/index.html"&gt;&lt;span style="font-family:arial;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;&lt;br /&gt;What SilkPerformer offer is it handles load test in project approach. Using this approach, each load test is stored as a project with various settings of profiles and workloads. This is advantageous when managing the load test in a customer or project perspective where you can track the projects accordingly. Furthermore, within a project, for every load test run, a result directory for each run is created. This is useful in tracking the number of runs that were conducted. In this way, there is a structural approach in managing the tests that were conducted. Both features mentioned above are not available in LoadRunner.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;SilkPerformer have another cool feature, which is resource management of the load generator. By defining a pool of load generators, the load tester is able to have an overview of the resources that is participating in the load test. This is almost similar to the Resource Pool in &lt;/span&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/products-performance-center.html"&gt;&lt;span style="font-family:arial;"&gt;Performance Center&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;. This is not available in LoadRunner.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;During the execution, SilkPerformer allows monitoring of the resources in terms of CPU usage in the Load Generator. This is beneficial when differing problem in resources on the Load Generator or the SUT itself. Furthermore, feature allows capacity planning for load generators. SilkPerformer also allows monitoring on the progress of the vusers and load test in terms of percentage that displays the progress in percentage of the vusers. This is beneficial in estimating the duration of the load test and forecast the end time of the load test.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;While performing the evaluation, I found that the parameterization feature offered in SilkPerformer is not as user-friendly as compared to LoadRunner. The manipulation of the parameterization is not as straightforward such as defining the parameter and reusing the parameter unlike LoadRunner where a replace function can easily achieve the parameterization.&lt;br /&gt;For iteration, SilkPerformer have to define the iteration number in the script. For pacing a LoadRunner feature, is not offered in the SilkPerformer.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;SilkPerformer provides Rendezvous feature in terms of serialisation and synchronisation. This is useful if a certain load model needs to be emulated during the test (better than LoadRunner). However, the downside is it requires inclusion of the API which is not as convenient as LoadRunner in implementing a Rendezvous point. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;For replay, the Silk TrueLog is a powerful tool in analysing the replay as compared to LoadRunner Runtime Viewer. If offers replay of the screens and providing views of the data in and out from the client and server.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;SilkPerformer allows monitoring similar to LoadRunner. However, LoadRunner provides more features in the monitoring perspective. SilkPerformer requires additional logging for non-default monitors unlike LoadRunner, which automatically logs the data when the counter is been added into the monitor list. Also, SilkPerformer is restricted to a defined set of custom monitors namely JMX, SNMP, Perfmon and Rexec unlike LoadRunner, which provides more monitors.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;SilkPerformer utilises Silk Performance Explorer for analysing. However, it’s capability to merge, manipulate, handle external data is not as flexible and robust as LoadRunner Analysis. The analysing feature is an important component used by the Performance Team to determine problem causes.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;SilkPerformer have the similar license mechanism as LoadRunner, which is bounded by a single host. However it features an additional mechanism that allows the option to "check-out" license to the installed application. This is useful in an organisation context in managing our performance test in different environments.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;color:#660000;"&gt;Related Topics&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/products-performance-center.html"&gt;&lt;span style="font-family:arial;"&gt;Performance Center&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/products-loadrunner.html"&gt;&lt;span style="font-family:arial;"&gt;LoadRunner&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/products-diagnostics.html" unqbp="0" jdsjz="0"&gt;&lt;span style="font-family:arial;"&gt;Diagnostics&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/06/products-sitescope.html" unqbp="0" jdsjz="0"&gt;&lt;span style="font-family:arial;"&gt;SiteScope&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&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/6767212759522432339-4151496512877601269?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/4151496512877601269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=4151496512877601269' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4151496512877601269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4151496512877601269'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/07/products-silkperformer-comparison.html' title='Products: SilkPerformer (a comparison with LoadRunner)'/><author><name>Hs</name><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>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-3791930285173921017</id><published>2007-07-04T20:46:00.000+08:00</published><updated>2007-07-04T20:58:05.045+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='disk'/><category scheme='http://www.blogger.com/atom/ns#' term='raid'/><category scheme='http://www.blogger.com/atom/ns#' term='I/O'/><category scheme='http://www.blogger.com/atom/ns#' term='hard disk'/><category scheme='http://www.blogger.com/atom/ns#' term='partitions'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Basics: Disks Bottlenecks</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;In most cases, applications can be tuned so that disk I/O does not cause any serous performance problems. But if, application tuning, you find that disk I/O s still causing a performance problem; your best bet may be to upgrade the system disks. Identifying whether the system has a problem with disk utilization is the first step. Each system provides its own tools to identify disk usage (Windows has a performance monitor, and UNIX has the sar, vmstat, iostat utilities.) At minimum, you need to identify whether the paging is an issue (look at disk-scan rates) and assess the overall utilization of your disks (e.g. performance monitor on Windows, output from iostat –D on UNIX). It may be that the system has a problem independent of your application (e.g. unbalanced disks), and correcting this problem may resolve the problem issue.&lt;br /&gt;&lt;br /&gt;If the disk analysis does not identify an obvious system problem that is causing the I/O overhead, you could try making a disk upgrade or a reconfiguration. This type of tuning can consist of any of the following:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Upgrading to faster disks&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Adding more swap space to handle larger buffers&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Changing the disk to be striped (where files are striped across several disks, thus providing parallel I/O. e.g. with a RAID system)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Running the data on raw partitions when this is shown to be faster.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Distributing simultaneously accessed files across multiple disks to gain parallel I/O&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Using memory-mapped disks or files &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;If you have applications that run on many systems and you do not know the specification of the target system, bear in mind that you can never be sure that ant particular disk is local to the user. There is a significant possibility that the disk being used by the application is a network-mounted disk. This doubles the variability in response times and throughput. The weakest link will probably not even be constant. A network disk is a shared resource, as is the network itself, so performance is hugely and unpredictably affected by other users and network load.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Disk I/O&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Do not underestimate the impact of disk writes on the system as a whole. For example, all database vendors strongly recommend that the system swap files be placed on a separate disk from their databases. The impact of if not doing so can decrease database throughput (and system activity) but an order of magnitude. This performance decreases come from not splitting I/O of two disk-intensive applications (in this case, OS paging and database I/O).&lt;br /&gt;&lt;br /&gt;Identifying that there is an I/O problem is usually fairly easy. The most basic symptom is that things take longer than expected, while at the same time the CPU is not at all heavily worked. The disk-monitoring utilities will also tell you that there is a lot of work being done to the disks. At the system level, you should determine the average peak requirements on the disks. Your disks will have some statistics that are supplied by the vendor, including:&lt;br /&gt;&lt;br /&gt;The average and peak transfer rates, normally in megabytes (MB) per seconds, e.g. 5MB/sec. Form this, you can calculate how long an 8K page takes to be transferred from disk, and for example, 5MB/sec is about 5K/ms, so an 8K page takes just under 2ms to transfer.&lt;br /&gt;&lt;br /&gt;Average seek time, normally in milliseconds (ms). This is the time required for the disk head to move radially to the correct location on the disk.&lt;br /&gt;&lt;br /&gt;Rotational speed, normally in revolutions per minutes (rpm), e.g. 7200rpm. From this, you can calculate the average rotational delay in moving the disk under the disk-head reader, i.e., the time taken for half a revolution. For example, for 7200rpm, one revolution takes 60,000ms (60 seconds) divided by 7200rpm, which is about 8.3 ms. So half a revolution takes just over 4ms, which is consequently the average rotational delay.&lt;br /&gt;&lt;br /&gt;This list allows you to calculate the actual time it takes to load a random 8K page from the disk, this being seek time + rotational delay + transfer time. Using the examples given in the list, you have 10 + 4 + 2 = 16 ms to load a random 8K page (almost an order of magnitude slower than the raw disk throughput). This calculation gives you a worst –case scenario for the disk-transfer rates for your application, allowing you to determine if the system is up to the required performance. Note that if you are reading data stored sequentially in disk (as when reading a large file), the seek time and rotational delay are incurred less than once per 8K page loaded. Basically, these two times are incurred only at the beginning of opening the file and whenever the file is fragmented. But this calculation is confounded by other processes also executing I/O to the disk at the same time. This overhead is part of the reason why swap and other intensive I/O files should not be put on the same disk.&lt;br /&gt;&lt;br /&gt;One mechanism for speeding up disk I/O is to stripe disks. Disk striping allows data from a particular file to be spread over several disks. Striping allows reads and writes to be performed in parallel across the disks without requiring any application changes. This can speed up disk I/O quite effectively. However, be aware that the seek and rotational overhead previously listed still applies, and if you are making many small random reads, there may be no performance gain from striping disks.&lt;br /&gt;&lt;br /&gt;Finally, note again that using remote disks adversely affects I/O performance. You should not be using remote disks mounted from the network with any I/O-intensive operations if you need good performance.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Clustering Files&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Reading many files sequentially is faster if the files are clustered together on the disk, allowing the disk-head reader to flow from one file to the next. This clustering is best done in conjunction with defragmenting the disks. The overhead in finding the location of a file on the disk (detailed in the previous section) is also minimized for sequential reads if the files are clustered.&lt;br /&gt;&lt;br /&gt;If you cannot specify clustering files at the disk level, you can still provide similar functionality by putting all the files together into one large file (as is done with the ZIP file systems). This is fine if all the files are read-only files or if there is just one file that is writable (you place that at the end). However, when there is more than one writable file, you need to manage the location of the internal files in your system as one or more grow. This becomes a problem and is not usually worth the effort. (If the files have a known bounded size, you can pad the files internally, thus regaining the single file efficiency.)&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Cached File Systems (RAM Disks, tmpfs, cachefs)&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Most OS provide the ability to map a file system into the system memory . This ability can speed up reads and writes to certain files in which you control your target environment. Typically, this technique has been used to speed up the reading and writing of temporary files. For example, some compilers (of languages in general, not specifically Java) generate many temporary files during compilation. If these files are created and written directly to the system memory, the speed of compilation is greatly increased. Similarly, if you have the a set of external files that are needed by your application, it is possible to map these directly into the system memory, thus allowing their reads and writes to be speeded up greatly.&lt;br /&gt;&lt;br /&gt;But note that these types of file systems are not persistent. In the same way the system memory of the machine gets cleared when it is rebooted, so these file systems are removed on reboot. If the system crashes, anything in a memory-mapped file system is lost. For this reason, these types of file systems are usually suitable only for temporary files or read-only versions of disk-based files (such as mapping a CD-ROM into a memory-resident file system).&lt;br /&gt;&lt;br /&gt;Remember that you do not have the same degree of fine control over these file systems that you have over your application. A memory-mapped file system does not use memory resources as efficiently as working directly from your application. If you have direct control over the files you are reading and writing, it is usually better to optimize this within your application rather than outside it. A memory-mapped file system takes space directly from system memory. You should consider whether it would be better to let your application grow in memory instead of letting the file system take up that system memory. For multi-user applications, it is usually more efficient for the system to map shared files directly into memory, as a particular fule then takes up just one memory location rather than duplicate in each process. Note that from SDK 1.4, memory-mapped files are directly supported from the java.nio package. Memory-mapped files are slightly different from memory-mapped file systems. A memory-mapped file uses system resources to read the file into system memory, and that data can then be accessed form Java through the appropriate java.nio buffer. A memory-mapped file system does not require the java.nio package and, as far as Java is concerned, files in that file system are simply files like any others. The OS transparently handles the memory mapping.&lt;br /&gt;&lt;br /&gt;The creation of memory-mapped file systems is completely system-dependent, and there is no guarantee that it is available on any particular system (though most modern OS do support this feature). On UNIX system, the administrator needs to look at the documentation of the mount command and its subsections on cachefs and tmpfs. Under Windows, you should find details by looking at the documentation on how to setup a RAM disk, a portion of memory mapped to a logical disk drive.&lt;br /&gt;&lt;br /&gt;In a similar way, there are products available that pre-cache shared libraries (DLL) and even executables in memory. This usually means only that an application starts quicker or loads the quicker, and so may not be much help in speeding up a running system.&lt;br /&gt;&lt;br /&gt;But you can apply the technique of memory-mapping file systems directly and quite usefully for applications in which processes are frequently started. Copy the Java distribution and all class files (all JDK, application, and third-party class files) onto a memory-mapped file system and ensure that all executions and classloads take place from the file system. Since everything (executables, DLLs, class files, resources, etc.) is already in memory, the startup time is much faster. Because only the startup (and class loading) time is affected, this technique gives only a small boost to applications that are not frequently starting processes, but can be usefully applied if startup time is a problem.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Disk Fragmentation&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;When files are stored on disk, the bytes in the files are note necessarily stored contiguously: their storage depends on file size and contiguous space available on the disk. This non-contiguous storage is called fragmentation. Any particular file may have some chunks in one place, and a pointer to the next chunk that may be quite a distance away on the disk.&lt;br /&gt;&lt;br /&gt;Hard disks tend to get fragmented over time. This fragmentation delays both reads from files (including loading applications into computer memory on startup) and writes to files. This delay occurs because the disk header must wind on to the next chunk with each fragmentation, and this takes time.&lt;br /&gt;&lt;br /&gt;For optimum performance on any system, it is a good idea to periodically defragment the disk. This reunites files that have been split up so that disk heads do not spend so much time searching for data once the file-header locations have been identified, thus speeding up data access. Defragmenting may not be effective on all systems, however.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Disk Sweet Spots&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Most disks have a location from which data is transferred faster than from other locations. Usually, the closer the data is to the outside edge of the disk, the faster it can be read from the disk. Most hard disks rotate at constant angular speed. This means that the linear speed of the disk under a point is faster the farther away the point is from the center of the disk. Thus, data at the edge of the disk can be read from (and written to) at the faster possible rate commensurate with the maximum density of data storable on disk.&lt;br /&gt;&lt;br /&gt;This location with faster transfer rates usually termed the disk sweet spot. Some&lt;br /&gt;(Commercial) utilities provide mapped access to the underlying disk and allow you to reorganize files to optimize access. On most server systems, the administrator has control over how logical partitions of the disk apply to the physical layout, and how to position files to the disk sweet spots. Experts for high-performance database system sometimes try to position the index tables of the database as close as possible to the disk sweet spot. These tables consist of relatively small amounts of data that affect the performance of the system in a disproportionately large way, so that any speed improvement in manipulating these tables is significant.&lt;br /&gt;&lt;br /&gt;Note that some of the latest OS are beginning to include “awareness” of disk sweet spots, and attempt to move executables to sweet spots when defragmenting the disk. You may need to ensure that the defragmentation procedure does not disrupt your own use of the disk sweet spot.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;The above is taken from the publication, &lt;/span&gt;&lt;a href="http://www.amazon.com/Java-Performance-Tuning-Jack-Shirazi/dp/0596003773"&gt;&lt;span style="font-family:arial;"&gt;"Java Performance Tuning"&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; written by Jack Shirazi. I would recommend to read this book as it provides not just tuning and bottleneck concepts bounded by Java.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I would also recommend visiting the site author by Jack himself and a couple of his mates. It is a very resourceful site for Java performance-related information.&lt;/span&gt;&lt;span style="font-family:arial;"&gt; Click &lt;/span&gt;&lt;a href="http://www.javaperformancetuning.com/"&gt;&lt;span style="font-family:arial;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; to access it.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Related Topic&lt;/span&gt;&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html" rel="bookmark" sdmcf="0" j8rta="0"&gt;&lt;span style="font-family:arial;"&gt;Content Page - General&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-3791930285173921017?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/3791930285173921017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=3791930285173921017' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3791930285173921017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3791930285173921017'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/07/basics-disks-bottlenecks.html' title='Basics: Disks Bottlenecks'/><author><name>Hs</name><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-7811068872658427207</id><published>2007-07-01T11:32:00.000+08:00</published><updated>2007-07-03T09:00:50.487+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CPU'/><category scheme='http://www.blogger.com/atom/ns#' term='bottleneck'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><title type='text'>Basics: CPU Bottlenecks</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Java provides a virtual machine runtime system that is just that: an abstraction of a CPU that runs in software. (Note that this chapter is taken from the &lt;a href="http://www.amazon.com/Java-Performance-Tuning-Jack-Shirazi/dp/0596003773"&gt;"Java Performance Tuning"&lt;/a&gt; written by Jack Shirazi and therefore alot of discussions circled around Java technologies.) These virtual machines run on a real CPU, and in this section the book discuss the performance characteristics of those real CPUs.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;CPU Load&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The CPU and many other parts of the system can be monitored using system-level utilities. On Windows, the task manager and performance monitor can be used for monitoring. On UNIX, a performance monitor (such as perfmeter) is usually available, as well as utilities such as vmstat. Two aspects of the CPU are worth watching as primary performance points. These are the CPU utilization (usually expressed in percentage terms) and the run-able queue of processes and threads (often called the load or the task queue). The first indictor is simply the percentage of the CPU (Or CPUs) being used by all the various threads. If this is up to 100% for significant periods of time, you may have a problem. On the other hand, if it isn’t, the CPU is under-utilized, but that is usually preferable. Low CPU usage can indicate that your application may be blocked for significant periods on disk or network I/O. High CPU usage can indicate thrashing (lack of RAM) or CPU contention (indicating that you need to rune the code and reduce the number of instructions being processed to reduce the impact on the CPU).&lt;br /&gt;&lt;br /&gt;A reasonable target is 75% CPU utilization (which from what I read from different authors varies from 75% till 85%). This means that the system is being worked toward its optimum, but that you have left some slacks for spikes due to other system or application requirements. However, note that if more than 50% of the CPU is used by system processes (i.e. administrative and IS process), your CPU is probably under-powered. This can be identified by looking at the load of the system over some period when you are not running any applications.&lt;br /&gt;&lt;br /&gt;The second performance indicator, the run-able queue, indicates the average number of processes or threads waiting to be scheduled for the CPU by the OS. They are run-able processes, but the CPY has no time to run them and is keeping them waiting for some significant amount of time. As soon as the run queue goes above zero, the system may display contention for resources, nut there usually some value above zero that still gives acceptable performance for any particular system. You need to determine what that value is in order to use this statistics as a useful warning indicator. A simplistic way to do this is to create a short program that repeatedly does some simple activity. You can then time each run of that activity. You can run copies of this process one after the other so that more and ore copies are simultaneously running. Keep increasing the number of copies being run until the run queue starts increasing. By watching the times recorded for the activity, you can graph that time against the run queue. This should give you some indication of when the run-able queue becomes too large for useful responses on your system, administrator if the threshold is exceeded. A guideline by Adrian Cockcroft is that performance starts to degrade if the run queue grows bigger than four times the number of CPUs.&lt;br /&gt;&lt;br /&gt;If you can upgrade the CPU of the target environment, doubling the CPU speed is usually better than doubling the number of CPUs. And remember that parallelism in an application doesn’t necessarily need multiple CPUs. If I/O is significant, the CPU will have plenty of time for many threads.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Process Priorities&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;The OS also has the ability to prioritize the processes in terms of providing CPU time by allocating process priority levels. CPU priorities provide a way to throttle high-demand CPU processes, thus giving other processes a greater share of the CPU. If there are other processes that need to run on the same machine but it doesn’t matter if they were run slowly, you can give your application processes a (much) higher priority than those other processes, thus allowing your application the lion’s share of CPU time on a congested system. This is worth keeping in mind if your application consists of multiple processes, you should also consider the possibility of giving your various processes different levels of priority.&lt;br /&gt;&lt;br /&gt;Being tempted to adjust the priority levels of processes, however, is often a sign that the CPU is underpowered for the tasks you have given it.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;The above is taken from the publication, &lt;/span&gt;&lt;a href="http://www.amazon.com/Java-Performance-Tuning-Jack-Shirazi/dp/0596003773"&gt;&lt;span style="font-family:arial;"&gt;"Java Performance Tuning"&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; written by Jack Shirazi. I would recommend to read this book as it provides not just tuning and bottleneck concepts bounded by Java.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I would also recommend visiting the site author by Jack himself and a couple of his mates. It is a very resourceful site for Java performance-related information. Click &lt;/span&gt;&lt;a href="http://www.javaperformancetuning.com/"&gt;&lt;span style="font-family:arial;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; to access it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Related Topic&lt;/span&gt;&lt;/strong&gt; &lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html" rel="bookmark" j8rta="0" sdmcf="0"&gt;Content Page - General&lt;/a&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-7811068872658427207?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/7811068872658427207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=7811068872658427207' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7811068872658427207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7811068872658427207'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/07/basics-cpu-bottlenecks.html' title='Basics: CPU Bottlenecks'/><author><name>Hs</name><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-4216292154372330883</id><published>2007-07-01T11:11:00.000+08:00</published><updated>2007-07-14T23:24:26.898+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='disk'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='processor'/><category scheme='http://www.blogger.com/atom/ns#' term='Java performance'/><category scheme='http://www.blogger.com/atom/ns#' term='CPU'/><category scheme='http://www.blogger.com/atom/ns#' term='bottleneck'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='RAM'/><title type='text'>Basics: Underlying Operating System and Network Improvements</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;If you control the OS and hardware where the application will be deployed, there are a number of changes you can make to improve performance. Some changes are generic and affect most applications, while some are application-specific. This article applies to most server systems running Java application, including servlets, where you usually specify (or have specified to you) the underlying system, and where have some control over tuning the system. Client and standalone Java programs are likely to benefit from this chapter only if you have some degree of control over the target system, but some tips in the chapter apply to all Java programs.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;It is usually best to target the OS and hardware as a last tuning choice. Tuning the application itself generally provides far more significant speedups than tuning the systems on which the application is running. Application tuning also tends to be easier (though buying more powerful hardware components is easier still and a valid choice for tuning). However, application and system tuning are actually complementary activities, so you can get speedups from tuning both the system and the application if you have the skills and resources. Here are some general tips for tuning systems:&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Constantly monitor the entire system with any monitoring tools available and keep records. This allows you to get a background usage pattern and also lets you compare the current situation with situations previously considered stable. &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;You should run offline work during off-hours only. This ensure that there is no extra load on the system when the users are executing online tasks and enhance performance of both online and offline activities.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;If you need to run extra tasks during the day, try to slot them into times with low user activity. Office activity usually peaks at 9am and 2:30pm and has a load between noon and 1pm or at shift changeovers. You should be able to determine the user-activity cycles appropriate to your system by examining the results of normal monitoring. The reduced conflict for system resources during periods of low activity improves performance.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;You should specify timeouts for all process under the control of your application (and others on the system, if possible) and terminate processes that have passed their timeout value.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Apply any partitioning available from the system to allocate determinate resources to your application. For example, you can specify disk partitions, memory segments, and even CPUs to be allocated to particular process.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;As the entire chapter is lengthy, I've split them into various sections namely the links that followed. Click on the links to access the article.&lt;/span&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/basics-cpu-bottlenecks.html"&gt;CPU&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/basics-disks-bottlenecks.html"&gt;Disk&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/basics-memory-bottlenecks.html"&gt;Memory&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/basics-network-bottlenecks.html"&gt;Network&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The above is taken from the publication, &lt;/span&gt;&lt;a href="http://www.amazon.com/Java-Performance-Tuning-Jack-Shirazi/dp/0596003773"&gt;&lt;span style="font-family:arial;"&gt;"Java Performance Tuning"&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; written by Jack Shirazi. I would recommend to read this book as it provides not just tuning and bottleneck concepts bounded by Java. A simplified version (which is the summary of the chapter can be found here [Comming soon]).&lt;/span&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;I would also recommend visiting the site author by Jack himself and a couple of his mates. It is a very resourceful site for Java performance-related information. Click &lt;/span&gt;&lt;a href="http://www.javaperformancetuning.com/"&gt;&lt;span style="font-family:arial;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; to access it.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="color: rgb(153, 0, 0);font-family:arial;" &gt;&lt;strong&gt;Related Topic&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html" rel="bookmark" j8rta="0" sdmcf="0"&gt;&lt;span style="font-family:arial;"&gt;Content Page - General&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&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/6767212759522432339-4216292154372330883?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/4216292154372330883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=4216292154372330883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4216292154372330883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4216292154372330883'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/07/basics-underlying-operating-system-and.html' title='Basics: Underlying Operating System and Network Improvements'/><author><name>Hs</name><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-6767212759522432339.post-4342167547113555849</id><published>2007-06-29T09:09:00.000+08:00</published><updated>2007-06-29T22:43:00.430+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='running vusers'/><category scheme='http://www.blogger.com/atom/ns#' term='Maximum'/><category scheme='http://www.blogger.com/atom/ns#' term='different'/><title type='text'>Basics: Max. Running Vusers in Analysis is different from Vuser Quantity in Controller?</title><content type='html'>&lt;div align="justify"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:arial;"&gt;There are couple of times when an individual starts to pick up LoadRunner ask this question. I've written the explanation here for the convenience of the newbies which I had previously responded in the Yahoo! group discussion. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;Max. Running Vuser&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It defines at any point of point of time, the maximum number of vusers running together concurrently (in Run state). This is the "state" or usually the requirement of a load test to reach "X" number of concurrent users. If a load test were to required to run 100 concurrent users, then the Max. Running Vuser must be 100. This is different from Vuser Quantity explained in the following.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;Vuser Quantity&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:arial;"&gt;In the Controller, the Vuser Quantity is the total number of participating in the load test but it is different from Max. Running Vuser which is explained above.  To view the total number of Vuser participating the load test (Vuser Quantity), open the Vuser Summary graph.  Please take note that the Summary Report in the Analysis session displays the maximum number of vusers running in the scenario and not the total vuser particiapting. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;&lt;span style="font-family:arial;color:#990000;"&gt;Related Topics&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span&gt;&lt;span&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/06/basics-transaction-response-time.html"&gt;&lt;span style="font-family:arial;"&gt;Transaction Response Time&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span&gt;&lt;span&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;&lt;span style="font-family:arial;"&gt;Content Page - General&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span&gt;&lt;span&gt;&lt;/span&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/6767212759522432339-4342167547113555849?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/4342167547113555849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=4342167547113555849' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4342167547113555849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4342167547113555849'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/06/basics-max-running-vusers-in-analysis.html' title='Basics: Max. Running Vusers in Analysis is different from Vuser Quantity in Controller?'/><author><name>Hs</name><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-7012845963863089068</id><published>2007-06-28T17:42:00.000+08:00</published><updated>2007-06-28T17:57:10.645+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='rmi-java'/><category scheme='http://www.blogger.com/atom/ns#' term='RMI'/><category scheme='http://www.blogger.com/atom/ns#' term='Xbootclasspath'/><title type='text'>Protocols: Java Error - java.lang.NoClassDefFoundError</title><content type='html'>&lt;span style="font-family:arial;"&gt;I had a question from a visitor with regards to a Java error.  The error message is as followed.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#000099;"&gt;java.lang.NoClassDefFoundError: jhook/HookMetaData&lt;br /&gt;            at java.rmi.Naming.lookup(Naming.java)&lt;br /&gt;            at pie.engine.atp.ClientRMI.getRemoteModuleImpl(ClientRMI.java:256)&lt;br /&gt;            at pie.engine.atp.ClientATPRemoteEx.getRemoteModule(ClientATPRemoteEx.java:89)&lt;br /&gt;            at pie.engine.atp.ClientATPRemoteEx.getRemoteModule(ClientATPRemoteEx.java:64)&lt;br /&gt;            at pie.engine.atp.VirtualRemoteServer.setupPingRemote(VirtualRemoteServer.java:102)&lt;br /&gt;            at pie.engine.atp.VirtualRemoteServer.pingServer(VirtualRemoteServer.java:166)&lt;br /&gt;            at pie.engine.atp.CacheTimer$1.run(CacheTimer.java:47)&lt;br /&gt;            at java.util.TimerThread.mainLoop(Timer.java:432)&lt;br /&gt;            at java.util.TimerThread.run(Timer.java:382)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I did not have straight answer for him initially but, he was able to resolve the problem by himself with the following command script (inclusion of the Xbootclasspath).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#000099;"&gt;-Xbootclasspath/p:"D:\Program Files\LoadRunner\classes;D:\Program Files\LoadRunner\classes\srv"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Once that was added, the script worked for him!  Well hope this is useful to anyone that is encountering the same problem. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;color:#660000;"&gt;&lt;strong&gt;Related Topic&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/06/protocols-working-with-corba-java.html" j8rta="0" sdmcf="0"&gt;Working with CORBA-Java&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/protocols-working-with-rmi-java.html"&gt;Working with RMI-Java &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/working-with-java-introduction.html"&gt;Working with Java - Introduction &lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-7012845963863089068?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/7012845963863089068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=7012845963863089068' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7012845963863089068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7012845963863089068'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/06/protocols-java-error.html' title='Protocols: Java Error - java.lang.NoClassDefFoundError'/><author><name>Hs</name><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-1961537838867139936</id><published>2007-06-25T14:58:00.000+08:00</published><updated>2007-06-25T15:49:39.610+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='monitor'/><category scheme='http://www.blogger.com/atom/ns#' term='analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><title type='text'>Monitors: The Other Way? II</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;The organisation that I worked in have frequent port clearance to perform prior the load test and this is often a troublesome matter to do.   As you know that for monitoring to be successful, it requires certain ports to be opened as described in the article titled, "&lt;/span&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/04/tool-for-duplicating-files.html" rel="bookmark"&gt;&lt;span style="font-family:arial;"&gt;Monitors: How does the monitoring work?&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;".  So for this requirement, port-clearance becomes part and parcel of the performance tester job (or for me in particular).  This kind of situation exists for some other organisations too.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;With that, I introduce you to monitor in an alternative way by monitoring locally on the machine and logging the data.  The monitoring fundamental for LoadRunner is almost the same for all monitors, as such, you can collect the performance on the machine locally then port it to Analysis to be imported.  Analysis provide an import feature that allows external monitor to be ported into the results of the load test.  &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;The import feature is straight forward in the usage.  More information (a short one) can be found in the Analysis User Guide that comes along with every installation of LoadRunner.  I would advise the data to be stored into a .csv file for easier import as Analysis can extract the data easily.  &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;An example of collecting data on the local machine for Windows can be found in the article, &lt;a href="http://support.microsoft.com/kb/248345"&gt;"How to create a log using System Monitor in Windows"&lt;/a&gt;.  Another article titled, &lt;a href="http://www.zdnetasia.com/techguide/windows/0,39044904,39233034,00.htm"&gt;"How to create a Performance Monitor log in Windows NT".&lt;/a&gt;  I will come up an example for UNIX in my future post.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Somethings to note, the timing of the graphs may deviate more than often.  What I suggest is try to synchronize the timing of the local machine to the load test results for an accurate reading whenever possible.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;color:#660000;"&gt;&lt;strong&gt;Related Topics&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/05/content-page-monitors.html" rel="bookmark"&gt;&lt;span style="font-family:arial;"&gt;Content Page - Monitors&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/05/monitors-other-way.html" rel="bookmark"&gt;Monitors: The Other Way?&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-1961537838867139936?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/1961537838867139936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=1961537838867139936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/1961537838867139936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/1961537838867139936'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/06/monitors-other-way-ii.html' title='Monitors: The Other Way? II'/><author><name>Hs</name><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-6767212759522432339.post-5985012689881970077</id><published>2007-06-19T22:34:00.000+08:00</published><updated>2007-06-20T00:03:10.576+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='load generator'/><category scheme='http://www.blogger.com/atom/ns#' term='GDI'/><category scheme='http://www.blogger.com/atom/ns#' term='load'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='footprints'/><title type='text'>General: Maximum amount of Vusers generated by a single load generator</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;How many vusers can a Load Generator generate?&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;There is a straight forward answer in this KB article, &lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=11808&amp;Product=LR"&gt;KB 11808, "How many Vusers can run on a given computer"&lt;/a&gt; from Mercury/HP.   Also, you can refer to the following article, &lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=3629&amp;Product=LR"&gt;KB 3629, "Recommended hardware and OS tuning for optimal Vuser performance"&lt;/a&gt; to get information of recommended hardware for vuser performance.   As per metioned in the articles, the question of maximum load relates closely to the CPU and Memory on a given hardware.  &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;Before we dwell deeper into the technical details, it is best to ensure that common blunders are removed, such as, (1) the Controller have sufficient license to run the amount of vusers stated in the Scenario.  (2) Furthermore, ensure that there are no limits enforced on the Load Generators with are configured in the Scenario Settings.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;To start with, we must understand what happens during a scenarion execution.  Refer to &lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/05/general-scenario-execution.html" rel="bookmark" i5d6d="0" ysiu0="0"&gt;General: Scenario Execution&lt;/a&gt; for an understanding of the scenarion execution.  Furthermore, when vusers are executed in a scenario, the vusers are actually running in memory instead of the disk.  That is why memory is an important factor to consider.&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;Also, the article, &lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=10291&amp;Product=LR"&gt;KB 10291, "Vuser Memory requirements - memory footprints"&lt;/a&gt; provides a list of memory footprint of different types of protocols.  This is only a measurement of a simple script of its kind but it can be used to estimate roughly the amount of load generated on a given hardware specification. &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;For Citrix, SAP GUI and RTE, it is closely related to GDI resources.  GDI resources is a hard-coded value in the OS and cannot be changed.  For more information, you can refer to the Microsoft article on &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/gdi_objects.asp"&gt;GDI Objects&lt;/a&gt;.  To monitor GDI resource, you can refer to &lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=30684&amp;Product=LR"&gt;KB 30684, "How to monitor the GDI resources used".&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;If you like to maximize the amount of load that can be generated, you can refer to the following article, &lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=3645&amp;Product=LR"&gt;KB 3645, "How to increase the number of Vusers you can run on a Windows Machine"&lt;/a&gt; by Mercury/HP.  However, this is not applicable to GDI resources-related protocols.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;WIth all suggestions above, the best bet to determine the amount of load generated, is to monitor the Load Generators itself (instead of the machines under load in a load test).&lt;br /&gt;&lt;br /&gt;Take note that the above Mercury/HP links required a valid login to their support site.  Please apply an account with them first before you click on them.&lt;br /&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;Related Topics&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html" i5d6d="0" ysiu0="0"&gt;Content Page - General&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&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/6767212759522432339-5985012689881970077?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/5985012689881970077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=5985012689881970077' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5985012689881970077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5985012689881970077'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/06/general-maximum-amount-of-vusers.html' title='General: Maximum amount of Vusers generated by a single load generator'/><author><name>Hs</name><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-5378081648677117736</id><published>2007-06-18T22:52:00.000+08:00</published><updated>2008-12-09T16:50:23.459+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='transaction response time'/><category scheme='http://www.blogger.com/atom/ns#' term='transaction'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><title type='text'>Basics: Transaction Response TIme</title><content type='html'>&lt;div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;What is Transaction Response Time?&lt;/strong&gt; &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Transaction Response Time represents the time taken for the application to complete a defined transaction or business process.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;Why is important to measure Transaction Response Time?&lt;/strong&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;The objective of a performance test is to ensure that the application is working perfectly under load. However, the definition of “perfectly” under load may vary with different systems.&lt;br /&gt;By defining an initial acceptable response time, we can benchmark the application if it is performing as anticipated. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;The importance of Transaction Response Time is that it gives the project team/ application team an idea of how the application is performing in the measurement of time. With this information, they can relate to the users/customers on the expected time when processing request or understanding how their application performed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;What does Transaction Response Time encompass? &lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;The Transaction Response Time encompasses the time taken for the request made to the web server, there after being process by the Web Server and sent to the Application Server. Which in most instances will make a request to the Database Server. All this will then be repeated again backward from the Database Server, Application Server, Web Server and back to the user. Take note that the time taken for the request or data in the network transmission is also factored in. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;To simplify, the Transaction Response Time comprises of the following: &lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;Processing time on Web Server &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Processing time on Application Server &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Processing time on Database Server &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Network latency between the servers, and the client &lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div align="justify"&gt;The following diagram illustrates Transaction Response Time.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Figure 1 &lt;/span&gt; &lt;img id="BLOGGER_PHOTO_ID_5077420413806951778" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_O2pYmSzohE4/Rnae9wxHvWI/AAAAAAAAABg/0cpikAkK5GM/s400/typical_setup_edit_2.JPG" border="0" /&gt;&lt;span style="font-family:arial;"&gt;Transaction Response Time = (t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + t9) X 2&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Note:&lt;br /&gt;Factoring the time taken for the data to return to the client.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;How do we measure?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Measuring of the Transaction Response Time begins when the defined transaction makes a request to the application. From here, till the transaction completes before proceeding with the next subsequent request (in terms of transaction), the time is been measured and will stop when the transaction completes.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Differences with Hits Per Seconds&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Hits per Seconds measures the number of “hits” made to a web server. These “hits” could be a request made to the web server for data or graphics. However, this counter does not represent well to users on how well their applications is performing as it measures the number of times the web server is being accessed.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;How can we use Transaction Response Time to analyze performance issue?&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;Transaction Response Time allows us to identify abnormalities when performance issues surface. This will be represented as slow response of the transaction, which differs significantly (or slightly) from the average of the Transaction Response Time. &lt;/p&gt;&lt;p&gt;With this, we can further drill down by correlation using other measurements such as the number of virtual users that is accessing the application at the point of time and the system-related metrics (e.g. CPU Utilization) to identify the root cause. &lt;/p&gt;&lt;p&gt;Bringing all the data that have been collected during the load test, we can correlate the measurements to find trends and bottlenecks between the response time, the amount of load that was generated and the payload of all the components of the application.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;How is it beneficial to the Project Team?&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;Using Transaction Response Time, Project Team can better relate to their users using transactions as a form of language protocol that their users can comprehend. Users will be able to know that transactions (or business processes) are performing at an acceptable level in terms of time. &lt;/p&gt;&lt;p&gt;Users may be unable to understand the meaning of CPU utilization or Memory usage and thus using a common language of time is ideal to convey performance-related issues. &lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;Related Topics:&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;Content Page - General&lt;/a&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt; &lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-5378081648677117736?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/5378081648677117736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=5378081648677117736' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5378081648677117736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5378081648677117736'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/06/basics-transaction-response-time.html' title='Basics: Transaction Response TIme'/><author><name>Hs</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_O2pYmSzohE4/Rnae9wxHvWI/AAAAAAAAABg/0cpikAkK5GM/s72-c/typical_setup_edit_2.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-7523806711021795603</id><published>2007-06-17T15:26:00.000+08:00</published><updated>2007-06-17T16:16:43.557+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='monitor'/><category scheme='http://www.blogger.com/atom/ns#' term='sitescope'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><title type='text'>Products: SiteScope</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;SiteScope is another Mercury/HP product that provides agentless monitoring to the users. Agentless monitoring in this context means that there is no need to have additional installation of components to the target servers to perform monitoring.&lt;/span&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Similar to the LoadRunner Controller, SiteScope requires the designated server to be able to perform monitoring of its own which SiteScope will be able to draw data from it. Depending on the user, they have a choice of using SiteScope to perform the monitoring or use the Controller. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Below is a list of links written by Charles Laudia that provides SiteScope-related information. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://laudia.ath.cx/sites/charles/MyBlog/Lists/Posts/Post.aspx?ID=2"&gt;&lt;span style="font-family:arial;"&gt;What is SiteScope?&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://laudia.ath.cx/sites/charles/MyBlog/Lists/Posts/Post.aspx?ID=3"&gt;&lt;span style="font-family:arial;"&gt;What are SiteScope components?&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;a href="http://laudia.ath.cx/sites/charles/MyBlog/Lists/Posts/Post.aspx?ID=4"&gt;&lt;span style="font-family:arial;"&gt;How does SiteScope work?&lt;/span&gt;&lt;/a&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://laudia.ath.cx/sites/charles/MyBlog/Lists/Posts/Post.aspx?ID=5"&gt;&lt;span style="font-family:arial;"&gt;How does the licensing work in SiteScope?&lt;/span&gt;&lt;/a&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://laudia.ath.cx/sites/charles/MyBlog/Lists/Posts/Post.aspx?ID=6"&gt;&lt;span style="font-family:arial;"&gt;SiteScope for Windows QuickStart&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#990000;"&gt;&lt;strong&gt;Related Topics&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-products.html"&gt;Content Page - Products&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;a href="http://laudia.ath.cx/sites/charles/MyBlog/Lists/Posts/Post.aspx?ID=2"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-7523806711021795603?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/7523806711021795603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=7523806711021795603' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7523806711021795603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7523806711021795603'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/06/products-sitescope.html' title='Products: SiteScope'/><author><name>Hs</name><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-5577325337786861127</id><published>2007-06-08T20:58:00.000+08:00</published><updated>2007-06-08T22:58:53.880+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='recording'/><category scheme='http://www.blogger.com/atom/ns#' term='export'/><category scheme='http://www.blogger.com/atom/ns#' term='file download'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><category scheme='http://www.blogger.com/atom/ns#' term='Vugen'/><title type='text'>Working with Web (HTTP/HTML) V: File Download/Export</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Frequently, I've observed that there are always questions relating to file download functionalities or file export not being recorded by Vugen for Web (HTTP/HTML) protocol in Web applications, such as clicking a link and the file will be downloaded.  &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;In this article, I will describe the possibilities of the problem based on my experiences.  We will elaborate using a Winword file.  &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;When you click on the link or button to access the file, the file gets loaded in the browser.  From here, the business process requires you to click on a link to export it or save it to the local machine.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;There are two possibilities that will happen.   The Winword is either saved over the network or at the OS level.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;In the context of network level, the client makes a request to the server (as per norm) to download the file which translates to network traffic going to and fro between the client and server.  This will be recorded.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;In the context of OS level, the client issues a OS command to "save-as" the file from a temporary location (e.g. Temporary Internet Folder) to a defined location.  Why is that so?  Sometimes, the file is actually saved in the temporary folder in the first file download request which is viewed in the browser and the subsequent "export" command is actually an OS command to retrieve the file from the temporary location.  This usually happens for Web applications that requires another application, in this example (Winword Viewer) to be launched prior the file to be viewed in the browser.  &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Therefore, in the two situations, you may want to know when the file is actually downloaded.  And for this, I would recommend turing on the Full Extended Log to dig further.  Usually for file downloads, the data should be represented in mixed chunk of characters (or what we defined them as binaries) in the Full Extended Log.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;However, before you start with digging the logs, I would also recommend you to look at this previous article, "&lt;a href="http://loadrunnertnt.blogspot.com/2007/04/loadrunner-basics-protocols.html"&gt;Protocols: Working with Web (HTTP/HTML)&lt;/a&gt;" that have recording solutions for Web (HTTP/HTML) protocols.  This will at least scope the problem to application related or configuration setup in Vugen.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;color:#990000;"&gt;&lt;strong&gt;Related Topics&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-protocols.html"&gt;Content Page - Protocols&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/04/loadrunner-basics-protocols.html"&gt;Protocols: Working with Web (HTTP/HTML)&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-5577325337786861127?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/5577325337786861127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=5577325337786861127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5577325337786861127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5577325337786861127'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/06/working-with-web-httphtml-v-file.html' title='Working with Web (HTTP/HTML) V: File Download/Export'/><author><name>Hs</name><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-6767212759522432339.post-4951052642156341421</id><published>2007-06-06T17:14:00.000+08:00</published><updated>2007-06-06T17:30:59.707+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtual machines'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='vmware'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><title type='text'>General: Virtualization with LoadRunner</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;There was the question posted in the Yahoo discussion group on the topic of virtualization with LoadRunner. That is to use virtualization tools such as VmWare and its support and compatibility with LoadRunner.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;James Pulley who often posts in the group came together a list of recommendations with regards to his experience in such a topic &lt;a href="http://tech.groups.yahoo.com/group/LoadRunner/message/22624"&gt;here&lt;/a&gt;. The recommendations consist of what could be installed on the virtual machines. I personally appreciated that he put in these information.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;I believed that the recommendations will be very useful for individuals or organisations looking for some answers with the proliferation of the virtualization tools and therefore extracted the content of the discussion and publish here.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;The recommendation by James were in order of the least influenced to the most influenced by virtualization.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;em&gt;Analysis&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;The core issue associated with virtualization is the state of the virtualized system clock which is inconsistent in operation, so much so that time critical events do not illustrate reliable behavior Mercury &lt;em&gt;Analysis&lt;/em&gt;. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;This is a very easily virtualized tool. There are no time critical components associated with the analysis engine, since all of the data has been collected by other hosts during the execution of the performance test. This virtualized instance works best when the data store for the testr esults is in a Microsoft SQL Server database as opposed to the default datastore of a Microsoft Access formatted data file. With the change inl icensing with 8.1, this item can be promiscuous in its distribution and is no longer limited to just a single copy with a controller purchase.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;em&gt;LoadRunner Virtual User Generator&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;As the workbench for the script development, there are very few time critical events associated with the development and the testing of scripts. Virtualized forms of VUGEN work best on platforms which have hardwarevirtual machine extensions, such as the latest versions of the Intel CoreDuo processor and their AMD equivalents. Hyperthreaded machines seem to show in consistent performance as well - There is a knowledge base article on this hyperthreaded issue in the Mercury knowledge base. Timing may be a little off in the log due to the clock issue noted above, but other than thisissue, the VUGEN operates very well in a virtualized form. As with the Analysis engine, with the change in licensing with 8.1, this item can be promiscuous in its distribution and is no longer limited to just a singlecopy with a controller purchase.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;em&gt;LoadRunner Controller&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;As we move into the controller timing becomes a more critical item. The controller itself can be virtualized without an issue, but because thetiming record information collected is as an offset to the beginning of thetest, an inconsistent clock on the controller can become an issue formonitor data with offset timestamps may not reflect the actual system clock. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;em&gt;Load Generator/Injector&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;This is a layer which suffers from the most influence from the inconsistent clock issue for time critical events within a virtual machine and of all ofthe layers, this is the one which should be virtualized the least. The best test design would dictate that all of your generators have an identical hardware and software profile, a very difficult item to achieve invirtualized form which suffers from a virtualized CPU and a virtualized system clock.This time critical items is not something which would just impact LoadRunner. It also impacts other time critical processes, such as inability to run some functions for conferencing in virtualized PBXs.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;color:#990000;"&gt;&lt;strong&gt;Related Topics:&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;References extracted from the discussion topic:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://www.vmware.com/pdf/vmware_timekeeping.pdf"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://www.vmware.com/pdf/vmware_timekeeping.pdf"&gt;http://www.vmware.com/pdf/vmware_timekeeping.pdf&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://kb.vmware.com/selfservice/viewContent.do?externalId=1420"&gt;&lt;span style="font-family:arial;"&gt;http://kb.vmware.com/selfservice/viewContent.do?externalId=1420&lt;/span&gt;&lt;/a&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://msmvps.com/blogs/rexiology/archive/2006/12/21/clock-in-a-linux-guest-"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://msmvps.com/blogs/rexiology/archive/2006/12/21/clock-in-a-linux-guest-runs-more-slowly-or-quickly-than-real-time.aspx"&gt;http://msmvps.com/blogs/rexiology/archive/2006/12/21/clock-in-a-linux-guest-&lt;/span&gt;&lt;span style="font-family:arial;"&gt;runs-more-slowly-or-quickly-than-real-time.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://www.mydigitallife.info/2006/04/12/freebsd-60-on-vmware-server-time-and-clock-slow-down/"&gt;http://www.mydigitallife.info/2006/04/12/freebsd-60-on-vmware-server-time-an&lt;/span&gt;&lt;span style="font-family:arial;"&gt;d-clock-slow-down/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;Content Page - General&lt;/a&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/6767212759522432339-4951052642156341421?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/4951052642156341421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=4951052642156341421' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4951052642156341421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4951052642156341421'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/06/general-virtualization-with-loadrunner.html' title='General: Virtualization with LoadRunner'/><author><name>Hs</name><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-6767212759522432339.post-3951707030313114077</id><published>2007-06-01T14:52:00.000+08:00</published><updated>2007-06-01T14:55:20.741+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='CORBA-java'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><category scheme='http://www.blogger.com/atom/ns#' term='protocols'/><title type='text'>Protocols: Working with CORBA-Java</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;The &lt;a href="http://www.myloadtest.com"&gt;blog&lt;/a&gt; by Stuart Moncrieff has great resources on load testing and particularly one of them is CORBA-Java. It comes really handy with a downloadable document at the end of the article and when Java-related protocol resources are hard to find.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;The article "&lt;a href="http://www.myloadtest.com/loadrunner-tips-for-corba/"&gt;Tips for Load Testing CORBA Applications with LoadRunner&lt;/a&gt;" covers recording, replaying, workarounds and scripting.  Click on the link &lt;a href="http://www.myloadtest.com/loadrunner-tips-for-corba/"&gt;here&lt;/a&gt; to be redirected.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;color:#660000;"&gt;&lt;strong&gt;Related Topics&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-protocols.html"&gt;Content Page - Protocols&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt; &lt;/p&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-3951707030313114077?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/3951707030313114077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=3951707030313114077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3951707030313114077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3951707030313114077'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/06/protocols-working-with-corba-java.html' title='Protocols: Working with CORBA-Java'/><author><name>Hs</name><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-6767212759522432339.post-5360101728807157009</id><published>2007-05-31T12:17:00.000+08:00</published><updated>2008-12-09T16:50:23.795+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diagnostics'/><title type='text'>Products: Diagnostics</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;The Mercury Diagnostics Software is a standalone software of its own that is functional by itself. Its main functionality is to profile the J2EE, .NET or ERP/CRM application and allowing drill down of the modules to understand the actual problem cause (depending on what you’ve purchased and installed).&lt;br /&gt;&lt;br /&gt;If you would like to hear from the sales, click &lt;a href="http://www.mercury.com/us/products/diagnostics/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;The discussion here will be specified to performance testing (LoadRunner/Performance Center) and J2EE.&lt;br /&gt;&lt;br /&gt;The Diagnostics setup comprises of the Probe/Profiler and the Server (Commander). Note that Probe and Profiler will be use interchangeably in this article. Previous version of Diagnostics, 4.2 and earlier have the Probe/Mediator/Commander however that was been incorporated into just the Probe and Commander. Note as of this writing, the latest Diagnostics is 6.5&lt;br /&gt;&lt;br /&gt;The Profiler/Probe is also able to function on its own by collecting data of the instrumented application server. This can be displayed via the browser via port 35000 by default or the Java Profiler application. Built together with the Diagnostics Server, the data collected are sent to the server for reporting and display.&lt;br /&gt;&lt;br /&gt;In order to make them work, the application server must be instrumented for the modules to be profiled. This is done by adding an additional code in the startup script for the application server. Instructions are detailed for each type of application server (e.g. &lt;a href="http://commerce.bea.com/index.jsp?DL=www-header"&gt;BEA WebLogic&lt;/a&gt;, &lt;a href="http://www.ibm.com/software/websphere"&gt;IBM WebSphere&lt;/a&gt;, etc). A further description of how they work is detailed in the vendor website &lt;a href="http://www.mercury.com/us/products/diagnostics/works.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://commerce.bea.com/products/weblogicplatform/weblogic_prod_fam.jsp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5070577102463367698" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_O2pYmSzohE4/Rl5PAnaO-hI/AAAAAAAAAAs/dQ-eI7RAnZA/s320/BEA.GIF" border="0" /&gt;&lt;/a&gt; &lt;div align="justify"&gt;&lt;a href="http://www.ibm.com/software/websphere"&gt;&lt;img id="BLOGGER_PHOTO_ID_5070575891282590194" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_O2pYmSzohE4/Rl5N6HaO-fI/AAAAAAAAAAc/FjLNssLzLgc/s320/ibm-logo.gif" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;So with Diagnostics, how does it complement LoadRunner? LoadRunner does not report specified/drill down to module level, or provide information of problematic modules (that are causing the bottleneck). It only reports system bottleneck in a bigger picture, such as CPU, Memory or Disk usage. With Diagnostics, you can profile modules that are causing the bottlenecks and determine the next course of action. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Significant limitations to note, Diagnostics can report only modules/calls that are made on the Application Server. Therefore, Store Procedure Calls on the Database Servers will not be reported during the profiling. However, note that this is not the only limitation listed.&lt;br /&gt;&lt;br /&gt;Prior to the instrumentation, enquire the support level for the probe with the Application Server with Mercury/HP support. They will be able to advise if the instrumentation is supported or not supported. But having said that, the instrumentation and support level is quite dependant on the type of JDK that the Application Server is running on (point to note).&lt;br /&gt;&lt;br /&gt;Also, most of the time, when the Probes are not reporting any data, it would most likely be due to the application script not being instrumented properly. In such events, review the startup script of the application servers again.&lt;br /&gt;&lt;br /&gt;To start been familiarizing the Diagnostics Software, it will be good to spend a day or two to download a J2EE sample application server and instrument it. &lt;a href="http://commerce.bea.com/index.jsp?DL=www-header"&gt;BEA WebLogic&lt;/a&gt; is a good source that provide sample application server.&lt;br /&gt;&lt;br /&gt;The licensing is bounded by the number of probes that can be installed and the number of Diagnostics Server that is been implemented. This license should not be confused with the one associated with LoadRunner/PC. In order for Diagnostics to work with LoadRunner/PC, a separate license called Diagnostics Module License is required. This will allow the reporting of the Diagnostic server to be incorporated into the load test result.&lt;br /&gt;&lt;br /&gt;When working with LoadRunner/PC, always ensure that the Diagnostics setup is fully functional before adding the Diagnostics Module into the LoadRunner monitoring. This will at least scope the problem cause when troubleshooting.&lt;br /&gt;&lt;br /&gt;Lastly, in previous version of LoadRunner, Java Performance Monitoring was offered to the user. However the installation as described in the documentation is inconsistent. Moving forward, J2EE Diagnostics is to “replace” its processor, Java Performance Monitoring.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;color:#660000;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;color:#660000;"&gt;&lt;strong&gt;Related Topics&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-products.html"&gt;Content Page - Products&lt;/a&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/6767212759522432339-5360101728807157009?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/5360101728807157009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=5360101728807157009' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5360101728807157009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5360101728807157009'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/products-diagnostics.html' title='Products: Diagnostics'/><author><name>Hs</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_O2pYmSzohE4/Rl5PAnaO-hI/AAAAAAAAAAs/dQ-eI7RAnZA/s72-c/BEA.GIF' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-5708172036266154731</id><published>2007-05-28T17:56:00.001+08:00</published><updated>2007-05-28T18:01:15.680+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='controller'/><category scheme='http://www.blogger.com/atom/ns#' term='abnormal'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><category scheme='http://www.blogger.com/atom/ns#' term='crash'/><category scheme='http://www.blogger.com/atom/ns#' term='Vugen'/><title type='text'>General: Vugen/Controller Crash or Abnormal Behavior</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;In the event that Vugen, Mercury/HP has provided a document that assists the user in troubleshooting the problem. The document, &lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=31731&amp;Product=LR"&gt;KB 31731&lt;/a&gt; provided is rather old but still relevant.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Download the document and follow the steps sequentially not to miss any of it. Do take note on the following three which you can start with which usually resolves the problem.&lt;br /&gt;&lt;br /&gt;1. Login as administrator&lt;br /&gt;2. Run the batch file&lt;br /&gt;3. Reinitializing the ini file&lt;br /&gt;&lt;br /&gt;The definition of administrator here is it is a default administrator on the OS without any changes to its roles or privileges.&lt;br /&gt;&lt;br /&gt;Similarly, for crashing or abnormal behavior of Controller, you can refer to &lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=12532&amp;amp;Product=LR"&gt;KB 12532&lt;/a&gt;. Take note that for both KB, you will need a valid login to the support website to access them.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;On top of the list of solutions provided by Mercury/HP, you may want to verify the following too.&lt;br /&gt;&lt;br /&gt;1. Ensure that there are no other Mercury/HP product (especially QTP or WinRunner). It is advisable to install only LoadRunner components on the machine. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;2. Ensure that that DEP (Data Execution Prevention) is disabled for Vugen and the client program in Windows XP SP2. More details can be found in &lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=41489&amp;Product=LR"&gt;KB 41489&lt;/a&gt;. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;3. When working with Web (HTTP/HTML) protocol, it may be the application that is causing the problem (crash/hang) rather than Vugen. Under this circumstances, refer to the article, &lt;a href="http://loadrunnertnt.blogspot.com/2007/04/loadrunner-basics-protocols.html"&gt;"Working with Web(HTTP/HTML)"&lt;/a&gt; to troubleshoot the problem.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;If all else fails, the best suggestion is to get a “clean” machine and login with default local administrator and perform a reinstallation. The definition of “clean” means that the machine OS is not built on a clone image.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;color:#660000;"&gt;&lt;strong&gt;Related Topics&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;Content Page - General&lt;/a&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-5708172036266154731?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/5708172036266154731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=5708172036266154731' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5708172036266154731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5708172036266154731'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/general-vugencontroller-crash-or.html' title='General: Vugen/Controller Crash or Abnormal Behavior'/><author><name>Hs</name><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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-2601978745223201803</id><published>2007-05-22T20:20:00.000+08:00</published><updated>2007-05-22T20:25:59.056+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Session ID'/><category scheme='http://www.blogger.com/atom/ns#' term='Full Extended Log'/><category scheme='http://www.blogger.com/atom/ns#' term='replay'/><category scheme='http://www.blogger.com/atom/ns#' term='NTLM'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><category scheme='http://www.blogger.com/atom/ns#' term='Vugen'/><category scheme='http://www.blogger.com/atom/ns#' term='Failure'/><category scheme='http://www.blogger.com/atom/ns#' term='certificates'/><title type='text'>Scripts: Replay Failure – Use Full Extended Log!</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Usually after recording, you would like to replay the script to ensure that it is workable. More than ever, if it is Web Application (or other application) that have a login and DB connection mechanism, it will fail.&lt;br /&gt;&lt;br /&gt;The above can be caused by various problems that it will be difficult to list them all out in this article. But for a start, the most common for Web Applications are:&lt;br /&gt;&lt;br /&gt;1. Session ID&lt;br /&gt;2. Authentication (Basic, NTLM or Digest)&lt;br /&gt;3. Certificates&lt;br /&gt;&lt;br /&gt;When the errors happened, amateur users of LoadRunner usually do not know how to follow up.&lt;br /&gt;&lt;br /&gt;My recommendation for newbie when such things happened is to turn on the Full Extended Log and trace the possible problem areas. The Full Extended Log provides information that you can trace what is happening to the data being sent by the client and responded from the server. In this way, you will be able to determine if the correct request (in web application context) is sent to the server and if a valid respond is been sent back from the server.&lt;br /&gt;&lt;br /&gt;Trace carefully every request made and the response. They will return header information, actual data in text or binary, and many other more information. A good knowledge of HTTP response will be very useful when working in Web (HTTP/HTML) protocols.&lt;br /&gt;&lt;br /&gt;My other recommendation is not too over rely on the Runtime Viewer. The main problem is that it may not support all forms of HTTP/HTML for display and thus unable to provide much assistance to you. More details of the limitations of Runtime Viewer can be found in &lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=14094&amp;amp;Product=LR"&gt;“What are the limitations of the Run-Time Viewer”&lt;/a&gt; from Mercury/HP support website.&lt;br /&gt;&lt;br /&gt;The Full Extended Log must be enabled with the following three options to be really useful:&lt;br /&gt;&lt;br /&gt;1. Parameter substitution&lt;br /&gt;2. Data returned by server&lt;br /&gt;3. Advance data trace&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Take note that Full Extended Log is applicable to almost all protocols and it's a useful tool to diagnose problem during script replay failure.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;However, take note that Full Extended Log will generate a huge amount of log file that may be resource intensive for a big script. And when it is been ported over to a scenario execution, it will manifest to become a bigger resource/performance issue.&lt;br /&gt;&lt;br /&gt;Therefore, prior to a scenario execution, remember to turn off the Full Extended Log unless you have a purpose for it.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;color:#660000;"&gt;&lt;strong&gt;Related Topics&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-scripts.html"&gt;Content Page - Scripts&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-2601978745223201803?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/2601978745223201803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=2601978745223201803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2601978745223201803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2601978745223201803'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/scripts-replay-failure-use-full.html' title='Scripts: Replay Failure – Use Full Extended Log!'/><author><name>Hs</name><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-6767212759522432339.post-3756468066557182688</id><published>2007-05-21T21:39:00.000+08:00</published><updated>2007-05-21T21:43:25.862+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Message'/><title type='text'>Message: Change of WebSite Template</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Hi Visitor,&lt;br /&gt;&lt;br /&gt;If you are a returning visitor, you might have noticed that the layout of this blog have changed. Well not really a perfect one, but sufficient for you to navigate (with the search box and menu on the top). Feel free to comment or suggest a good template to contribute effort of improving this website with content and user interface.&lt;br /&gt;&lt;br /&gt;Regards&lt;br /&gt;Hs&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/6767212759522432339-3756468066557182688?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/3756468066557182688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=3756468066557182688' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3756468066557182688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3756468066557182688'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/message-change-of-website-template.html' title='Message: Change of WebSite Template'/><author><name>Hs</name><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-1065922974271248442</id><published>2007-05-20T16:34:00.001+08:00</published><updated>2007-05-20T16:59:36.060+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='recording'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='RMI'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><category scheme='http://www.blogger.com/atom/ns#' term='Vugen'/><title type='text'>Working with Java – Introduction</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;LoadRunner provides the capability of load testing Java-related applications. In this article, we will provide a brief introduction to working with Java related applications in LoadRunner.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;[1]&lt;br /&gt;Before we start choosing Java-related protocols to perform recording, you will need to understand the protocol that the Java application is using to communicate with the server. It maybe the case where the Java application is communicating via HTTP rather than RMI-Java, etc… Refer to the concept in a previously written article, &lt;a href="http://loadrunnertnt.blogspot.com/2007/04/working-with-http.html"&gt;"Protocols: What Protocol to use?"&lt;/a&gt;. Take note that it is the fundamental of using LoadRunner correctly.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;If you have identified that the application is communicating with a Java related protocol, you can safely proceed to choose the relevant Java protocol.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[2]&lt;br /&gt;For Java related protocol, the recording works in the same way as .NET and COM/DCOM protocol. All of them share the same characteristics but I will specify to just Java and only Java recording. Pure Java scripting will be excluded in this article.&lt;br /&gt;&lt;br /&gt;Unlike .NET and COM/DCOM, Vugen provides an interface to manage and filter the classes and methods via the GUI which is very convenient to the user. Hopefully, Mercury/HP may consider that in future.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[3]&lt;br /&gt;Java recording is not as straight-forward as popular (simple) protocols such as Web (HTTP/HTML) and the following lists out the items to take note when working with Java.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#990000;"&gt;&lt;strong&gt;Classes and Methods&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;1. You will need the knowledge of the classes and methods prior recording; and usually this information is held by the developers.&lt;br /&gt;&lt;br /&gt;2. The need to know the classes and recording is crucial because, LoadRunner (Vugen) implements a hooking mechanism to hook the traffic on the classes. Not knowing or minimal knowledge will definitely delay the recording.&lt;br /&gt;&lt;br /&gt;3. LoadRunner does have a default hook for Java but if you have additional classes that you need to record. The knowledge of the classes will come important here.&lt;br /&gt;&lt;br /&gt;4. Also, by defining all classes to hook, is a wasteful effort as you maybe recording classes’ activity that is not useful to the load test. They may comprise of GUI clicks or client activities.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#990000;"&gt;&lt;strong&gt;JDK and JRE&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. You will need to know the JDK of the application. By default, Sun Microsystems JDK (SDK) works with LoadRunner.&lt;br /&gt;&lt;br /&gt;2. You can check with Mercury/HP on the support for other JDKs (IBM, etc.). However, usually they are not supported.&lt;br /&gt;&lt;br /&gt;3. The least supported JDK is JDK 1.3 for LoadRunner 8.1. Take note that the recording is still very dependant on the JDK version installed. That is, if your application is JDK 1.6, you will have to install that version on the recording machine.&lt;br /&gt;&lt;br /&gt;4. JRE is insufficient for the recording to be successful. JDK is required to be installed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#990000;"&gt;&lt;strong&gt;Recording-specified&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;1. Vugen implements an API that hooks into the selected classes and record the traffic. Therefore, as pointed earlier, knowing the correct classes to hook is crucial.&lt;br /&gt;&lt;br /&gt;2. GUI classes or client-side activities maybe recorded via the hook. However, this is not recommended as it does not contribute to the load generation towards the server.&lt;br /&gt;&lt;br /&gt;3. For recording specifies, I’ve written another article that specifies the steps and the implications of each step in this article, &lt;a href="http://loadrunnertnt.blogspot.com/2007/05/protocols-working-with-rmi-java.html"&gt;"Working with RMI-Java" &lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;Scenario Execution&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;1. Prior the scenario execution in the Controller, ensure that JDK have be installed on the Load Generators. The scripts sent (refer to the article, &lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-scenario-execution.html"&gt;"General: Scenario Execution"&lt;/a&gt; for more information) are Java scripts, and require JVM to run.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;[4]&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#990000;"&gt;&lt;strong&gt;Documentations&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;If you like to know more information from the official provider, you can refer to the Vugen User Guide that is provided in each installation of LoadRunner in PDF format. Specifically the following chapters:&lt;br /&gt;&lt;br /&gt;1. All chapters in Part II: Working with Java Language Protocols&lt;br /&gt;2. Chapter 18: Developing Corba-Java Vuser Script&lt;br /&gt;3. Chapter 19: Developing RMI-Java Vuser Scripts.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;Sample&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Also, if you like to get a feel of working with Java protocol, I would recommend using the sample example provided with every installation of LoadRunner. It will at least get you understand what will happened and the expected output when recording Java language applications.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;[5]&lt;br /&gt;In summary, we’ve covered the workings of Java language protocol in LoadRunner, things to watch out and additional resources to pertaining to the topic. It should be sufficient for you to work with Java language protocols at minimal difficulty.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;Related Topic:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-protocols.html"&gt;Content Page – Protocols &lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/protocols-working-with-rmi-java.html"&gt;Working with RMI-Java&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-1065922974271248442?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/1065922974271248442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/1065922974271248442'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/working-with-java-introduction.html' title='Working with Java – Introduction'/><author><name>Hs</name><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></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-759215069568952973</id><published>2007-05-19T16:15:00.000+08:00</published><updated>2007-05-20T17:03:24.419+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='winsock'/><category scheme='http://www.blogger.com/atom/ns#' term='protocol'/><title type='text'>Protocols: Working with Winsock</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://www.loadtester.com"&gt;LoadTester&lt;/a&gt; have another article that discuss interestingly on the complex protocol Winsock. Click &lt;a href="http://www.loadtester.com/whitepapers/LR_Winsock.pdf"&gt;here&lt;/a&gt; to download the article.&lt;br /&gt;&lt;br /&gt;The article give a brief run through of (1) what is Winsock protocol, (2) the workings of Winsock, (3) how is it being used under what situations and (4) some exercises.&lt;br /&gt;&lt;br /&gt;Although the article provides a brief description of the Winsock protocol, it at least helps to clarify some questions that &lt;a href="http://www.mercury.com"&gt;Mercury/HP&lt;/a&gt; left out in their knowledge base and documentations.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;Related Topics:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-protocols.html"&gt;Content Page – Protocols&lt;/a&gt;&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/6767212759522432339-759215069568952973?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/759215069568952973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=759215069568952973' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/759215069568952973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/759215069568952973'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/protocols-working-with-winsock.html' title='Protocols: Working with Winsock'/><author><name>Hs</name><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-6767212759522432339.post-6168449371095420710</id><published>2007-05-17T10:17:00.000+08:00</published><updated>2007-05-21T20:11:15.766+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='monitor'/><category scheme='http://www.blogger.com/atom/ns#' term='counter'/><category scheme='http://www.blogger.com/atom/ns#' term='MS SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft SQL Server'/><title type='text'>Monitors: MS SQL Server</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://www.loadtester.com"&gt;LoadTester&lt;/a&gt; also provides another white paper that discussed about the performance counters you can utilize for monitoring SQL Server. I've extracted the portion of it and paste it here which will be useful first-hand for anyone that requires to monitor SQL Server. The list they provided however, is a recommendation list and you may include more counters based on your requirements.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;em&gt;Cache Hit Ratio (SQLServer: Cache Manager object):&lt;/em&gt; This is the % of time that a record was found in cache. The recommend cache hit ratio is &lt;strong&gt;90% or more&lt;/strong&gt;. For typical OLTP systems, the recommended value is 99%. This can be achieved by adding more RAM to the system and a value of 90% is considered a low number.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;In OLAP systems, this % can be much less due to the nature of how OLAP systems work. Hence, the recommended ratio of 90%.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;em&gt;User Connections (SQLServer: General Statistics object):&lt;/em&gt; this is the value of number of users connected to this database. Note that this value is the total number of user connections and not the total number of users. By default, SQL Server is configured for &lt;strong&gt;255 user connections&lt;/strong&gt;. If this value is exceeded, then increase the value of "Maximum Worker Threads" to a number higher then 255. As a rule, this value should be higher then the number of user connections. You can also set the maximum concurrent user connections to ‘0’. Which means that the number of connections is limited only by the SQL Server maximum.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;em&gt;Transactions/sec (SQLServer: Databases object):&lt;/em&gt; The number of transactions started for the database. These transactions come in the form of requests from client machines that are services by the database. Having too many concurrent transactions can cause locking problems and incur additional overhead.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;em&gt;Data File(s) Size (KB) (SQLServer: Database object):&lt;/em&gt; The cumulative size of the data fiels that reside on a disk array. This counter is useful in tracking disk usage growth for capacity planning studies.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;em&gt;Percent Log Used (SQLServer: Databases object):&lt;/em&gt; The percentage of the log that is used. This counter is helpful in tracking log growth in capacity planning studies.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;The actual document can be found &lt;a href="http://www.loadtester.com/whitepapers/sql2000_perfmon.pdf"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Related Topics:&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-monitors.html"&gt;Content Page - Monitors&lt;/a&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/6767212759522432339-6168449371095420710?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/6168449371095420710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=6168449371095420710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6168449371095420710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6168449371095420710'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/monitors-ms-sql-server.html' title='Monitors: MS SQL Server'/><author><name>Hs</name><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-6767212759522432339.post-6929833583627778415</id><published>2007-05-16T17:23:00.001+08:00</published><updated>2007-05-21T20:11:38.145+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ctrx_sync_on_bitmap'/><category scheme='http://www.blogger.com/atom/ns#' term='citrix agent'/><category scheme='http://www.blogger.com/atom/ns#' term='protocol'/><category scheme='http://www.blogger.com/atom/ns#' term='ctrx_sync_on_window'/><category scheme='http://www.blogger.com/atom/ns#' term='record'/><category scheme='http://www.blogger.com/atom/ns#' term='citrix'/><category scheme='http://www.blogger.com/atom/ns#' term='Vugen'/><title type='text'>Protocols: Working with Citrix II - Best Practices</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;I’ve recently come across a &lt;a href="http://www.loadtester.com/whitepapers/Citrix_LoadRunner.pdf"&gt;white paper&lt;/a&gt; regarding load-testing Citrix, provided by &lt;a href="http://www.loadtester.com"&gt;LoadTester Incorporated&lt;/a&gt;. I believed that it is very useful for those that are having problems with the working with Citrix as it covers quite a few aspects in this area. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;The &lt;a href="http://www.loadtester.com/whitepapers/Citrix_LoadRunner.pdf"&gt;white paper&lt;/a&gt; covers the following best practices for the following. &lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;Display Settings&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Keyboard Entry versus the Mouse&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;ICA Files&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Randomizing Information &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Debugging Vusers in the Controller &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Generate Snapshot on Error &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Continue on Error &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Scripting without the Citrix Agent &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Scripting with the Citrix Agent &lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;Click &lt;a href="http://www.loadtester.com/whitepapers/Citrix_LoadRunner.pdf"&gt;here&lt;/a&gt; to access the actual document.&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Related Topics:&lt;/span&gt;&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-protocols.html"&gt;Content Page - Protocols&lt;/a&gt;&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/6767212759522432339-6929833583627778415?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/6929833583627778415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=6929833583627778415' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6929833583627778415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6929833583627778415'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/protocols-working-with-citrix-ii-best.html' title='Protocols: Working with Citrix II - Best Practices'/><author><name>Hs</name><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-7658486608588284295</id><published>2007-05-16T09:56:00.000+08:00</published><updated>2007-05-21T20:11:56.117+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='load generator'/><category scheme='http://www.blogger.com/atom/ns#' term='analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='controller'/><category scheme='http://www.blogger.com/atom/ns#' term='scenario'/><category scheme='http://www.blogger.com/atom/ns#' term='temp'/><category scheme='http://www.blogger.com/atom/ns#' term='Vugen'/><title type='text'>General: Scenario Execution</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;em&gt;What happens when the scenario is executed?&lt;/em&gt; Here, we will discuss the basic overview when the scenario starts execution, during and end. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;Prior to the scenario execution, the Load Generators, number of Vusers, the designated monitoring machine, the ramp up timing, so on so forth should be already defined, and we will skip the discussion for it.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;When the scenario starts executing, the Controller dispatches the Vusers (scripts) to the designated Load Generator for execution. The Vusers are then executed on the Load Generator with the pre-defined amount on behalf of the Controller. The data generated by the Load Generator prior Collation process (discussed later) is stored in its default &lt;span style="color:#000099;"&gt;temp&lt;/span&gt; directory. This can be configured before the execution under the Load Generator setup.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Note that if your load test stretches a (1) long duration, (2) contain additional logs or (3) you foresee a large amount of data to be generated, it is advisable to ensure that you have sufficient space for the temp directory in the Load Generator. This also applies to the Controller temp directory. Either increase the disk size for the temp folder or direct it to a folder that has a larger space.&lt;br /&gt;The temp directory of the Controller and Load Generator serves different purposes. For the Controller, it stores the entire result data of the scenario execution whereas, the Load Generator stores the data of its own during the scenario execution.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;During the execution, the real time data of the monitored servers are displayed at the same time displayed in the graphs. This information is logged for further processing when conducting the analyzing. &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;Point to note; as the scripts are sent to the Load Generator to be executed, it must have the same environmental settings of the recorded scripts (in VuGen). For example, if the script was recorded in RMI-Java, JDK exists on the machine that performed the recording. In the same context, the Load Generator will also require the JDK to exist on it for the script to execute properly.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Another example is an activity of uploading of a file by the script. If the script points to a directory that only exists in the recording machine, the Load Generator will require to create the same directory for it to be executed correctly. &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;When errors start to occur during a scenario execution, it is best to determine where the error surface in the following questions.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;1. Does it happen at the start of the scenario execution?&lt;/div&gt;&lt;div align="justify"&gt;2. Does it happen at the middle of the scenario execution?&lt;/div&gt;&lt;div align="justify"&gt;3. If (2), is yes, then how many Vusers were running at that point of time when the errors appeared?&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;With the above, you can guess if the scenario is actually failing due to the following reasons to list a few.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;1. The script is not working properly in the first place or configuration of the script failed.&lt;/div&gt;&lt;div align="justify"&gt;2. The application is experiencing load during the scenario execution.&lt;/div&gt;&lt;div align="justify"&gt;3. Network/server issues not pertaining to load have occured during the scenario execution.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;When the scenario completes, either (1) the Vusers finished execution, (2) you pressed the "Stop" button or (3) the duration of the load test have reached, the Vusers will gradually exit the scenario. Once all Vusers totally exited, the Controller goes into a Collation process. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;In the Collation process, data regarding the execution stored in the temp directory of the Load Generator are been sent back to the Controller to be compiled to one single result data. This is stored in the default folder of the temp directory in Controller, usually in C:\Documents and Settings with the folder name res. The actual file that describes the result is stored as .lrr file extension.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Based on the scenario configuration, the Analysis maybe launched automatically for you to analyze the results directly after the scenario completes. However, you can also choose to launch it manually by double clicking the .lrr file.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;With the above, it concludes the entire scenario execution process.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Related Topics:&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;Content Page - General&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&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/6767212759522432339-7658486608588284295?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/7658486608588284295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=7658486608588284295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7658486608588284295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7658486608588284295'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/general-scenario-execution.html' title='General: Scenario Execution'/><author><name>Hs</name><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-6767212759522432339.post-7756927222708067494</id><published>2007-05-14T21:07:00.000+08:00</published><updated>2007-05-15T09:19:50.729+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diagnostics'/><category scheme='http://www.blogger.com/atom/ns#' term='IE 7'/><category scheme='http://www.blogger.com/atom/ns#' term='IE7'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer 7'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><category scheme='http://www.blogger.com/atom/ns#' term='Vugen'/><title type='text'>General: Working with Web (HTTP/HTML) IV: Internet Explorer 7 Support</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;IE 7 is supported by LoadRunner 8.1 FP4 with an additional patch. The patch can be downloaded from the Mercury/HP support site here.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=48263&amp;amp;Product=LR"&gt;Internet Explorer 7 (IE 7) support for LoadRunner 8.1 Feature Pack 4&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;As of today’s writing, the company has pointed out limitations on the following (taken from the support website)&lt;br /&gt;&lt;br /&gt;1. Some versions of JInitiator may cause IE to crash when recording the Oracle NCA protocol on IE 7 platforms.&lt;br /&gt;2. Cannot record the FTP protocol upload or download operations on IE 7 platforms.&lt;br /&gt;3. Does not support tabbed browsing. If you record using VuGen on IE 7 platforms, then Internet Explorer will open with this feature disabled.&lt;br /&gt;4. The current version of Mercury Diagnostics (4.2) does not support IE 7. Diagnostics version 6.5 will support IE 7.&lt;br /&gt;&lt;br /&gt;Take note that you need LoadRunner 8.1 installed with FP4 before you can apply the IE 7 patch. If not, the patch installation will not work.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Related Topics&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-protocols.html"&gt;Content Page - Protocols&lt;/a&gt;&lt;br /&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/6767212759522432339-7756927222708067494?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/7756927222708067494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=7756927222708067494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7756927222708067494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7756927222708067494'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/general-working-with-web-httphtml-iv.html' title='General: Working with Web (HTTP/HTML) IV: Internet Explorer 7 Support'/><author><name>Hs</name><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-6767212759522432339.post-5594771095736457117</id><published>2007-05-14T17:40:00.000+08:00</published><updated>2007-05-31T12:49:47.836+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dispatcher'/><category scheme='http://www.blogger.com/atom/ns#' term='DPC'/><category scheme='http://www.blogger.com/atom/ns#' term='ISR'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='interrupt'/><title type='text'>General: Understanding Processor - Interrupt Processing</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Interrupts are subjected to priority. The interrupt priority scheme is hardware-determined, but in the interest of portability it is abstracted by the Windows HAL. During interrupt processing, interrupts from lower-priority interrupts are masked so that they remain pending until the current interrupt processing completes. Following interrupt processing during which interrupts themselves are disabled, the operation system returns to its normal operating mode with the processor reset once more to receive interrupt signals. The processor is once again enabled for interrupts. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;Strictly speaking, on an Intel processor, there is a class of interrupts used for switching between the user level and privileged OS code. Although this involves interrupt processing on the Intel microprocessor, we are not referring to that type of interrupts here. Switching privilege levels does not necessarily cause the executing thread to relinquish the processor. However, Windows does classify these OS supervisor call interrupts as context switches. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;In Windows, hardware device interrupts are serviced by an interrupt service routine, or ISR, which is a standard device driver function. Device drivers are extensions of the OS tailored to respond to the specific characteristics of the devices they understand and control. The ISR code executes at the interrupt level priority , with interrupts at the same or lower level disabled. An ISR is high priority by definition since it interrupts the regularly scheduled thread and executes until it voluntarily relinquishes the processor (or itself interrupted by a higher-priority interrupt). &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;The ISR normally signals the device to acknowledge the event, stops the interrupt from occurring, and saves the device status for later processing. It then schedules a deferred procedure call (DPC) to a designated routine that performs the bulk of the device-specified work associated with interrupt processing. DPCs are a special feature of Windows designed to allow the machine to operate enabled for interrupts as much as possible. DPC code executes at a higher priority than other OS privileged modes, but one that does not disable further interrupts from occurring and being serviced. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;The DPC mechanism in Windows keeps the machine running in a state enabled for interrupts as much as possible. This architecture is especially useful with Intel PC hardware where many devices connected to a single PCI bus can share the same Interrupt Request Queue (IRQ) level. DPC routines execute from a separate DPC dispatcher queue, which Windows empties before it calls the Scheduler to re-dispatch an ordinary kernel or application thread. A typical function carried out by a DPC routine is to reset the device for the next operation and launch the next request if one is queued. When the DPC completes, a high-priority kernel or device driver thread then marks the I/O function complete. At the end of this chain events, a waiting thread transitions to the ready state, poised to continue processing now that the I/O it requested has completed. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;When an interrupt occurs, the thread executing loses control of the processor immediately. When the DPC performing the bulk of the interrupt processing completes, the Windows Scheduler checks the Ready Queue again and dispatches the highest-priority thread. The interrupted thread does not necessarily regain control following interrupt processing because a higher-priority task may be ready to run. This is variously known as preemptive scheduling, preemptive multithreading or preemptive multitasking.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;The above was extracted from the book, &lt;a href="http://www.oreilly.com/catalog/w2kperf/toc.html"&gt;Windows 2000 Performance Guide by Mark Friedman &amp;amp; Odysseas Pentakalos&lt;/a&gt;. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Related Topics&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;Content Page - General&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&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/6767212759522432339-5594771095736457117?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/5594771095736457117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=5594771095736457117' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5594771095736457117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5594771095736457117'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/general-understanding-processor_14.html' title='General: Understanding Processor - Interrupt Processing'/><author><name>Hs</name><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-6767212759522432339.post-3862030875989821170</id><published>2007-05-14T13:41:00.000+08:00</published><updated>2007-06-05T23:35:35.659+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processor'/><category scheme='http://www.blogger.com/atom/ns#' term='Threads'/><category scheme='http://www.blogger.com/atom/ns#' term='unvoluntary wait'/><category scheme='http://www.blogger.com/atom/ns#' term='ready queue'/><category scheme='http://www.blogger.com/atom/ns#' term='voluntary wait'/><category scheme='http://www.blogger.com/atom/ns#' term='interrupt'/><title type='text'>General: Understanding Processor - Ready Queue Management</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Think of priority scheduling as the set of rules for ordering the Ready Queue, which is the internal data, structure that points to the threads that are ready to execute. A ready tread (from IE or any other application) transitions directly to the running state, where it executes if no other higher-priority threads are running or waiting. If there is another thread, the Windows Scheduler selects the highest-priority thread in the Ready Queue to run. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;Once a thread is running, it executes continuously on the processor until one of the following events occurs: &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;1. An external interrupt occurs &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;2. The thread voluntarily relinquishes the processor, usually because it needs to perform I/O &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;3. The thread involuntarily relinquishes the processor because it incurred page fault, which requires the system to perform I/O on its behalf &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;4. A maximum uninterrupted execution time limit is reached &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;Interrupts&lt;/span&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;An interrupt is a signal from an external device to the processor. Hardware devices raise interrupts to request immediate servicing. An I/O request to a disk device, for example, once initiated, is processed at the device independently of the CPU. When the device completes the request, it raises an interrupt to a signal the processor that the operation has completed. This signal is treated as a high-priority event: the device is relatively slow compared to the processor, the device needs attention, and some other user may be waiting for the physical device to be free. When the processor recognizes the interrupt request, it: &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;1. Stops whatever it is doing immediately (unless it is already servicing a higher-priority interrupt request) &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;2. Saves the status of the current running thread (including the current values of processor registers, e.g. Program Counter showing the next instruction to be executed and the Stack Pointer pointing to the program’s working storage) in an internal data structure called the Thread Context. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;3. Begins processing the interrupt. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;The thread that was running when the interrupt occurred return to the Ready Queue, and it might not be the thread the Scheduler selects to run following interrupt processing. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Interrupt processing likely adds another thread to the Ready Queue, namely the thread that was waiting for the event to occur. IN Windows, one probable consequence of an interrupt is a reordering of the Scheduler Ready Queue following interrupt processing. The device driver that completes the interrupt processing supplies a boost to the priority of the application thread that transitions from waiting to ready when the interrupt processing completes. Interrupt processing juggles priorities so that the thread made ready to run following interrupt processing is likely to be the highest-priority thread waiting to run in the Ready Queue. Thus, the application thread waiting for an I/O request to complete is likely to receive service at the processor next. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;Voluntary wait&lt;/span&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;A thread voluntarily relinquishes the processor when it issues an I/O request and then waits for the request to complete. Other voluntary waits include a timer wait or waiting for a serialization signal from another thread. A thread issuing a voluntary wait enters the Wait State, causing the Windows Scheduler to select the highest-priority task in the Ready Queue to execute next. The Thread Wait Reason for a thread in a voluntary wait is 7. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;Involuntary wait&lt;/span&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Involuntary waits are most frequently associated with virtual memory management. For example, a thread enters an involuntary wait if the processor attempts to execute an instruction referencing data in buffer that is currently not resident in memory. Since the instruction cannot be executed, the processor generates a page fault interrupt, which Windows must resolve by allocating free page in memory and reading the page containing the instruction or data into memory from disk. The currently running process is suspended and the Program Counter reset to re-execute the failed instruction. The suspended task is placed in an involuntary wait state until the page requested is brought into memory and the instruction that originally failed is executed. At that point, the VM manager component of Windows is responsible for transitioning the thread from wait state back to ready. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;Time allotment exceeded&lt;/span&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;A thread does not need to perform I/O or wait for an event is not allowed to monopolize the processor completely. Without intervention from the Scheduler, some very CPU-intensive execution threads will attempt to do this. A program bug may also cause the thread to go into an infinite loop, in which it attempts to execute continuously. Either way, the Windows Scheduler eventually interrupts the running thread if no other type of interrupt occurs. If the thread does not relinquish the processor voluntarily, the Scheduler eventually forces it to return to the Ready Queue. This form of processor sharing is called time-slicing, and it is designed to prevent a CPU-bound task from dominating the use of the processor for an extended period of time. Without time-slicing, a high-priority CPU-intensive thread could delay other threads waiting in the Ready Queue indefinitely. The Windows Scheduler implements time-slicing by setting a clock timer interrupt to occur at regular intervals to check on the threads that are running. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;When a thread’s allotted time-slice is exhausted, Windows Scheduler interrupts it and looks for another ready thread to dispatch. Of course, if the interrupted thread happens to be the highest-priority thread (or only ready thread), the Scheduler selects it to run again immediately. However, Windows also lowers the likelihood that a CPU-intensive thread will monopolize the processor. This technique of boosting the relative priority of threads waiting on device interrupts and reducing the priority of CPU-intensive threads approximates a mean time to wait algorithm, a technique for maximizing throughput in a multiprogramming environment.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;The above was extracted from the book, &lt;a href="http://www.oreilly.com/catalog/w2kperf/toc.html"&gt;Windows 2000 Performance Guide by Mark Friedman &amp;amp; Odysseas Pentakalos&lt;/a&gt;. &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;Related Topics&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;Content Page - General&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&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/6767212759522432339-3862030875989821170?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/3862030875989821170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=3862030875989821170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3862030875989821170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3862030875989821170'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/general-understanding-processor-ready.html' title='General: Understanding Processor - Ready Queue Management'/><author><name>Hs</name><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-6767212759522432339.post-1930468442714366410</id><published>2007-05-13T22:30:00.001+08:00</published><updated>2007-06-21T08:58:09.186+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='priorty scheduling'/><category scheme='http://www.blogger.com/atom/ns#' term='processor'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheduler Dispatch Queue'/><category scheme='http://www.blogger.com/atom/ns#' term='ready queue'/><category scheme='http://www.blogger.com/atom/ns#' term='thread state'/><category scheme='http://www.blogger.com/atom/ns#' term='processor queue length'/><title type='text'>General: Understanding Processor - Ready Queue</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Processor Ready Queue&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The &lt;em&gt;Processor Queue Length&lt;/em&gt; counter in the System object is an extremely important indicator of processor performance. It is an instantaneous peek at the number of Ready threads that are currently waiting to run. Even though reporting processor utilization is much more popular, the Processor Queue Length is actually a more important indicator of a processor bottleneck. It shows that work is being delayed, and the delay is directly proportional to the length of the queue.&lt;br /&gt;&lt;br /&gt;Since there is one Scheduler Dispatch Queue that services all processors, the Queue Length counter is only measured at System level. The Thread State counter in the Thread object indicates precisely which threads are waiting for service at the processor(s). In other words, the Processor Queue Length counter indicates how many threads are waiting in the Scheduler dispatch Ready Queue, while the Thread State counter tells which thread are in the queue. A good working assumption is that when the processor is very busy queuing delays impact the performance of executing threads. The longer the queue, the longer the delays that threads encounter.&lt;br /&gt;&lt;br /&gt;By monitoring the Thread State counter for all instances of the Thread object at the same time, it is possible to determine which threads are waiting in the Processor Ready Queue at the time measurements are taken. Note that the instantaneous measure of the size of the Ready Queue is influenced by the dispatchability of the performance monitor application itself. In other words, the Ready Queue at the time the Scheduler was finally able to dispatch the System Monitor Measurement thread. The System Monitor runs at high priority, but by no means at the highest priority in the system.&lt;br /&gt;&lt;br /&gt;Priority Scheduling is the general solution designed to cope with situations where processor is very busy. Priority scheduling orders the Ready Queue, ensuring that under conditions of scarcity, the highest-priority work gains favored access to the resource.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;The above was extracted from the book, &lt;/span&gt;&lt;a href="http://www.oreilly.com/catalog/w2kperf/toc.html" i5d6d="0" ysiu0="0"&gt;&lt;span style="font-family:arial;"&gt;Windows 2000 Performance Guide by Mark Friedman &amp; Odysseas Pentakalos&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;color:#660000;"&gt;Related Topics&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html" i5d6d="0" ysiu0="0"&gt;&lt;span style="font-family:arial;"&gt;Content Page - General&lt;/span&gt;&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/6767212759522432339-1930468442714366410?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/1930468442714366410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=1930468442714366410' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/1930468442714366410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/1930468442714366410'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/general-understanding-processor-ready_13.html' title='General: Understanding Processor - Ready Queue'/><author><name>Hs</name><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-6767212759522432339.post-4634049328453674655</id><published>2007-05-13T22:29:00.000+08:00</published><updated>2007-05-28T18:07:27.496+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DPC'/><category scheme='http://www.blogger.com/atom/ns#' term='processor'/><category scheme='http://www.blogger.com/atom/ns#' term='ISR'/><category scheme='http://www.blogger.com/atom/ns#' term='state'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>General: Understanding Processor - Processor State</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Processor utilization can be further broken down into time spent executing in user mode (Intel Ring 3) or in privileged mode (Ring 0), two mutually exclusive states. Applications typically run in the more restricted user mode, while operating system functions run in privileged mode. Whenever, an application implicitly or explicitly calls an OS service (e.g. to allocate or free memory, or perform some operation on a file), a context switch occurs as the system transitions from user to privileged mode and back again. The portion of time that a tread is executing in user mode is captured as &lt;em&gt;% User Time&lt;/em&gt;; privileged mode execution time is captured in the &lt;em&gt;% Privileged Time&lt;/em&gt; counter.&lt;br /&gt;&lt;br /&gt;Processor time usage in Windows is broken out into two additional subcategories. % Interrupt Time represents processor cycles consumed in device driver &lt;em&gt;interrupt service routines (ISRs)&lt;/em&gt;, which process interrupts from attached peripherals such as the keyboard, mouse, disks, network interface card, etc. This is worked performed at very high priority, typically while other interrupts are disabled. It is captured and reported separately not only because of its high priority, but also because it is not easily associated with any particular user process. Windows also tracks the amount of time device drivers spend in &lt;em&gt;deferred procedure calls (DPCs)&lt;/em&gt;, which also service peripheral devices but run with interrupts enabled. DPCs represent higher-priority work than other system calls and kernel thread activity. Note that % DPC Time is already included in the % Privileged Time measure.&lt;br /&gt;&lt;br /&gt;The Scheduler’s thread timing function is notified whenever any context switch occurs, and dutifully records the processing time for the copmpleted function in the appropriate bucket. The context switch might involve going from one user thread to another, a user thread to a kernel function, or a kernel thread to an ISR, followed by a DPC&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;The above was extracted from the book, &lt;/span&gt;&lt;a href="http://www.oreilly.com/catalog/w2kperf/toc.html"&gt;&lt;span style="font-family:arial;"&gt;Windows 2000 Performance Guide by Mark Friedman &amp; Odysseas Pentakalos&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;color:#660000;"&gt;&lt;strong&gt;Related Topics&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;Content Page - General&lt;/a&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/6767212759522432339-4634049328453674655?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/4634049328453674655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=4634049328453674655' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4634049328453674655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4634049328453674655'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/general-understanding-processor.html' title='General: Understanding Processor - Processor State'/><author><name>Hs</name><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-6767212759522432339.post-5681636575089643299</id><published>2007-05-13T22:28:00.000+08:00</published><updated>2007-06-22T09:06:31.154+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thread'/><category scheme='http://www.blogger.com/atom/ns#' term='processor'/><category scheme='http://www.blogger.com/atom/ns#' term='thread state'/><title type='text'>General: Understanding Processor - Thread State</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;As we know, a multiprogramming OS switches the processor back and forth between all the program threads that are executing. When the current thread blocks, usually due to I/O, the Windows Scheduler finds another thread that is ready to run and schedules it for execution. If no threads are ready to run, Windows schedules a thread associated with the System Idle process to run instead. When an I/O operation completes, a blocked thread becomes eligible to run again. This scheme means that threads alternate back and forth between the two states: a ready state, where a thread is eligible to execute instructions, and a blocked state. A blocked thread is waiting for some system event that signals that the transition from waiting to ready can occur.&lt;br /&gt;&lt;br /&gt;Thread state Counter is an instantaneous counter that you will need to observe at very fine granularity to catch this behavior. The following tables described the thread states and reasons.&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Values for Thread State Counter&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Value: State&lt;br /&gt;0: Initializing&lt;br /&gt;1: Ready&lt;br /&gt;2: Running&lt;br /&gt;3: Standby&lt;br /&gt;4: Terminated&lt;br /&gt;5: Waiting&lt;br /&gt;6: Transition&lt;br /&gt;7: Unknown&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Values for the Thread Wait Reason counter&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Value: Reason&lt;br /&gt;0 : Waiting for a component of the Windows NT Executive&lt;br /&gt;1 : Waiting for a page to be freed&lt;br /&gt;2 : Waiting for a page to be mapped or copied&lt;br /&gt;3 : Waiting for space to be allocated in the page or nonpaged pool&lt;br /&gt;4 : Waiting for an Execution Delay to be resolved&lt;br /&gt;5 : Suspended&lt;br /&gt;6 : Waiting for a user request&lt;br /&gt;7 : Waiting for a component of the Windows NT Executive&lt;br /&gt;8 : Waiting for a page to be freed&lt;br /&gt;9 : Waiting for a page to be mapped or copied&lt;br /&gt;10 : Waiting for space to be allocated in the page or nonpaged pool&lt;br /&gt;11 : Waiting for Execution Delay to be resolved&lt;br /&gt;12 : Suspended&lt;br /&gt;13 : Waiting for a user request&lt;br /&gt;14 : Waiting for an event pair high&lt;br /&gt;15 : Waiting for an event pair low&lt;br /&gt;16 : Waiting for an LPC Receive notice&lt;br /&gt;17 : Waiting for an LPC Reply notice&lt;br /&gt;18 : Waiting for virtual memory to be allocated&lt;br /&gt;19 : Waiting for a page to be written to disk&lt;br /&gt;20+ : Reserved&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;color:#660000;"&gt;&lt;strong&gt;Related Topics&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html" ysiu0="0" i5d6d="0"&gt;Content Page - General&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&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/6767212759522432339-5681636575089643299?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/5681636575089643299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=5681636575089643299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5681636575089643299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5681636575089643299'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/general-understanding-processor-thread.html' title='General: Understanding Processor - Thread State'/><author><name>Hs</name><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-6767212759522432339.post-3051557951040493397</id><published>2007-05-13T16:10:00.001+08:00</published><updated>2007-05-14T09:57:47.206+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='HTTP'/><category scheme='http://www.blogger.com/atom/ns#' term='NTLM'/><category scheme='http://www.blogger.com/atom/ns#' term='basic'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><title type='text'>Protocols: Working with Web (HTTP/HTML) III - NTLM Authentication</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;LoadRunner supports recording and replaying of NTLM authentication. This is described in two main KB articles below. You can refer to the KBs for information on working with it. Take note that you require an account to login to the Mercury/HP support website to view the articles.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://kb-index.mercury.com/web/queries/KBAview.asp?Conceptid=30654&amp;Product=LR"&gt;Tips on NTLM authentication when working with Web Vusers&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;a href="http://kb-index.mercury.com/web/queries/KBAview.asp?Conceptid=11385&amp;amp;Product=LR"&gt;How to record against web applications that go through NTLM authentication&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;In additional to the above, take note that be it any authentication (Basic or NTLM), if it is running over HTTP, it will be captured as it is transmitting in pure text form (except of course the encrypted password).&lt;br /&gt;&lt;br /&gt;Therefore, whenever there is problem in the replay, look at the Replay Log. It will show you the transmission sequence of the script. For NTLM, you will be able to see the 4-way authentication process in the Authentication header of the HTTP message. Trace through the sequence of the authentication in the header. If you are unfamiliar with NTLM authentication, it would be good to research &lt;a href="http://www.innovation.ch/personal/ronald/ntlm.html"&gt;here&lt;/a&gt;. Also, you can do additional reading on this book, &lt;a href="http://www.oreilly.com/catalog/httptdg/"&gt;"HTTP Definitive Guide"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;In summary, you can start off with the two KBs on information for working with NTLM. Furthermore, a good knowledge of how NTLM works allows you to understand the information in the Replay Log when the script fails.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-3051557951040493397?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/3051557951040493397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=3051557951040493397' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3051557951040493397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3051557951040493397'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/protocols-web-httphtml-ntlm.html' title='Protocols: Working with Web (HTTP/HTML) III - NTLM Authentication'/><author><name>Hs</name><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-7858226679601100160</id><published>2007-05-13T15:09:00.000+08:00</published><updated>2007-05-16T18:31:16.630+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diagnostics'/><category scheme='http://www.blogger.com/atom/ns#' term='analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='controller'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='sitescope'/><category scheme='http://www.blogger.com/atom/ns#' term='ロードランナー'/><category scheme='http://www.blogger.com/atom/ns#' term='負荷テスト'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><category scheme='http://www.blogger.com/atom/ns#' term='Vugen'/><category scheme='http://www.blogger.com/atom/ns#' term='パフォーマンス　センター'/><title type='text'>Products: LoadRunner</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;LoadRunner is a load testing tool that allows load testing against various technologies (or protocols to be specified). The load testing is by done generating load of emulated real users in the form of scripts or in the LoadRunner terminology, Vusers. While load generating, monitoring is applied to the SUT (System Under Test) or servers and collected at the end of the load testing. This data, is then been analyzed to determine the next course of action (depending on the objective of the load test, i.e. benchmarking, SLA, stress testing, etc.) such as tuning, scaling, or defining a new SLA, etc.&lt;br /&gt;&lt;br /&gt;If you like to know more on the sales talk (again), feel free to explore the HP Software website &lt;a href="http://www.mercury.com/us/products/performance-center/loadrunner/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;LoadRunner have a couple of components that makes up the whole product, namely, the &lt;em&gt;Vugen&lt;/em&gt;, &lt;em&gt;Controller, Load Generator &lt;/em&gt;and&lt;em&gt; Analysis&lt;/em&gt;. Take note that &lt;em&gt;Diagnostics&lt;/em&gt; and &lt;em&gt;SiteScope&lt;/em&gt; is a separate product by itself although it comes along with every LoadRunner CD. It would deserve more description than it will have here. The idea of LoadRunner is fairly simple, it is to generate load based on a described business process, emulated users in the form of ANSI C scripts.&lt;br /&gt;&lt;br /&gt;The components described, facilitates the load testing in the following manner. Vugen generates scripts that emulate the real users through recording a described business process that real users would perform. The recording is somewhere like a network sniffer on the protocol described and will generate a basic script that describes the user actions. From here, modifications can be made to the scripts such as runtime settings, parameterization and correlation, and not limited to the two mentioned.&lt;br /&gt;&lt;br /&gt;Once the scripts (Vusers) are ready, a scenario is created in the Controller. The scenario defines the number of Vusers (scripts) to generate, the duration of the scenario, the behavior of the Vusers, and the resources (servers) that the tester would like to monitor. It also defines the Load Generators to use and any additional components such as IP Spoofing or Diagnostics module. When the scenario is done, all the tester needs to do is to run the scenario and wait for the results to be collected at the end of the test. More information on how the monitors in LoadRunner work can be found &lt;a href="http://loadrunnertnt.blogspot.com/2007/04/tool-for-duplicating-files.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;When the scenario is started, the scripts are sent by the Controller to the Load Generator and the Load Generator wills generate the defined assigned amount of load to the SUT. As the name implies, Load Generator generates load and Controller controls the scenario execution.&lt;br /&gt;&lt;br /&gt;After the load testing data have been collected. It will be save in a results folder and been port over to Analysis for performing analysis of the results. Analysis is a powerful graphical tool to look at correlations between load and system resource performance (and many more depending on what you are entitled to monitor). However, take note that having a powerful tool does not give the tester wings to fly. The tester will still need the relevant experiences and knowledge to determine bottlenecks in the system. (Usually companies charge this as consultancy).&lt;br /&gt;&lt;br /&gt;The above is described in more detail in a popular site describing LoadRunner architecture. If you are interested in the details, please feel free to explore &lt;a href="http://www.wilsomar.com/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;LoadRunner is tied to one license which entitles to the (1) number of Vusers (concurrent users) that are being generated, the (2) protocol that the Controller is able to run and the (3) available monitors that the organization can utilized. This information can be found in the LoadRunner License Information. The restriction of the license only applies to the Controller. Therefore, Vugen and Analysis is still functional even if the license is not applied or expired.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Some pitfalls&lt;/em&gt;; There are always questions on client activities been recorded in LoadRunner (Vugen). I believed it’s the association of Functional Testing with the idea of Performance/Load Testing. Take note that they are two different things. Performance/Load Testing involves a lot of knowledge on architecture, applications, etc. It is not as simple in testing GUI on the front end and ensuring that the output is correct.&lt;br /&gt;&lt;br /&gt;LoadRunner is designed to load test a designated server and not client. Whatever activities performed by the client is not recorded. This had been a popular question posted frequently on the web and I feel that association should be corrected. For this, I’ve also written an article on it. Click &lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-are-client-activities-recorded.html"&gt;here&lt;/a&gt; if you like to know more details.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;em&gt;Installation&lt;/em&gt;; for LoadRunner to function properly, it’s advisable to install with the default administrator rights. Installation or functionality problems are usually caused by insufficient privileges to the installed machine, clone images or anti-virus software.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&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/6767212759522432339-7858226679601100160?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/7858226679601100160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=7858226679601100160' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7858226679601100160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7858226679601100160'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/products-loadrunner.html' title='Products: LoadRunner'/><author><name>Hs</name><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-2054769996061473942</id><published>2007-05-13T13:49:00.000+08:00</published><updated>2007-05-14T09:11:27.887+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='monitor'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='rup'/><category scheme='http://www.blogger.com/atom/ns#' term='rstatd'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><title type='text'>Monitors: Unix System Resource</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Before we start off, a general understanding of how monitoring works in LoadRunner can be found in &lt;a href="http://loadrunnertnt.blogspot.com/2007/04/tool-for-duplicating-files.html"&gt;"Monitors: How does the monitoring work?"&lt;/a&gt;will be useful.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Generally, LoadRunner is drawing data from &lt;em&gt;rstatd&lt;/em&gt; daemon. For this, before you connect to the Unix box, ensure that rstatd is configured properly and running. This information can be found in the Monitor Reference with every installation of LoadRunner.&lt;br /&gt;&lt;br /&gt;To configure rstatd, ensure that you have (1) root account or someone who has root account to assist you and (2) someone who is Unix-trained to assist as much of the configuration is done on the Unix box. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#660000;"&gt;&lt;strong&gt;Verify rstatd Daemon&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;To verify if rstatd is configured, run rup command in the following syntax in the console.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&gt;rup host&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can also use lr_host_monitor and see if it returns any relevant statistics. If the command returns meaningful statistics, the rstatd daemon is already configured and activated. If not, or if you receive an error message, the rstatd daemon is not configured.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Configure rstatd Daemon&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;To configure the rstatd daemon:&lt;br /&gt;&lt;br /&gt;1. Run the command: &lt;span style="color:#000099;"&gt;su root&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;2. Go to &lt;span style="color:#000099;"&gt;/etc/inetd.conf&lt;/span&gt; and look for the rstatd row (it begins with the word rstatd). If it is commented out (with a #), remove the comment directive, and save the file.&lt;br /&gt;&lt;br /&gt;3 From the command line, run:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;kill -1 inet_pid&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;where inet_pid is the pid of the inetd process. This instructs the inetd to rescan the /etc/inetd.conf file and register all daemons which are uncommented, including the rstatd daemon.&lt;br /&gt;&lt;br /&gt;4 Run &lt;span style="color:#000099;"&gt;rup&lt;/span&gt; again.&lt;br /&gt;&lt;br /&gt;If the command still does not indicate that the rstatd daemon is configured, contact your system administrator.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Firewall&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;To monitor a UNIX machine through a firewall, you must run a UNIX utility called rpcinfo and identify the rstatd’s port number. By running rpcinfo -p &lt;hostname&gt;, you will receive a list of all RPC servers registered in the host’s portmapper, along with the port number. This list will not change until rstatd is stopped and rerun.&lt;br /&gt;&lt;br /&gt;Some firewalls allow you to open an RPC program number instead of a port. In such cases, open program 100001. If are prompted to include a version number, specify versions 3 and 4.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Troubleshooting&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;There are two KBs that discusses about troubleshooting Unix System Resource and would be a good source or starting point for you in the event you run into problems with setting up the Unix System Resource monitoring.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?conceptid=16871&amp;product=LR&amp;amp;myMethod=DirectLink"&gt;Error: "Monitor name: UNIX Resources. Cannot initialize the monitoring on &lt;host&gt;..."&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?conceptid=16871&amp;product=LR&amp;amp;myMethod=DirectLink"&gt;Requirements for Unix/Linux Resource Monitor in LoadRunner &lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;You will have to have a valid account with the support site (&lt;/span&gt;&lt;a href="http://support.mercury.com/" target="_blank"&gt;&lt;span style="font-family:arial;"&gt;support.mercury.com&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;) to access the documents.&lt;br /&gt;&lt;br /&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/6767212759522432339-2054769996061473942?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/2054769996061473942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=2054769996061473942' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2054769996061473942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2054769996061473942'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/monitors-unix-system-resource.html' title='Monitors: Unix System Resource'/><author><name>Hs</name><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-6767212759522432339.post-5388078782527002372</id><published>2007-05-11T13:33:00.000+08:00</published><updated>2007-05-16T18:31:41.697+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='load generator'/><category scheme='http://www.blogger.com/atom/ns#' term='analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='controller'/><category scheme='http://www.blogger.com/atom/ns#' term='DCOM'/><category scheme='http://www.blogger.com/atom/ns#' term='license'/><category scheme='http://www.blogger.com/atom/ns#' term='ロードランナー'/><category scheme='http://www.blogger.com/atom/ns#' term='負荷テスト'/><category scheme='http://www.blogger.com/atom/ns#' term='Vugen'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance center'/><category scheme='http://www.blogger.com/atom/ns#' term='パフォーマンス　センター'/><title type='text'>Products: Performance Center</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Performance Center is an enterprise version of LoadRunner (LR) where it allows concurrent runs in an organization by managing a pool of Controllers and Load generators build on a web interface. The design is for suitable for organizations that require running multiple load test projects throughout the organization. If you like to know more on the sales talk from the company, you can click &lt;a href="http://www.mercury.com/us/products/performance-center/"&gt;here.&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;To put it simply, PC can run multiple load test while LR can run a single load test.&lt;br /&gt;&lt;br /&gt;Performance Center tends to design in a way that load tests are managed in the concept of projects. And through these projects, you will be able to trace the number of runs pertaining to each individual.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Privileges are also introduced with the hindsight of projects where there is a difference in the roles. Administrator role maintains the PC setup as a whole, while privileges for users such as Consultant, Tester or Manager can be defined depending on the organization requirements.&lt;/p&gt;&lt;p align="justify"&gt;The administrator has the rights to manage the resources as well as determine the maximum number of concurrent users the project can generate.&lt;/p&gt;&lt;p align="justify"&gt;Through PC, a pool of Controllers and Load Generators can be managed together via a single point of control. In this way, resources are better utilized (according to Mercury/HP). Furthermore, there can be configurations to limit the usage of Load Generators to the projects assigned.&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;License&lt;/strong&gt; entitlement (or enforcement?) is increased with one more layer of control. the amount of concurrent runs and the total number of vusers that the PC installation can generate. As it is an enterprise version of LoadRunner, the LR license engine still applies, such as the number of vusers, the protocols and monitors entitlement. Both PC and LR licenses are needed in order for the full PC to function properly.&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;Technically&lt;/strong&gt;, PC is an enhanced web version of LoadRunner on both JSP and ASP at this point of time. The internal infrastructure is built on DCOM links that needs to exist in the same LAN. Performance Center (PC) maintains a database that keeps information of the load tests as well as the configurations of the PC setup.&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;The basic infrastructure of Controller and Load Generator still applies even after porting over to this software. Therefore, the troubleshooting, tips and tricks still applies for them.&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;For the Controllers and Load Generators, they can be located in a separate LAN. PC comes with a nice feature of managing the resources such as patch updates and restarting function over the interface.&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;Vugen&lt;/strong&gt; and &lt;strong&gt;Analysis&lt;/strong&gt; remains the same as a client-side program. PC provides these two components by making them downloadable in the PC web pages through a download link. This page, with the right ASP knowledge, can be configured to include other downloads. This, of course is better than LR in terms of installation procedures as you need not go around physically to with the disc to install them.&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;With all the above mentioned, being an enterprise means more user usage and more features which coherently means more money to pay for by the organization. Therefore, conduct some evaluation before jumping into the decision of purchasing this behemoth product.&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;To sum up, PC is an enhanced web version of LR with the capabilities of running multiple load tests instead of a single load test. It is managed in projects and can be traced to the number of runs. The licenses have increase to one additional layer in controlling the total number of concurrent runs allowed. Technically, it is build on DCOM and the basic infrastructure of Controller and Load Generator remains. &lt;/p&gt;&lt;p align="justify"&gt;&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/6767212759522432339-5388078782527002372?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/5388078782527002372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=5388078782527002372' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5388078782527002372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5388078782527002372'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/products-performance-center.html' title='Products: Performance Center'/><author><name>Hs</name><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-6086909546983467243</id><published>2007-05-11T11:22:00.000+08:00</published><updated>2007-05-11T11:30:38.094+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='advance trace'/><category scheme='http://www.blogger.com/atom/ns#' term='logical'/><category scheme='http://www.blogger.com/atom/ns#' term='replay'/><category scheme='http://www.blogger.com/atom/ns#' term='lr_set_debug_message'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Scripts: Set Debug Mode in Script</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Sometimes there is a need to know what is the data being transmitted in the Replay Log or performing troubleshooting of the scripts. When the usual options are configured. Parameter substitution, Advance Trace and Data Returned by Server are turned on, it’s going to generate a big chunk of data. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;And in circumstances, you need to know only a certain portion of script to ensure that it is working perfectly, you have to wait through the replay, waiting for it to complete. As such, below is a faster way of generating the Replay Log in a shorter format. This, of course is not effective.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;So, how do we reduce the information generated to the Replay Log?&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;You can use the &lt;em&gt;lr_set_debug_message&lt;/em&gt; to display only a certain portion of the log generated. Place the &lt;em&gt;lr_set_debug_message&lt;/em&gt; before the codes that you want the replay log to receive and close it again as per your requirement. The syntax is as below and more information can be consulted in the Function Reference.&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;lr_set_debug_message(LR_MSG_CLASS_EXTENDED_LOG LR_MSG_CLASS_RESULT_DATA&lt;br /&gt;LR_MSG_CLASS_PARAMETERS LR_MSG_CLASS_FULL_TRACE, LR_SWITCH_ON);&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#000099;"&gt;/*&lt;br /&gt;…. Actions&lt;br /&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;Lr_set_debug_message(LR_MSG_CLASS_EXTENDED_LOG LR_MSG_CLASS_RESULT_DATA&lt;br /&gt;LR_MSG_CLASS_PARAMETERS LR_MSG_CLASS_FULL_TRACE, LR_SWITCH_OFF);&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt; &lt;/div&gt;&lt;div align="left"&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/6767212759522432339-6086909546983467243?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/6086909546983467243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=6086909546983467243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6086909546983467243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6086909546983467243'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/sometimes-there-is-need-to-know-what-is.html' title='Scripts: Set Debug Mode in Script'/><author><name>Hs</name><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-6767212759522432339.post-2317286787038443475</id><published>2007-05-11T10:42:00.000+08:00</published><updated>2007-05-11T10:47:01.565+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='think time'/><category scheme='http://www.blogger.com/atom/ns#' term='analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='exclude'/><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='transaction'/><category scheme='http://www.blogger.com/atom/ns#' term='randomize'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Scripts: Remove Think Time</title><content type='html'>&lt;span style="font-family:arial;"&gt;Yesterday, my team got a requirement to randomize the think time and subtract the think time to reflect the actual response time of the transactions of the load test.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;To achieve the two requirements, (1) randomize think time and (2) subtract the think time from the transaction response time, two KBs were used.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Randomize the think time with a random parameter described in &lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=3448&amp;Product=LR"&gt;KB 3448, "How to generate a random think time"&lt;/a&gt;.  Proceed to complete enhancing the script and port it over to the Controller.  Run the scenario as per norm&lt;/li&gt;&lt;li&gt;Once the scenario completes and anaylsis graph generated, filter the think time in the Analysis graph to get the processing time. Use &lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=13748&amp;Product=LR"&gt;KB 13748, "How to exclude think time from transaction timings in the Analysis graphs"&lt;/a&gt; to filter out the think time.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;Hope this little piece of information is useful.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-2317286787038443475?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/2317286787038443475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=2317286787038443475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2317286787038443475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2317286787038443475'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/scripts-remove-think-time.html' title='Scripts: Remove Think Time'/><author><name>Hs</name><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-6767212759522432339.post-1459988598103832220</id><published>2007-05-11T09:12:00.000+08:00</published><updated>2007-05-11T09:17:42.741+08:00</updated><title type='text'>Message: Some enhancements!</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Hi Visitors,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;There are some enhancments to the blog. I've resolved the &lt;strong&gt;search box&lt;/strong&gt; above which will allow searchs on the web and more importantly the blog (a blunder I made on the URL that caused it to fail). &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Anyway... new content pages for &lt;strong&gt;Message Board&lt;/strong&gt; for the list of messages and &lt;strong&gt;Products&lt;/strong&gt; for descriptions of products I came across. Lastly, the &lt;strong&gt;email subscribing&lt;/strong&gt; feature if you would like to be updated on any new articles posted here.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;If you have any suggestions or comments, feel free to drop me an email at &lt;/span&gt;&lt;a href="mailto:papayamilkshake@gmail.com"&gt;&lt;span style="font-family:arial;"&gt;papayamilkshake@gmail.com&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;. Suggestions and comments will be more than welcome! :)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Thank you.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Regards&lt;br /&gt;Hs&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/6767212759522432339-1459988598103832220?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/1459988598103832220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=1459988598103832220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/1459988598103832220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/1459988598103832220'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/message-some-enhancements.html' title='Message: Some enhancements!'/><author><name>Hs</name><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-6767212759522432339.post-7693455558338575996</id><published>2007-05-11T09:04:00.001+08:00</published><updated>2007-05-11T09:10:20.277+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='correlation'/><category scheme='http://www.blogger.com/atom/ns#' term='studio'/><category scheme='http://www.blogger.com/atom/ns#' term='manual'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><category scheme='http://www.blogger.com/atom/ns#' term='Vugen'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><category scheme='http://www.blogger.com/atom/ns#' term='auto'/><title type='text'>Scripts: Auto or Manual Correlation?</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Vugen comes with a nice feature called "Auto-Correlation Studio" in it. This, helps to detect changes on the recorded and replay scripts. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;However, sometimes, the auto-correlation does not work as successfully as it is designed. It may not detect over sized dynamic values such as VIEWSTATE (&lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=24264&amp;Product=LR"&gt;KB 24264&lt;/a&gt;) or header information or cookies, etc. Well, to sum up, it varies and may not work. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Manual Correlation is just the good-old method of correlation without any studio gimicks. This although slow, provides you a better "control" of what is needed to be correlated. You can download the document relating to correlation in &lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?conceptid=11806&amp;amp;amp;product=LR&amp;amp;myMethod=DirectLink"&gt;KB 11806&lt;/a&gt;. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;My suggestions for those new to correlation: &lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;Do not overly depend on auto-correlation studio&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;If replay fail, look at the Replay Log to determine the cause. Replay log provides a vast amount of information.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;If manual correlation is needed, perform each dynamic value one at a time progressively. In this way, it minimises the risk of missin out any dynamic value. &lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p align="justify"&gt;&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/6767212759522432339-7693455558338575996?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/7693455558338575996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=7693455558338575996' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7693455558338575996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7693455558338575996'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/scripts-auto-or-manual-correlation.html' title='Scripts: Auto or Manual Correlation?'/><author><name>Hs</name><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>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-2551723957998814632</id><published>2007-05-11T09:03:00.003+08:00</published><updated>2007-07-06T16:49:59.211+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diagnostics'/><category scheme='http://www.blogger.com/atom/ns#' term='SilkPerformer'/><category scheme='http://www.blogger.com/atom/ns#' term='ロードランナー'/><category scheme='http://www.blogger.com/atom/ns#' term='負荷テスト'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance center'/><category scheme='http://www.blogger.com/atom/ns#' term='パフォーマンス　センター'/><title type='text'>Content Page - Products</title><content type='html'>&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/products-performance-center.html"&gt;&lt;span style="font-family:arial;"&gt;Performance Center&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/products-loadrunner.html"&gt;&lt;span style="font-family:arial;"&gt;LoadRunner&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/products-diagnostics.html"&gt;Diagnostics&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/06/products-sitescope.html"&gt;SiteScope&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/products-silkperformer-comparison.html"&gt;SilkPerformer&lt;/a&gt; (a comparison with LoadRunner)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-2551723957998814632?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/2551723957998814632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=2551723957998814632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2551723957998814632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2551723957998814632'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/content-page-products.html' title='Content Page - Products'/><author><name>Hs</name><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-6767212759522432339.post-3289629157937266190</id><published>2007-05-11T09:03:00.001+08:00</published><updated>2007-05-21T21:45:40.120+08:00</updated><title type='text'>Content Page - Message Board</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/message-change-of-website-template.html"&gt;Message: Change of WebSite Template&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/message-some-enhancements.html"&gt;Message: Some enhancements! &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/message-thank-you-content-page.html"&gt;Message: Thank you &amp;amp; Content Page&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/04/loadrunner-page.html"&gt;Welcome!!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-3289629157937266190?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/3289629157937266190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=3289629157937266190' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3289629157937266190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3289629157937266190'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/content-page-message-board.html' title='Content Page - Message Board'/><author><name>Hs</name><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>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-174689647106519754</id><published>2007-05-10T11:41:00.000+08:00</published><updated>2007-05-10T12:54:06.212+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uptime'/><category scheme='http://www.blogger.com/atom/ns#' term='monitor'/><category scheme='http://www.blogger.com/atom/ns#' term='controller'/><category scheme='http://www.blogger.com/atom/ns#' term='BAC'/><category scheme='http://www.blogger.com/atom/ns#' term='sitescope'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='vuser'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><category scheme='http://www.blogger.com/atom/ns#' term='cron'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Monitors: The Other Way?</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;I’ve came across a question on monitoring Solaris boxes for a 99.99% uptime for 7 days in a forum. In LoadRunner context, it will be considered to be Unix System Resource monitoring. There were suggestions to monitor via &lt;a href="http://h71028.www7.hp.com/enterprise/cache/454097-0-0-0-121.html"&gt;BAC (Business Availability Center)&lt;/a&gt; rather than using LoadRunner. Actually it goes down to the purpose of what the person is trying to achieved. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;LoadRunner is designed to monitor during the period of load test while BAC is designed to monitor in a production environment; which relates to two questions: &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;1. Are you monitoring over a period of load? Or,&lt;br /&gt;2. Are you monitoring in a production environment? &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;Anyway, I’ve came out with three suggestions in respond to his enquiry.&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;1. Use a single Vuser to monitor the Unix system resource for the 7 days period.&lt;br /&gt;2. Use BAC to monitor.&lt;br /&gt;3. Use "uptime" command in the Unix box and output to a log file periodically.&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Let’s discussed in details each of the methods. &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;[1] Use a single Vuser to monitor the Unix system resource for the 7 days period. &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;This is a method to circumvent the conventional monitoring technique. You will get your graphs from Unix however, take note that this is not so all perfect. When LoadRunner completes a scenario execution (load test), it collates the results from the Load Generators (LG in short) back to the Controller at the end of the test. Putting it in the 7 days context, there will be 7 days worth of monitoring data that needs to be transmitted back to the Controller. &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;For this, it may (1) fail transmitting back due to the size of the data over the bandwidth of the organization network, also (2) even when it is successfully sent back to the Controller, Controller requires significant resources to process the data and may end up crashing or hanging.&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;[2] Use BAC to monitor &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;BAC and SiteScope, both from Mercury/HP will be able to achieve that. The main purpose of the above products is to monitor in a production environment and send reports or alerts depending on the configuration. There is also other monitoring products out in the market but I guess it’s up the organization to decide what is best for them. &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Take note that the monitoring principle for LoadRunner and BAC/SiteScope is the same (BAC is tapping to capabilities of SiteScope monitoring). I’ve discussed that in an article, &lt;a href="http://loadrunnertnt.blogspot.com/2007/04/tool-for-duplicating-files.html"&gt;"Monitors: How does the monitoring work?"&lt;/a&gt; previously, which you may want to explore. &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;[3] Use "uptime" command in the Unix box and output to a log file periodically (Unix only) &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;This is by far the cheapest method as you are riding on the capabilities of your current resources. Uptime provides information about the system availability since it’s last boot up. For more information of uptime, click &lt;a href="http://unixhelp.ed.ac.uk/CGI/man-cgi?uptime"&gt;here&lt;/a&gt;. Also, refer to this resources for &lt;a href="http://www.december.com/unix/tutor/redirect.html"&gt;redirection&lt;/a&gt; output information.&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;By running a cron job periodically, example every 30 min, and redirect the output to a log file, you can trace when the system was rebooted. For more information of cron job, click &lt;a href="http://www.adminschoice.com/docs/crontab.htm"&gt;here&lt;/a&gt;.&lt;br /&gt;Use the following syntax in the crontab file if you are keen implementing this suggestion.&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="color:#000099;"&gt;Example:&lt;br /&gt;30 18 * * * uptime &gt;&gt; uptime.log&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&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/6767212759522432339-174689647106519754?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/174689647106519754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=174689647106519754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/174689647106519754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/174689647106519754'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/monitors-other-way.html' title='Monitors: The Other Way?'/><author><name>Hs</name><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-6767212759522432339.post-2786290441474246962</id><published>2007-05-09T17:52:00.000+08:00</published><updated>2007-05-09T17:57:57.783+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Message'/><title type='text'>Message: Thank you &amp; Content Page</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Hi Visitors,&lt;br /&gt;&lt;br /&gt;Thanks for the support and comments. :) I will add in more information that I come across and to share with you guys.&lt;br /&gt;&lt;br /&gt;As the site is filled with more information, it is becomeing a little messy. So, I've come out with the Content Page on the right hand corner for you to access the articles with less trouble. Do revert if there are missing links or any improvement areas.&lt;br /&gt;&lt;br /&gt;Thank you. Happy reading!&lt;br /&gt;&lt;br /&gt;Regards&lt;br /&gt;Hs&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/6767212759522432339-2786290441474246962?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/2786290441474246962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=2786290441474246962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2786290441474246962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2786290441474246962'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/message-thank-you-content-page.html' title='Message: Thank you &amp; Content Page'/><author><name>Hs</name><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-6767212759522432339.post-1428068255232842591</id><published>2007-05-09T17:38:00.000+08:00</published><updated>2007-08-27T09:50:52.908+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='disk'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='Planning'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='ready queue'/><category scheme='http://www.blogger.com/atom/ns#' term='thread state'/><title type='text'>Content Page - General</title><content type='html'>&lt;span style="COLOR: rgb(102,0,0);font-family:arial;" &gt;&lt;strong&gt;General&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;General: How does &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;LoadRunner&lt;/span&gt; license work? &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-are-client-activities-recorded.html"&gt;General: Are client activities recorded by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Vugen&lt;/span&gt;?&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-scenario-execution.html"&gt;&lt;span style="font-family:arial;"&gt;General: Scenario Execution&lt;/span&gt; &lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-detecting-memory-leaks-using.html"&gt;&lt;span style="font-family:arial;"&gt;General: Detecting Memory Leaks Using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;LoadRunner&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-vugencontroller-crash-or.html"&gt;&lt;span style="font-family:arial;"&gt;General: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Vugen&lt;/span&gt;/Controller Crash or Abnormal Behavior&lt;/span&gt; &lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/06/general-virtualization-with-loadrunner.html"&gt;&lt;span style="font-family:arial;"&gt;General: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Virtualization&lt;/span&gt; with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;LoadRunner&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/after-writing-couple-of-posts-for-past.html"&gt;&lt;span style="font-family:arial;"&gt;General: Planning for Load Testing&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a title="'Permanent" style="FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/07/general-planning-for-load-testing.html" rel="bookmark"&gt;General: Planning for Load Testing - Soliciting Requirements&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:100%;"&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/07/this-is-point-that-load-tester-must.html" rel="bookmark"&gt;General: Planning for Load Testing - Application Design&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/07/general-planning-for-load-testing_25.html" rel="bookmark" uevuh="0" qy_fp="0"&gt;&lt;span style="font-family:arial;"&gt;General: Planning for Load Testing - Protocols&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a title="'Permanent" style="FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/07/general-planning-for-load-test-monitor.html" rel="bookmark"&gt;General: Planning for Load Testing - Monitor Setup&lt;/a&gt;&lt;br /&gt;&lt;a title="'Permanent" style="FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/08/general-planning-for-load-testing.html" rel="bookmark"&gt;General: Planning for Load Testing - Monitoring&lt;/a&gt;&lt;br /&gt;&lt;a title="'Permanent" style="FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/08/general-planning-for-load-testing_05.html" rel="bookmark"&gt;General: Planning for Load Testing - Analyzing&lt;/a&gt;&lt;br /&gt;&lt;a title="'Permanent" style="FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/08/general-planning-for-load-testing_07.html" rel="bookmark"&gt;General: Planning for Load Testing - Recommendations&lt;/a&gt;&lt;br /&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/08/general-load-testing-objectives.html" rel="bookmark" vi8w7="0" yyn8d="0"&gt;&lt;span style="font-family:arial;"&gt;General: Load Testing Objectives&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;u&gt;&lt;span style="COLOR: rgb(128,0,128)"&gt;&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,0,0);font-family:arial;" &gt;&lt;strong&gt;Basics&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/06/basics-transaction-response-time.html"&gt;&lt;span style="font-family:arial;"&gt;Transaction Response Time&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:100%;"&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/06/basics-max-running-vusers-in-analysis.html" rel="bookmark"&gt;Basics: Max. Running &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Vusers&lt;/span&gt; in Analysis is different from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Vuser&lt;/span&gt; Quantity in Controller?&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: normal;font-size:100%;" &gt;&lt;a title="'Permanent" style="FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/07/basics-underlying-operating-system-and.html" rel="bookmark"&gt;Basics: Underlying Operating System and Network Improvements&lt;/a&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT: normal;font-family:arial;font-size:100%;"  &gt; taken from Java Performance Tuning&lt;/span&gt;&lt;br /&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/07/basics-cpu-bottlenecks.html" rel="bookmark" ya_2e="0" if04v="0"&gt;&lt;span style="font-family:arial;"&gt;Basics: CPU Bottlenecks&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; taken from Java Performance Tuning&lt;br /&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/07/basics-disks-bottlenecks.html" rel="bookmark" zabjr="0" gi4bp="0"&gt;Basics: Disks Bottlenecks&lt;/a&gt; taken from Java Performance Tuning&lt;br /&gt;&lt;/span&gt;&lt;a title="'Permanent" style="FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/07/basics-memory-bottlenecks.html" rel="bookmark"&gt;Basics: Memory Bottlenecks&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;taken from Java Performance Tuning&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a title="'Permanent" style="FONT-WEIGHT: normal; FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/07/basics-network-bottlenecks.html" rel="bookmark"&gt;Basics: Network Bottlenecks&lt;/a&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT: normal;font-family:arial;font-size:100%;"  &gt; taken from Java Performance Tuning&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(102,0,0);font-family:Arial;" &gt;&lt;strong&gt;Understanding Memory&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;a style="FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/07/understanding-memory-virtual-addressing.html"&gt;Understanding Memory: Virtual Addressing&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/understanding-memory-virtual-addressing_23.html"&gt;&lt;span style="font-family:arial;"&gt;Understanding Memory: Virtual Addressing (Illustration)&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-page-fault.html"&gt;Page Fault Resolution &lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/general-understanding-memory-page-fault.html"&gt;Page Fault Resolution (Illustration)&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory_06.html"&gt;Performance Concerns &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-virtual_06.html"&gt;Virtual Memory Shortage Alerts&lt;br /&gt;&lt;/a&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-available.html"&gt;Available Bytes &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-lru.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;LRU&lt;/span&gt; &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-system.html"&gt;System Working Set &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-detecting.html"&gt;Detecting Memory Leaks&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-measuring.html"&gt;&lt;span style="font-family:arial;"&gt;Measuring Memory Utilization&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,0,0);font-family:arial;" &gt;&lt;strong&gt;Understanding Processor&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-processor_04.html"&gt;Understanding Processor&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-processor.html"&gt;Processor State&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-processor_14.html"&gt;Interrupt Processing&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-processor-ready.html"&gt;Ready Queue Management&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-processor-ready_13.html"&gt;Ready Queue &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-processor_04.html"&gt;Thread State&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(102,0,0)"&gt;Understanding Network&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;a title="'Permanent" style="FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/08/understanding-network-how-ping-works.html" rel="bookmark"&gt;Understanding Network: How Ping Works?&lt;/a&gt;&lt;br /&gt;&lt;a title="'Permanent" style="FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/08/understanding-network-how-traceroute.html" rel="bookmark"&gt;Understanding Network: How traceroute works?&lt;/a&gt;&lt;br /&gt;&lt;a title="'Permanent" style="FONT-FAMILY: arial" href="http://loadrunnertnt.blogspot.com/2007/08/understanding-network-performance.html" rel="bookmark"&gt;Understanding Network: Performance Measurements&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-how-does-loadrunner-license.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-1428068255232842591?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/1428068255232842591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=1428068255232842591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/1428068255232842591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/1428068255232842591'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html' title='Content Page - General'/><author><name>Hs</name><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-6767212759522432339.post-1548111377673677204</id><published>2007-05-09T17:33:00.001+08:00</published><updated>2007-07-12T00:28:27.930+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><title type='text'>Content Page - Tools</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/monitors-how-does-monitoring-work.html"&gt;Tools: Duplicating Files Prior Load Test &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/tools-determine-windows-patches.html"&gt;Tools: Determine the Windows patches installed using Windows 2003 Resource Kit&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;font-size:100%;" &gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/tools-monitoring-unix-resource-script.html" rel="bookmark" title="Permanent Link to &amp;quot;Tools: Monitoring Unix Resource Script ver 1.0&amp;quot;"&gt;Tools: Monitoring Unix Resource Script ver 1.0&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-1548111377673677204?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/1548111377673677204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=1548111377673677204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/1548111377673677204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/1548111377673677204'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/content-page-tools.html' title='Content Page - Tools'/><author><name>Hs</name><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-6767212759522432339.post-7496071672478609831</id><published>2007-05-09T17:25:00.001+08:00</published><updated>2007-08-21T20:23:14.440+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Content Page - Scripts</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-duplicating-files-on-fly.html"&gt;Scripts: Duplicating Files on the Fly &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-step-download-timeout.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: Step Download Timeout&lt;/span&gt; &lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-viewstate.html"&gt;Scripts: VIEWSTATE &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-auto-or-manual-correlation.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: Auto or Manual Correlation?&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-remove-think-time.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: Remove Think Time &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/sometimes-there-is-need-to-know-what-is.html"&gt;&lt;span style="font-family:arial;"&gt;Scripts: Set Debug Mode in Script&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/scripts-replay-failure-use-full.html"&gt;Scripts: Replay Failure – Use Full Extended Log!&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/07/scripts-starting-new-transaction-during.html" rel="bookmark" title="Permanent Link to &amp;quot;Scripts: Starting a new transaction during iterations&amp;quot;"&gt;Scripts: Starting a new transaction during iterations&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-family: arial;" href="http://loadrunnertnt.blogspot.com/2007/08/scripts-any-compatibility-after.html" rel="bookmark" title="Permanent Link to &amp;quot;Scripts: Any compatibility issues after upgrading LoadRunner versions?&amp;quot;"&gt;Scripts: Any compatibility issues after upgrading LoadRunner versions?&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: arial;" href="http://loadrunnertnt.blogspot.com/2007/08/scripts-parameterization.html" rel="bookmark" title="Permanent Link to &amp;quot;Scripts: Parameterization&amp;quot;"&gt;Scripts: Parameterization&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-7496071672478609831?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/7496071672478609831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=7496071672478609831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7496071672478609831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7496071672478609831'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/content-page-scripts.html' title='Content Page - Scripts'/><author><name>Hs</name><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-6767212759522432339.post-3219896964252290818</id><published>2007-05-09T17:20:00.001+08:00</published><updated>2007-08-01T13:43:41.726+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='monitor'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Content Page - Monitors</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/04/tool-for-duplicating-files.html"&gt;Monitors: How does the monitoring work?&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/monitors-what-metricscounters-to.html"&gt;Monitors: What metrics/counters to monitor for Windows System Resource? &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/monitors-other-way.html"&gt;Monitors: The Other Way?&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a title="'Permanent" href="http://loadrunnertnt.blogspot.com/2007/06/monitors-other-way-ii.html" rel="bookmark"&gt;&lt;span style="font-family:arial;"&gt;Monitors: The Other Way? II&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/monitors-unix-system-resource.html"&gt;Monitors: Unix System Resource&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/monitors-ms-sql-server.html"&gt;Monitors: MS SQL Server&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-family: arial;" href="http://loadrunnertnt.blogspot.com/2007/08/monitors-memory-glossary.html" rel="bookmark" title="Permanent Link to &amp;quot;Monitors: Memory Glossary&amp;quot;"&gt;Monitors: Memory Glossary&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:0;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/monitors-unix-system-resource.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-3219896964252290818?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/3219896964252290818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=3219896964252290818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3219896964252290818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3219896964252290818'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/content-page-monitors.html' title='Content Page - Monitors'/><author><name>Hs</name><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-6767212759522432339.post-2807977938146937972</id><published>2007-05-09T16:30:00.000+08:00</published><updated>2007-07-22T22:14:29.209+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Socket'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='HTTP'/><category scheme='http://www.blogger.com/atom/ns#' term='winsock'/><category scheme='http://www.blogger.com/atom/ns#' term='citrix'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><category scheme='http://www.blogger.com/atom/ns#' term='content'/><category scheme='http://www.blogger.com/atom/ns#' term='wininet'/><title type='text'>Content Page - Protocols</title><content type='html'>&lt;span style="color: rgb(102, 0, 0);font-family:arial;" &gt;&lt;strong&gt;General&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/04/working-with-http.html"&gt;What Protocol to Use?&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(102, 0, 0);font-family:arial;" &gt;Web (HTTP/HTML)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/04/loadrunner-basics-protocols.html"&gt;&lt;span style="font-family:arial;"&gt;Working with Web (HTTP/HTML)&lt;/span&gt; &lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/protocols-working-with-web-httphtml-ii.html"&gt;&lt;span style="font-family:arial;"&gt;Working with Web (HTTP/HTML) II - Differences in WinINet and Socket&lt;/span&gt; &lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/protocols-web-httphtml-ntlm.html"&gt;&lt;span style="font-family:arial;"&gt;Working with Web (HTTP/HTML) III - NTLM Authentication&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-working-with-web-httphtml-iv.html"&gt;Working with Web (HTTP/HTML) IV - Internet Explorer 7 Support&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/06/working-with-web-httphtml-v-file.html"&gt;&lt;span style="font-family:arial;"&gt;Working with Web (HTTP/HTML) V - File Download/Export&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);font-family:arial;" &gt;&lt;strong&gt;Java&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/06/protocols-working-with-corba-java.html"&gt;Working with CORBA-Java&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/protocols-working-with-rmi-java.html"&gt;&lt;span style="font-family:arial;"&gt;Working with RMI-Java&lt;/span&gt; &lt;/a&gt;&lt;br /&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/working-with-java-introduction.html"&gt;&lt;span style="font-family:arial;"&gt;Working with Java - Introduction&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: arial;" href="http://loadrunnertnt.blogspot.com/2007/06/protocols-java-error.html" rel="bookmark" title="Permanent Link to &amp;quot;Protocols: Java Error - java.lang.NoClassDefFoundError&amp;quot;"&gt;Protocols: Java Error - java.lang.NoClassDefFoundError&lt;/a&gt;&lt;a style="font-family: arial;" href="http://loadrunnertnt.blogspot.com/2007/05/working-with-java-introduction.html"&gt; &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);font-family:arial;" &gt;&lt;strong&gt;Citrix&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/protocols-citrix.html"&gt;Working with Citrix&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/protocols-working-with-citrix-ii-best.html"&gt;Working with Citrix II - Best Practices by LoadTester&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);font-family:Arial;" &gt;&lt;strong&gt;Winsock&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/protocols-working-with-winsock.html"&gt;Working with Winsock by LoadTester&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-2807977938146937972?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/2807977938146937972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=2807977938146937972' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2807977938146937972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2807977938146937972'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/content-page-protocols.html' title='Content Page - Protocols'/><author><name>Hs</name><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-6767212759522432339.post-2053544051810602220</id><published>2007-05-09T16:07:00.000+08:00</published><updated>2007-05-09T16:19:23.114+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Socket'/><category scheme='http://www.blogger.com/atom/ns#' term='Winint'/><category scheme='http://www.blogger.com/atom/ns#' term='api'/><category scheme='http://www.blogger.com/atom/ns#' term='HTTP'/><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='RTS'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><category scheme='http://www.blogger.com/atom/ns#' term='Vugen'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Protocols: Working with Web (HTTP/HTML) II - Difference between WinINet and Socket Level</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;The Windows Internet (WinInet) application programming interface (API) enables applications to interact with Gopher, FTP, and HTTP protocols to access Internet resources. As standards evolve, these functions handle the changes in underlying protocols, enabling them to maintain consistent behavior. More information can be found at &lt;a href="http://msdn2.microsoft.com/en-us/library/aa383630.aspx"&gt;Microsoft&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;Whereas for Socket Level, it is a proprietary API that Mercury/HP LoadRunner implements. So what does it mean by setting the recording level in Port Mapping of the Recording Options and replay for RTS (Runtime Settings)? &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;By configuring Vugen record at WinINet level, simply means to instruct Vugen to record using the WinINet API. Vice versa, by configuring the Socket level, you are instructing Vugen to record using the proprietary API. By default, it is Socket level. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;For replay, the principle applies were WinINet will be replaying using WinINet API else it will be replaying via the default Socket level API. There is a small description of &lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=10735&amp;amp;Product=LR"&gt;"What is "WinINet instead of Sockets" for"&lt;/a&gt; at the support website that reiterates the above but worth taking a look. A valid account will be required to login to access the article.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;When do you configure WinINet or Socket?&lt;/strong&gt; Sometimes web applications may be designed in WinINet while sometimes it does not require WinINet as often and Socket level will be sufficient. This is a little tricky here but it will most probably end up trial-and-error. When an application fail in recording, you can try by switching between the two modes. Whereas when the application fails in replay, try switching the modes also. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;For replay failure, you can try the suggested solution in &lt;a href="http://loadrunnertnt.blogspot.com/2007/04/loadrunner-basics-protocols.html"&gt;Protocols: Working with Web (HTTP/HTML)&lt;/a&gt; where there is a section on the switching of the replay mode. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Take note that IE browser API may change over time due to the upgrade of versions (e.g. IE 6 to IE 7) which may inherently cause the replay to be successful or fail.&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-2053544051810602220?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/2053544051810602220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=2053544051810602220' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2053544051810602220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/2053544051810602220'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/protocols-working-with-web-httphtml-ii.html' title='Protocols: Working with Web (HTTP/HTML) II - Difference between WinINet and Socket Level'/><author><name>Hs</name><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-7806009943205553111</id><published>2007-05-08T10:50:00.001+08:00</published><updated>2007-05-16T10:36:49.994+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='running vusers'/><category scheme='http://www.blogger.com/atom/ns#' term='Parasoft'/><category scheme='http://www.blogger.com/atom/ns#' term='available bytes'/><category scheme='http://www.blogger.com/atom/ns#' term='scenario'/><category scheme='http://www.blogger.com/atom/ns#' term='Jtest'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='committed bytes'/><category scheme='http://www.blogger.com/atom/ns#' term='vuser'/><category scheme='http://www.blogger.com/atom/ns#' term='memory leaks'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='Vugen'/><title type='text'>General: Detecting Memory Leaks Using LoadRunner</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;em&gt;How to effectively use LoadRunner to detect memory leaks?&lt;/em&gt; First, I recommend you to read the article &lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-detecting.html"&gt;“Detecting Memory Leaks”&lt;/a&gt; that I’ve extracted from the &lt;a href="http://www.oreilly.com/catalog/w2kperf/toc.html"&gt;“Windows 2000 Performance Guide by Mark Friedman &amp;amp; Odysseas Pentakalos”&lt;/a&gt; to understand the definition of memory leak.&lt;br /&gt;&lt;br /&gt;Here, as we discussed memory leak, we are referring the memory leakage on the server side NOT the client side. Therefore, if you are searching for information on client-side application memory leakage, you can try the &lt;a href="http://www.sqaforums.com"&gt;SQA Forums&lt;/a&gt; which may provide more relevant information to you.&lt;br /&gt;&lt;br /&gt;With the mentioned materials, we can use the &lt;em&gt;Available Bytes, Committed Bytes&lt;/em&gt; and the number of &lt;em&gt;Running Vusers&lt;/em&gt; to determine if memory leakage occurred.&lt;br /&gt;&lt;br /&gt;Setup the scenario with Available Bytes and Committed Bytes as one of the counters to monitor. Run the load test as per norm. Observe the pattern of memory usage on the designated server with the ramp up of Vusers and see if they correlate.&lt;br /&gt;&lt;br /&gt;When the memory usage peaks at a ceiling, exit the Vusers gradually. If there wasn’t any leakage, the Available Bytes should increase and Committed Bytes decreased in correlation with the Vusers exiting. If it doesn’t, that is, the memory usage is persisted to be high, and the Vusers have successfully exited. It may indicate the memory leak existed in the application and will needed to be resolved (usually at the code-level). Code profiling tools such as Parasoft Jtest (etc.) will be useful in detecting potential poor coding standards.&lt;br /&gt;&lt;br /&gt;For ASP applications using IIS, memory leak could be indicated when the IIS worker process restarts itself at a defined memory level. However, point to note that as this configuration can be “human-subjective”, the IIS may merely performing what it is supposed to do despite the memory usage pattern.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Recommendation:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;I would encourage you to use the search box on the top-right hand corner should you need to search for additional information.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Related Topics:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/content-page-general.html"&gt;Content Page - General&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-7806009943205553111?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/7806009943205553111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=7806009943205553111' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7806009943205553111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/7806009943205553111'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/general-detecting-memory-leaks-using.html' title='General: Detecting Memory Leaks Using LoadRunner'/><author><name>Hs</name><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-5596353001698727285</id><published>2007-05-08T10:49:00.001+08:00</published><updated>2007-05-09T16:36:53.519+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='presentation server'/><category scheme='http://www.blogger.com/atom/ns#' term='replay'/><category scheme='http://www.blogger.com/atom/ns#' term='record'/><category scheme='http://www.blogger.com/atom/ns#' term='ica'/><category scheme='http://www.blogger.com/atom/ns#' term='citrix'/><category scheme='http://www.blogger.com/atom/ns#' term='vuser'/><category scheme='http://www.blogger.com/atom/ns#' term='ramp'/><category scheme='http://www.blogger.com/atom/ns#' term='nfuse'/><category scheme='http://www.blogger.com/atom/ns#' term='mercury'/><title type='text'>Protocols: Working with Citrix</title><content type='html'>For Citrix protocol, you can refer to the &lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=18622&amp;Product=LR"&gt;KB 18622&lt;/a&gt; for the common tips from Mercury/HP. We want to further some tips here. We can look into Citrix in details in future. Take note that you need a valid account to login into the support website.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.citrix.com/"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 120px; CURSOR: hand; HEIGHT: 58px; TEXT-ALIGN: center" height="91" alt="" src="http://www.citrix.com/site/resources/v3_nav/citrix_logo.gif" border="0" /&gt;&lt;/a&gt; &lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;RECORDING&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;There are two types of recording available to the user. One is pure Citrix ICA protocol while the other is Multi-Protocol, Web (HTTP/HTML) and Citrix ICA.&lt;br /&gt;&lt;br /&gt;[1]&lt;br /&gt;When do you use the different types of recording? If you are accessing the Citrix via the client program, please use the Citrix ICA protocol. If you are accessing via the browser (NFuse), use the Web (HTTP/HTML) and Citrix ICA protocol.&lt;br /&gt;&lt;br /&gt;[2]&lt;br /&gt;Before you record, please ensure that you have the latest &lt;a href="http://www.citrix.com/English/SS/downloads/downloads.asp?dID=2755"&gt;Citrix Presentation Server Clients&lt;/a&gt; (ICA Clients) and Terminal Services is enabled for the client and server.&lt;br /&gt;&lt;br /&gt;The full installation of the ICA Client is necessary for the recording to be successful. Machines with Web Client installed will not be able to record successfully.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;[3]&lt;br /&gt;Also, have the following information in place before you proceed should you encounter problem and require Mercury/HP support.&lt;br /&gt;&lt;br /&gt;The version of the Citrix Server.&lt;br /&gt;The version of the ICA Client.&lt;br /&gt;The version of the recording OS.&lt;br /&gt;The version of the OS that the Citrix Server is residing.&lt;br /&gt;&lt;br /&gt;[4]&lt;br /&gt;Check with the company on the support level of the ICA Client.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;REPLAY (VUGEN)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[5]&lt;br /&gt;When replay fails, try the following.&lt;br /&gt;&lt;br /&gt;[SOLUTION 1] Remove &lt;span style="color:#000099;"&gt;web_add_cookie&lt;/span&gt; statements.&lt;br /&gt;&lt;br /&gt;The cookies maybe causing the replay problem.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[SOLUTION 2] Enable Think Time&lt;br /&gt;&lt;br /&gt;Citrix may require some time for the applications to be load successfully and thus Think Time maybe required for this. Configure the script to Replay Think Time as "As Recorded"&lt;br /&gt;&lt;br /&gt;[SOLUTION 3]: Add &lt;span style="color:#000099;"&gt;web_set_user&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Add web_set_user if it is a Multi-Protocol Citrix and Web. This is when there is a proxy server or NTLM authentication that is required to submit in order to enter the application? &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Add the following statement replacing Domain, user, password and host:port with the relevant information. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;web_set_user("Domain\\user", "password", "host:port"); &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;[SOLUTION 4] Ensure the Citrix Server is up and running.&lt;br /&gt;&lt;br /&gt;When encountering connection problems, ensure that the Citrix server is up and running.&lt;br /&gt;&lt;br /&gt;[SOLUTION 5] Configure the connection to point to the correct ICA file.&lt;br /&gt;&lt;br /&gt;When Windows Authentication keeps popping up, it could be caused by the Active Directory being unable to authenticate the user. The cause is that the ICA file maybe stored in your current profile (Documents and Settings) and not the Vuser (theoretically). Therefore when it is replayed, Citrix was unable to detect the ICA file.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;REPLAY (CONTROLLER)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;[5]&lt;br /&gt;You will be replaying against a Citrix Server Farm.&lt;br /&gt;&lt;br /&gt;[6]&lt;br /&gt;There is load balancing mechanism in the server farm; therefore the load will be distributed to the servers in the farm.&lt;br /&gt;&lt;br /&gt;[7]&lt;br /&gt;Ramp up the Vusers slowly as Citrix has a characteristics of unable to handle concurrent logons.&lt;br /&gt;&lt;br /&gt;[8]&lt;br /&gt;After stopping a Scenario, please ensure that all Vusers in the Citrix are been removed from the Citrix Console. If not, it will cause the subsequent runs to encounter problem as the vusers are unable to logon.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6767212759522432339-5596353001698727285?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/5596353001698727285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=5596353001698727285' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5596353001698727285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/5596353001698727285'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/protocols-citrix.html' title='Protocols: Working with Citrix'/><author><name>Hs</name><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>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-6592544987433346241</id><published>2007-05-08T10:44:00.000+08:00</published><updated>2007-05-08T10:49:29.639+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='replay'/><category scheme='http://www.blogger.com/atom/ns#' term='web_reg_max_html_param_len'/><category scheme='http://www.blogger.com/atom/ns#' term='mercury'/><category scheme='http://www.blogger.com/atom/ns#' term='Vugen'/><category scheme='http://www.blogger.com/atom/ns#' term='VIEWSTATE'/><category scheme='http://www.blogger.com/atom/ns#' term='controller'/><category scheme='http://www.blogger.com/atom/ns#' term='scenario'/><category scheme='http://www.blogger.com/atom/ns#' term='correlation'/><category scheme='http://www.blogger.com/atom/ns#' term='hp'/><category scheme='http://www.blogger.com/atom/ns#' term='studio'/><category scheme='http://www.blogger.com/atom/ns#' term='web_reg_save_param'/><category scheme='http://www.blogger.com/atom/ns#' term='record'/><category scheme='http://www.blogger.com/atom/ns#' term='manual'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Scripts: VIEWSTATE</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;When working with ASP.NET applications, you will notice hidden values call VIEWSTATE. The VIEWSTATE in simpler description is used to maintain the state of the page that you are currently viewing. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This is useful when you have submitted a wrong form and wanted to go back to the previous form to make changes. Usually, the form will be erased, but with VIEWSTATE, the fields are still filled with your information input. A detailed explanation can be found here &lt;/span&gt;&lt;a href="http://aspalliance.com/articleViewer.aspx?aId=135&amp;pId="&gt;&lt;span style="font-family:arial;"&gt;ViewState: All You Wanted to Know&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; by Paul Wilson and from the &lt;/span&gt;&lt;a href="http://www.w3schools.com/aspnet/aspnet_viewstate.asp"&gt;&lt;span style="font-family:arial;"&gt;ASP .NET Maintaining the ViewState&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; from W3Schools.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;During recording of the ASP.NET application in Vugen, VIEWSTATE is obviously recorded in the script. &lt;/span&gt;&lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=24264&amp;amp;Product=LR"&gt;&lt;span style="font-family:arial;"&gt;KB 24264&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; provided by Mercury/HP have some information on how to work with VIEWSTATE.&lt;br /&gt;&lt;br /&gt;Point to note that what the KB suggested is to disable the &lt;em&gt;Auto-Correlation Studio&lt;/em&gt;. As mentioned in the KB, some of the larger VIEWSTATE values are not captured and you may need to perform &lt;/span&gt;&lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=24264&amp;Product=LR"&gt;&lt;span style="font-family:arial;"&gt;manual correlation&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;During replay, there are situation that the VIEWSTATE grows to a significant size and for this, you have to ensure that there is sufficient space to store the captured VIEWSTATE. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;In the initial replay in Vugen, the problem of insufficient space may not surface. However, when it’s been port over to the Controller, due to the behavior of the script (or scenario), the VIEWSTATE can grow into the significant size. To mitigate the problem, you can set the maximum length that &lt;span style="color:#000099;"&gt;web_reg_save_param&lt;/span&gt; can store using &lt;span style="color:#000099;"&gt;web_set_max_html_param_len&lt;/span&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;It is advisable to ensure that the script is able to replay in the Controller for a certain amount of vusers to ensure that the problem does not surface.&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/6767212759522432339-6592544987433346241?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/6592544987433346241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=6592544987433346241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6592544987433346241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6592544987433346241'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/scripts-viewstate.html' title='Scripts: VIEWSTATE'/><author><name>Hs</name><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-6767212759522432339.post-6127451217485778121</id><published>2007-05-06T23:28:00.002+08:00</published><updated>2007-05-15T16:34:55.532+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='available bytes'/><category scheme='http://www.blogger.com/atom/ns#' term='zero list'/><category scheme='http://www.blogger.com/atom/ns#' term='pages'/><category scheme='http://www.blogger.com/atom/ns#' term='standby'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='free list'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual memory'/><category scheme='http://www.blogger.com/atom/ns#' term='process working set'/><title type='text'>General: Understanding Memory - Measuring Memory Utilization</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;em&gt;Available Bytes&lt;/em&gt; is an instantaneous counter that measures real memory allocation, and is the single most important measure of memory utilization available in Windows. The Available Bytes counter reports the current size of the &lt;em&gt;Standby, Free&lt;/em&gt;, and &lt;em&gt;Zero&lt;/em&gt; lists. The Standby list contains pages recently trimmed from executing process working sets. New pages that processes requests are created from the Zero list of aged pages, or, if the Zero list is empty, from the Free list. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;The current number of Available Bytes is fundamentally a measure of memory occupancy. By implication, it reports on how much RAM is currently free: &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;em&gt;Real memory allocated = Size of RAM – Available Bytes&lt;/em&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;However, as discussed previously, this is not always a safe assumption in Windows because there are some anomalies in the way memory allocations are accounted for. A good configuration rule of thumb is to &lt;strong&gt;&lt;span style="color:#000099;"&gt;maintain a buffer of Available Bytes equal to approximately 5 – 10% of total RAM&lt;/span&gt;&lt;/strong&gt;. Maintaining an ample supply of Available Bytes is necessary so those page faults can always be resolved quickly. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;It is also important to monitor the number of Available Bytes against two thresholds that trigger a change in the Windows page replacement policy. At approximately 4MB of Available Bytes, process working sets are no longer allowed to expand above their current maximum values. Any system running consistently at or near 4MB of Available Bytes is real memory-constrained to some degree. If you are monitoring your critical application and file servers on a minute-by-minute basis, for example, the percentage of time that Available Bytes measure 4MB +/- 20% is a worthwhile metric to track. A system that occasionally runs at or near 4MB if Available Bytes (&gt; 40% of the time) is probably suffering from a real-memory constraint. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Windows has a second Available Bytes threshold value that alters the page replacement policy. When Available Bytes reaches about 1MB, pages below the process working set minimum are no longer exempt from page trimming. Any system running at or below 1MB even occasionally (&gt;10% of the time) is dangerously memory-constrained. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Even though Available Bytes is the single most important metric concerned with memory and paging, you should not be content to monitor it in isolation. Because it directly impacts thread execution time, it is also important to monitor the hard page fault rate (the Page Reads/sec counter) in tandem. In fact, the reason to look at the demand paging. As ling as process working sets are allowed to grow, processes that need more memory will be able to acquire those resources. However, at or below the 4MB threshold, working set growth is constrained and some processes may feel the shortage. When memory is constrained, we can expect to see more demand paging.&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;br&gt;&lt;div align="justify"&gt;The above was extracted from the book, &lt;a href="http://www.oreilly.com/catalog/w2kperf/toc.html"&gt;Windows 2000 Performance Guide by Mark Friedman &amp; Odysseas Pentakalos&lt;/a&gt;. &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&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/6767212759522432339-6127451217485778121?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/6127451217485778121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=6127451217485778121' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6127451217485778121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6127451217485778121'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-measuring.html' title='General: Understanding Memory - Measuring Memory Utilization'/><author><name>Hs</name><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-6767212759522432339.post-3265648223107177758</id><published>2007-05-06T23:28:00.001+08:00</published><updated>2007-05-16T17:45:16.404+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='available bytes'/><category scheme='http://www.blogger.com/atom/ns#' term='committed bytes'/><category scheme='http://www.blogger.com/atom/ns#' term='pageable'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='leak'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual memory'/><title type='text'>General: Understanding Memory - Detecting Memory Leaks</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Memory leaks are caused by programs that allocate virtual memory, fail to free after they are finished with it. Memory leaks are nasty program bugs that are sometimes difficult to find. A program containing memory leak bug often executes to completion and produces the correct results, so the presence of the bug is not always detected. In fact, as long as the program containing the memory leak does not impact other executing processes, the bug can go undetected for a long time. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;The telltale sign of a memory leak is that &lt;em&gt;Committed Bytes&lt;/em&gt; at the system level and/or &lt;em&gt;Virtual Bytes&lt;/em&gt; at the process level are continuously increasing. Eventually, a program with a memory leak exhausts the system’s supply of virtual memory, which can cause other running programs and even system code to fail as the system runs up against the virtual memory Committed Bytes limit. Depending on the rate at which the defective program leaks memory and the amount of excess virtual memory available, it can be a long time before any dire effects are evident. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;A program that is leaking memory by allocating and then failing to free some private virtual memory areas is relatively easy spot because the process Virtual Bytes counter is continuously increasing. It is often harder to detect programs that allocate shared memory from the system’s &lt;em&gt;Pageable Pool&lt;/em&gt; and fail to release that. Because virtual memory allocated in the shared memory region of the Pageable Pool is not associated with any specific process, finding the offending program can be difficult. Often, it is necessary to use the process elimination to find the offender.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;The above was extracted from the book, &lt;a href="http://www.oreilly.com/catalog/w2kperf/toc.html"&gt;Windows 2000 Performance Guide by Mark Friedman &amp; Odysseas Pentakalos&lt;/a&gt;. &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Recommendation:&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;I would encourage you to use the search box on the top-right hand corner should you need to search for additional information.&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Related Topics:&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://loadrunnertnt.blogspot.com/2007/05/general-detecting-memory-leaks-using.html"&gt;General: Detecting Memory Leaks Using LoadRunner&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&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/6767212759522432339-3265648223107177758?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/3265648223107177758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=3265648223107177758' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3265648223107177758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/3265648223107177758'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-detecting.html' title='General: Understanding Memory - Detecting Memory Leaks'/><author><name>Hs</name><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6767212759522432339.post-793251014781836955</id><published>2007-05-06T23:22:00.001+08:00</published><updated>2007-05-14T10:03:25.644+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Operating System'/><category scheme='http://www.blogger.com/atom/ns#' term='standby'/><category scheme='http://www.blogger.com/atom/ns#' term='working set size'/><category scheme='http://www.blogger.com/atom/ns#' term='working'/><category scheme='http://www.blogger.com/atom/ns#' term='page'/><category scheme='http://www.blogger.com/atom/ns#' term='RAM'/><title type='text'>General: Understanding Memory - System Working Set</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Windows OS functions also consumes RAM, so the system has a working set that needs to be controlled and managed like any other process. In this section we discuss the components of the system working set and look at how it is managed. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;Both system code and device driver code occupies memory. In addition, the OS allocates data structures in two areas of memory: a pool for non-pageable storage and a pool for pageable storage. Data structures accessed by OS and driver functions when interrupts are disabled must be resident in RAM at the time they are referenced. These data structure are usually allocated from the non-pageable pool so that they reside permanently in RAM. The &lt;em&gt;Pool Nonpages Bytes&lt;/em&gt; counter in the Memory object shows the amount of RAM currently allocated that is permanently resident in RAM. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Mainly, though, most system data structure are pageable: they are created in a pageable pool of storage and subject to page replacement like the virtual memory pages of any other process. The Windows OS maintains a working set of active pages in RAM that are subject to the same page replacement policy as ordinary process address spaces. The &lt;em&gt;Cache Bytes&lt;/em&gt; counter provides the total number of resident pages in the current system working set. &lt;strong&gt;&lt;span style="color:#000099;"&gt;Cache Bytes is the sum of the System Cache Resident Bytes, System Driver Resident Bytes, System Code Resident Bytes, and Pool Paged Resident Bytes counters. &lt;/span&gt;&lt;/strong&gt;The OS’s working set is known as the cache because it also includes resident pages of the Windows file cache, the OS function that typically consumes more RAM than any other. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;The system working set is subject to the same local page replacement policy as ordinary process working sets. By default, the system cache has a minimum working set of about 4.8MB and a maximum working set of a little more than 2000 pages, or about 8MB. Just like ordinary processes, when the OS is running at its maximum working set value and it references a page that is not currently resident (causing a page fault), the new page displaces an older page from the system cache and the older page is moved to the Standby List. Just like ordinary processes, when the Balance Set manager thread responsible for page trimming detects that the OS is running at its current working set maximum and at least 4MB of RAM available, it adjusts the system working set upwards 20 pages at a time. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;A registry parameter called LargeSystemCache can be set to change the system working set maximum value. When the LargeSystemCache is turned on, the system working set maximum is set to approximately 80% of the total amount of RAM installed. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Turning on the LargeSystemCache setting, which boosts the value of the system’s maximum working set size, favors the system working set over the working sets of other processes. It allows the working set of the system, which includes the Windows file cache, to grow relatively unconstrained in relation to other process working sets and to absorb the bulk of the system’s uninstalled RAM.&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;The above was extracted from the book, &lt;a href="http://www.oreilly.com/catalog/w2kperf/toc.html"&gt;Windows 2000 Performance Guide by Mark Friedman &amp;amp; Odysseas Pentakalos&lt;/a&gt;. &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&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/6767212759522432339-793251014781836955?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/793251014781836955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=793251014781836955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/793251014781836955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/793251014781836955'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-system.html' title='General: Understanding Memory - System Working Set'/><author><name>Hs</name><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-6767212759522432339.post-6419793039716254299</id><published>2007-05-06T23:21:00.001+08:00</published><updated>2007-05-10T10:39:49.126+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='transition'/><category scheme='http://www.blogger.com/atom/ns#' term='zero list'/><category scheme='http://www.blogger.com/atom/ns#' term='pages'/><category scheme='http://www.blogger.com/atom/ns#' term='paging'/><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='free list'/><category scheme='http://www.blogger.com/atom/ns#' term='LRU'/><title type='text'>General: Understanding Memory - LRU</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;LRU maintains an ordering of resident virtual memory pages from &lt;em&gt;Most Recently Referenced&lt;/em&gt; to &lt;em&gt;Least Recently Used&lt;/em&gt;. When real memory is full and an executing program references a pages that is not currently resident in memory (i.e. a page fault occurs), the Least Recently Used page in real memory is replaced with the current Most Recently Referenced page. Older pages, by inference, are less likely to by referenced again soon by executing programs, so they are the best candidates for page replacement. Older pages selected for replacements are effectively removed from memory – the next time they are referenced they must be retrieved from a paging file. If the page in memory was modified, the OS must first update the copy on the paging file before it is definitely removed. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;In practice, many LRU virtual memory implementations, including the one found in Windows, attempt to maintain some pool of free pages in RAM. This pool of Available Bytes allows the OS to schedule an I/O to the paging file to resolve the page fault immediately. Then, when this pool becomes depleted, a round of &lt;em&gt;page stealing&lt;/em&gt; is triggered, which replenishes the pool of free pages before it is completely exhausted. (Windows refer it as &lt;em&gt;page trimming&lt;/em&gt;). Windows uses page trimming on a regular basis to maintain its pool of free pages (reported as Available Bytes). &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;The challenge in Windows is to identify older pages without relying on specific processor hardware support. This is accomplished by trimming pages from process working sets provisionally. After trimming pages aggressively from active processes, Windows adds them to the pool of Available Bytes, but tags them initially as being in a provisional state. They are not immediately removed from RAM. The next time threads from active processes are scheduled to run, they reference the pages are active and these stolen pages are allowed to transition back into the process working set. So-called transition faults or soft page faults are handled quickly, with a minimum overhead. Eventually, what are left behind in the pool of Available Pages are older, unused pages that are good candidates to be replaced. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Trimmed process working set pages are placed initially in the &lt;em&gt;Standby List&lt;/em&gt;, where they are allowed to transition fault back into their process working set the next time they are referenced. Transition faults are distinguished from hard page faults, which must be satisfied by reading the paging file disk. Pages in the Standby List that are un-referenced long enough are eventually moved to the &lt;em&gt;Free List&lt;/em&gt;. When the &lt;em&gt;System Zero Thread&lt;/em&gt; executes, it zeros out the contents of pages on the Free List, which allows them to move to the &lt;em&gt;Zero List&lt;/em&gt;. Pages from the Zero List are allocated whenever either a hard page fault occurs or a process references a brand new page (also known as Demand Zero page faults). &lt;strong&gt;&lt;span style="color:#000099;"&gt;Together, the size of the Standby List, the Free List, and the Zero List are added together and reported as Available Bytes.&lt;/span&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;The page trimming procedure is threshold-driven. Page trimming is invoked when one or more of the List structures that make up the pool of Available Bytes is depleted. In addition, Windows schedules writes to the paging file when the number of changed pages exceeds a threshold value. Modified pages are written in bulk to disk by Modified Page Writer threads, again based on the threshold values being exceeded.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Measurement Support&lt;/span&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;The &lt;em&gt;Transition Faults/sec&lt;/em&gt; counter in the Memory object reports the rate at which soft page faults occur. Similarly, &lt;em&gt;Demand Zero Faults/sec&lt;/em&gt; reports the rate at which new pages are being created. Pages Output/sec shows the rate at which changed pages had been copied to disk. By implication, since real memory is a closed system: &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;em&gt;Pages trimmed/sec = Transition Faults + Demand Zero Faults + Hard page faults&lt;/em&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Plus any change in the size of the Available Bytes buffer from one interval to the next. The individual sizes of the Standby, Free, and Zero lists are not reported. Nor does Windows report the rate at which the Balance Set Manager’s page trimming routine runs, nominally at least once per second.&lt;br /&gt;The &lt;em&gt;Pages Read/sec&lt;/em&gt; counter corresponds to the rate of hard page faults requiring the OS to retrieve a page from disk. The fact that &lt;em&gt;Pages Input/sec&lt;/em&gt; is usually larger than Pages Read/sec reflects the use of anticipatory paging. Pages Input/sec is the actual number of pages retrieved from disk. Calculating: &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;em&gt;Pages per page fault = Pages Input/sec / Pages Read/sec&lt;/em&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Reports the average number of pages retrieved per page fault. Similarly, the &lt;em&gt;Pages written/sec&lt;/em&gt; counter shows the number of page write operations that were initiated, and Pages output/sec counts the number of physical 4K pages actually written. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;When the average number of pages read or written to disk is consistently above two pages per page fault or page write operation, and more than 10 – 20% of all I/Os to the disk are the result of paging operations, it is probably time to add another paging file&lt;/span&gt;&lt;/strong&gt; , if possible. Adding a second paging file spreads the paging I/O load across another physical disk and usually improves page fault resolution time substantially. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Windows supplies one other important measurement of overall paging activity, namely Paging Faults/sec. Unfortunately, interpreting how the Page Faults/sec counter relates to the other paging activity counters is problematic. Page Faults/sec includes both Transition (soft) Faults/sec and hard page faults (Pages Read/sec). It evidently also includes the number of &lt;em&gt;Cache Faults/sec&lt;/em&gt; due to the normal diversion of application I/O to the paging subsystem. There is strong evidence that it also includes the number of Demand Zero Faults/sec. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;em&gt;Page Faults/sec = Cache Faults/sec + Demand Zero Faults/sec + Pages Read/sec + Transition Faults/sec&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;The above was extracted from the book, &lt;a href="http://www.oreilly.com/catalog/w2kperf/toc.html"&gt;Windows 2000 Performance Guide by Mark Friedman &amp; Odysseas Pentakalos&lt;/a&gt;. &lt;/div&gt;&lt;div align="justify"&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/6767212759522432339-6419793039716254299?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/6419793039716254299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=6419793039716254299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6419793039716254299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/6419793039716254299'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-lru.html' title='General: Understanding Memory - LRU'/><author><name>Hs</name><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-6767212759522432339.post-8532067071242249495</id><published>2007-05-06T23:19:00.002+08:00</published><updated>2007-05-08T10:57:26.236+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='available bytes'/><category scheme='http://www.blogger.com/atom/ns#' term='memoryy'/><category scheme='http://www.blogger.com/atom/ns#' term='paging'/><category scheme='http://www.blogger.com/atom/ns#' term='committed bytes'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='faults'/><category scheme='http://www.blogger.com/atom/ns#' term='page'/><category scheme='http://www.blogger.com/atom/ns#' term='RAM'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual memory'/><title type='text'>General: Understanding Memory - Available Bytes</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;You can watch real memory filling up by monitoring Available Bytes, which represents free, unallocated RAM. Available Bytes counts the number of free pages in RAM at any particular time; it is the all-important buffer of free pages the OS maintains in order to resolve page faults quickly. The Available Bytes counter, like all the real memory allocation counters, report the amount of RAM currently not allocated to any process in bytes.&lt;br /&gt;&lt;br /&gt;When you launch Task Manager, on the Performance Tab, the &lt;em&gt;MEM Usage&lt;/em&gt; and &lt;em&gt;Memory Usage History Graphs&lt;/em&gt; refer to virtual memory &lt;em&gt;Committed Bytes&lt;/em&gt;. The value corresponds to the &lt;em&gt;Commit Charge (K) Total&lt;/em&gt; field in the lower-left quadrant. The Task Manager Commit Charge field reports on virtual memory allocations in 1024 kilobytes (KB) segments; the corresponding Committed Bytes Limit is also shown. The Memory Usage History graph charts Committed Bytes against the Commit Limit, which servers as the maximum value for the Y-axis.&lt;br /&gt;&lt;br /&gt;In the upper-right text quadrant (immediately below the Memory Usage History timeline), the Task Manager shows Total system memory (the amount of installed RAM), Available, and System Cache, all denominated in 1000 bytes. The Task Manager Available field corresponds exactly to the System Monitor Available Kbytes counter, by the way.&lt;br /&gt;&lt;br /&gt;As you open new applications on your desktop, watch as virtual memory Committed Bytes increases while Available Bytes decreases in tandem. &lt;span style="color:#000099;"&gt;&lt;strong&gt;As a general rule of thumb, a 5 – 10% cushion of Available Bytes is normally ample&lt;/strong&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;If you are able to start enough application programs, you will eventually observe that the number of Committed Bytes begins to exceed the amount of physical RAM installed. This is the first indication that real memory might be filling up. As long as Committed Bytes is less than the amount of RAM installed, every virtual memory page requested by application process can fit in RAM. That means the amount of RAM installed is sufficient for this workload. However, just because Committed Bytes is greater than the amount of RAM installed dos not mean RAM is completely allocated. Some applications committed pages that have not been referenced in a long time may not be currently resident in real memory. Idle pages are subject to being paged out of the system, so RAM may still not be completely allocated.&lt;br /&gt;&lt;br /&gt;Windows continues to permit applications to allocate more virtual memory up to the &lt;em&gt;Committed Bytes Limit&lt;/em&gt;. If your applications continue to add more Committed Bytes to the system, at some point all those active virtual memory pages will not fit easily into physical RAM and you will start to notice an impact on system performance. At this point of time, when you click on an application that you have not accessed in a while, you are likely to hear the hard disk grinding away. Windows is performing paging I/O to the disk, taking older pages in memory and writing them to the paging file to make room for current pages that t must read back into memory from the paging file disk. As you continue to open new applications and drive Committed Bytes higher, the slowdown in system performance will eventually become acute, which eventually might leads to &lt;em&gt;trashing&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;When the number of virtual memory Committed Bytes starts to exceed the amount of physical RAM&lt;/span&gt;&lt;/strong&gt; installed, you can probably also observe that the &lt;strong&gt;&lt;span style="color:#000099;"&gt;number of Available Bytes begins to stabilize at approximately 4MB&lt;/span&gt;&lt;/strong&gt;. Windows attempts to maintain a 4MB cushion of Available Bytes in order to service application requests for a new page quickly. If the working sets of active processes exceed the size of physical memory, there is contention for real memory. In Windows, you can often observe signs of this contention when the system’s pool of Available Bytes reaches about 4MB. At approximately 4MB of available RAM, Windows crosses a threshold where behavior of its virtual memory management policy changes. If Windows has difficulty maintaining a 4MB pool of available RAM and the demand for virtual memory continues to increase, you will likely observe telltale signs of trashing.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;The above was extracted from the book, &lt;/span&gt;&lt;a href="http://www.oreilly.com/catalog/w2kperf/toc.html"&gt;&lt;span style="font-family:arial;"&gt;Windows 2000 Performance Guide by Mark Friedman &amp;amp; Odysseas Pentakalos&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&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/6767212759522432339-8532067071242249495?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/8532067071242249495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=8532067071242249495' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/8532067071242249495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/8532067071242249495'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/general-understanding-memory-available.html' title='General: Understanding Memory - Available Bytes'/><author><name>Hs</name><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-6767212759522432339.post-4388816137315902466</id><published>2007-05-06T23:19:00.001+08:00</published><updated>2007-05-17T11:27:25.240+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='download'/><category scheme='http://www.blogger.com/atom/ns#' term='controller'/><category scheme='http://www.blogger.com/atom/ns#' term='runtime'/><category scheme='http://www.blogger.com/atom/ns#' term='Step Download Timeout'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadRunner'/><category scheme='http://www.blogger.com/atom/ns#' term='Vugen'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Scripts: Step Download Timeout</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Step Download Timeout&lt;/strong&gt; means that the step needed to performed for the subsequent step to be performed have reached its timeout limit (&lt;span style="color:#000099;"&gt;default is 120 secs&lt;/span&gt;) in LoadRunner. A more detailed explanation can be found in &lt;/span&gt;&lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=15370&amp;Product=LR"&gt;&lt;span style="font-family:arial;"&gt;KB 15370&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; .&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Having mentioned the above, there are situations we must take note when this error occur. If the error occurs during the generation of the script (replay in Vugen), it could mean that the application is really taking time of more than 120 secs to complete the download of the resources. You may want to configure the timing to suit your application needs.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;If the error occurs during a scenario execution and happens in the middle of the scenario (usually with a large amount of load), the application is handling alot of load and unable to attend to all the vuser request, thus (maybe) taking more than the configured download timing. For this, it will be better advisable to look at the system utilization of the servers to seeth out any performance problems.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;To determine the initial problem, we can ask the following questions.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;1. Does the error occur in Vugen?&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;2. Does the error occur in Controller?&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;3. If yes for (2), does it occur in the start of the scenario run or in the middle of the&lt;br /&gt;scenario run?&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;4. If yes for (2), what is the amount of running users when the error occur?&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The above, can scope down to the area of problem and allow you to determine your next course of action.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;If you have decided that the Step Download Time needs to be configured, you can configure that in the Runtime Settings of the script. KBs that described solutions are listed below.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=15370&amp;amp;Product=LR"&gt;&lt;span style="font-family:arial;"&gt;KB 15370&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=15450&amp;Product=LR"&gt;&lt;span style="font-family:arial;"&gt;KB 15450&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=11299&amp;amp;Product=LR"&gt;&lt;span style="font-family:arial;"&gt;KB 11299&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://kb-web.mercury.com/KBA/KBAview.asp?Conceptid=22864&amp;Product=LR"&gt;&lt;span style="font-family:arial;"&gt;KB 22864&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;To access the above articles, please ensure that you have a valid user login into the Support Website. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Final note, its best to determine the characteristics of your application before applying the configuration. (Do not configure to suit the load test but rather let the load test determine the configuration)&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/6767212759522432339-4388816137315902466?l=loadrunnertnt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://loadrunnertnt.blogspot.com/feeds/4388816137315902466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6767212759522432339&amp;postID=4388816137315902466' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4388816137315902466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default/4388816137315902466'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/2007/05/scripts-step-download-timeout.html' title='Scripts: Step Download Timeout'/><author><name>Hs</name><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-6767212759522432339.post-5658804797830248202</id><published>2007-05-06T15:32:00.000+08:00</published><updated>2007-05-08T10:52:06.376+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='threshold'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual'/><category scheme='http://www.blogger.com/atom/ns#
