<?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-05-30T12:28:07.764+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'/><link rel='alternate' type='text/html' href='http://loadrunnertnt.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6767212759522432339/posts/default?start-index=26&amp;max-results=25'/><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>25</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></feed>
