Resource-Based Throttling - In-process messages

Answered Resource-Based Throttling - In-process messages

  • Friday, August 17, 2012 12:08 PM
     
     

    When configuring the resource-based throttling, per CPU settings, does BizTalk use the logical or physical CPUs of the server for these settings?

    For example, we have a server with a single physical CPU with six cores.  Each of the cores hyper-threads, so windows has 12 logical processors. Does BizTalk treat this as a single CPU or 12 CPUs for the per CPU settings?  I assume it treats it as 12 rather than 1 but could not find any documentation to confirm this.

    In particular we are looking at implementing the in-process messages throttling.  It is stated to work as follows:

     In-process messages per CPU * the number of CPUs available on the box

    Overall, I am trying to determine what BizTalk interprets as "the number of CPU available on the box" for the previously mentioned CPU so that we can appropriately set throttling.


    Laura Smith

All Replies

  • Friday, August 17, 2012 12:50 PM
    Moderator
     
     

    From this article by Tord G. Nordal it seems BizTalk uses the physical CPUs of the server.


    Please mark the post answered your question as answer, and mark other helpful posts as helpful, it'll help other users who are visiting your thread for the similar problem, Regards -Rohit Sharma (http://rohitt-sharma.blogspot.com/)

  • Friday, August 17, 2012 2:16 PM
     
     

    I read this article prior to posting and didn't think it was clear if the per CPU was applicable to physical or logical CPU's.  

    Overall we are seeing more in-process messages then what we have configured for the host in question.  We have two host instances that run under the host question, and have in-process messages set to 8.  Therefore we would expect the maximum number of in-process messages to 16 (8 for each host instance)  

    The send port that run under this host connect to an AS400 via HIS adapter.  We are seeing 40+ connections made to the AS400 so we feel the throttling is not working as expected.

    Could it be that we are throttling in an incorrect manner to set a low threshold of active connections made to the AS400?  Is in-process throttling not the correct throttling measure?


    Laura Smith

  • Saturday, August 18, 2012 7:16 PM
    Moderator
     
     

    Hi Laura,

    It is very interesting question.

    I think only MSFT stuff could provide the right answer.

    If you are doing your investigation, please, post how the is investigation is going on and the results! The BizTalk community would appreciate this.


    Leonid Ganeline [BizTalk MVP] BizTalkien: Naming Conventions for the BizTalk Solutions

  • Saturday, August 18, 2012 9:27 PM
     
     Answered

    Hey, its hard to be really claer every know and then, but here we go:

    It is the logical CPU, so it will count all cores, btw hyper threading is not recommended for BizTalk.

    You you will end up with 12 CPUs in you scenario!

    However tha fact that you had 40+ connection doesnt mean that it is the in-flight messages, and what is the delay on your throttling states? You should also take a look at the tread threshold too, this will make it a lot easier to slow down the application. (If you want even more tips send me a mail and I'll send you some slides and some more screenshots regarding how to throttle down an application)

    It's quite easy to do a test, set up a treshold and go wild. ;)

    Good luck, and let me know if you have any other questions.

    Best regards

    Tord Glad Nordahl
    Bouvet ASA, Norway
    http://www.BizTalkAdmin.com |@tordeman

    Please indicate ”Mark as Answer” if this post has answered the question.

  • Tuesday, September 04, 2012 7:01 PM
     
     Answered

    Tord - 

    Thanks for your response.  We have continued to monitor our environment without seeing the results that we expected.  We are going on the assumption that BizTalk indeed treats our server as having 12 CPUs based on your response above.  We set the in-process message throttling to 2.  We assumed this would allow for 24 in-process messages for each each of the servers that the host is configured to run under.  Since we have 2 host instances running under this host, we expected a total of 48 in-process messages total allowed at any given time.  

    We used perfmon to capture the actual in-process messages as shown below.  One can see that the total for in-process messages exceeds the 24 per server.  At first we thought that the in-process counters was a sum of all in-process messages for a given host rather than per host instance but we discovered this does indeed to be based on each host instance rather than overall sum for the host in question.

    We have left all other throttling settings as their default settings for the host in question.  Perhaps we have misinterpreted how the in-process throttling setting is intended to work?  If we have 12 logical CPUs and throttling set to 2 does this not equate to 24 in-process messages for a given host instance configured to run under this host?

    You had questioned the "delay on our throttling states".  Where does one find this setting?  You also indicated take a look a at thread threshold, would this be a better approach instead of using in-process message throttling?  Overall, we are simply trying to throttle down the connections that a send port makes to a 400 system via the HIS adapter.

    Thanks for all your help.

    Laura


    Laura Smith