Randeep,

It seems that you have never worked in an environment where HPOV or other
monitoring applications flood a server with events within a short period of
time that generate hundreds/thousands of records in a short period of time.

Dave

On Thu, Oct 12, 2017 at 10:11 PM Randeep Atwal <ratwals...@gmail.com> wrote:

> **
> Rick, everything that generates NextID's must come through an ARSystem
> server so I don't know what you mean when you say 'If you have multiple
> outside entities creating large number of records at once'
>
> All requests go through the AR Server.
>
> I would theorize that you may have other factors in play once you remove
> the NextID bottleneck by using chunks of 100.  Something to bear in mind is
> that by chunking NextID's, you cause the scalability of the system to go up
> (i.e. more records per second getting created) - but the per record
> response time under high load is likely to go down (due to the system being
> under heavy load, other downstream constraints such as CPU/Disk Speed start
> to appear, where they would not appear if the NextID bottleneck was in
> place)  It effectively acts as a throttle.  So your results could be easily
> misinterpreted.
>
> I would think a way to confirm this is to generate parallel load from a
> high number of worker threads, and time how long it took to reach the same
> number of records created with 1 or 100 for the NextID chunk size.   Then
> compare the times.  Anyway, we are off on a tangent from the original topic
>
> Thomas, I am actually curious as to why you want to know a nextid.  What
> Abhijeet said explains why it doesn't make sense to ask for it, but often
> in workflow scenarios, where you want to generate something unique and
> refer/tie back to something else.  you are better off using 
> Application-Generate-GUID
> [" *GUIDPrefix*" ]
>
>
>
>
>
>
> On Thu, Oct 12, 2017 at 5:27 PM, Rick Cook <remedyr...@gmail.com> wrote:
>
>> **
>> Abhijeet, my results were repeated and conclusive.  Here is the only
>> logical explanation for my findings that makes sense:
>>
>> There is a time cost to the DB call for Entry IDs.  The cost increases
>> incrementally the more that are requested at once.  The thought is that 100
>> individual requests will take substantially more time than retrieving 100
>> IDs in one request.  That thought has been proven to be correct - it's why
>> the feature was added. However, the difference in time was tested against a
>> system that had multiple sources (NMS) attempting to grab multiple Entry
>> IDs at the same time, not a normal system without those multiple outside
>> requests, because it was the first environment that was reporting the
>> problem with performance.
>>
>> On a system where the volume of IDs is high enough to cause a system
>> bottleneck at the DB ID request, *which requires multiple simultaneous
>> requests from different sources*, that bottleneck costs more additional
>> time than is lost by the increased time it takes to request multiple IDs at
>> one time.  However, on a system that is not bound by the Next ID calls to
>> the DB, or has only a single source (AR System) requesting IDs, there is no
>> advantage gained by the multiple requests, because the time "gained" by
>> having a cached ID is negligible - too small to even notice.  And, as my
>> testing proved (to my surprise), there was an increasing net cost to system
>> performance as the number of IDs requested in a single call grew.  This
>> must be because the time it takes to gather, say, 100 records in one call
>> is actually *higher* than it is to do 100 individual calls - IF AR System
>> is the only source of those calls.  The simple correlation is that if AR
>> System is the only thing generating new Request ID requests to the DB, you
>> don't need, and will not benefit from, a number larger than 1.  If you have
>> multiple outside entities creating large number of records at once, you
>> very well may benefit from it.
>>
>> My tests that showed decreasing performance as the Next Id block grew
>> were creating about 1.5 million records, but, and this is important - all
>> were from the same source - AR System workflow.  There were no other
>> simultaneous demands on the table, and few on the system.  Therefore, the
>> system of generating one ID at a time had a cumulatively lower transaction
>> time than it did when it had to wait for multiples to be retrieved and then
>> allocated individually.  The BMC Engineer, who I know to be very smart and
>> experienced with Remedy, had no explanation for my results.  I believe this
>> to be that BMC didn't test against a control (normal) system, and therefore
>> had no data on its effect on them.
>>
>> Why then, they chose to recommend that setting to all customers, is a
>> mystery to me.
>>
>> Rick Cook
>>
>> On Thu, Oct 12, 2017 at 4:56 PM, Gadgil, Abhijeet <
>> abhijeet_gad...@bmc.com> wrote:
>>
>>> **
>>>
>>> Rick, I do not think that is accurate.
>>>
>>> Logically, if the block size is 100 then the server will access the DB
>>> once to retrieve the next block id every 100 records.  If it is 1, then the
>>> server goes to the DB for every record.
>>>
>>> Later cannot be faster.
>>>
>>>
>>>
>>> Further, to answer the original question, returning the next id in an
>>> API call would mean preventing creation of ids by anyone other than the
>>> caller until the id has actually been used -- otherwise the information
>>> might be obsolete before the client receives it. That is the reason for not
>>> exposing it via an API
>>>
>>>
>>>
>>> Regards,
>>>
>>> Abhijeet
>>>
>>>
>>>
>>>
>>>
>>> *From:* Action Request System discussion list(ARSList) [mailto:
>>> arslist@ARSLIST.ORG] *On Behalf Of *Rick Cook
>>> *Sent:* 13 October 2017 02:12
>>> *To:* arslist@ARSLIST.ORG
>>> *Subject:* Re: What's the NextId?
>>>
>>>
>>>
>>> **
>>>
>>> Here's the skinny on that.  I got this from the engineer who built that
>>> feature, btw.
>>>
>>>
>>>
>>> The problem was that system performance was being constricted around the
>>> action of getting the NextId for a record when multiple sources (say,
>>> Netcool and HPOV) were throwing tons of requests at the (Incident) form at
>>> the same time.  The process of getting each Next Entry ID in individual DB
>>> calls was bottlenecking the process of creating the records.  So that's why
>>> BMC came up with a way to pre-allocate those in bulk, so that only every N
>>> times (whatever the number is set to) would an actual call to the DB to get
>>> Next IDs be necessary.  The transaction time to retrieve 1 or 100 wasn't
>>> much different, and those customers with multiple programs requiring many
>>> simultaneous record creations saw a marked performance increase.  It was,
>>> and is, a good feature add.
>>>
>>>
>>>
>>> So (then a miracle occurs) and BMC announces that this particular corner
>>> case had a solution that everyone should benefit from, and announced that
>>> the number should be 100 for *all* customers.  I tested this back in 7.6.04
>>> against a RH server, with settings at 1, 10, 100, and 1000, and found that
>>> performance was actually NEGATIVELY affected the higher the number was
>>> set.  It wasn't a huge difference (10%~), but it was a clear, repeatable
>>> one for which BMC's engineer had no explanation.  It is why I have always
>>> advocated that unless a customer has the specific set of circumstances that
>>> caused the feature to be beneficial, there is no real benefit to setting
>>> the number larger than 1.  And there are minor drawbacks to doing so, the
>>> current subject being one of them.
>>>
>>>
>>>
>>> Every time I ask someone from BMC to justify a larger number to the
>>> average customer, they repeat the party line, unaware of the history behind
>>> the feature.  I will continue to tilt at this windmill until someone at BMC
>>> shows me some performance testing numbers that justify this setting for the
>>> entire customer base.
>>>
>>> Rick
>>>
>>>
>>>
>>> On Oct 12, 2017 13:30, "Thomas Miskiewicz" <tmisk...@gmail.com> wrote:
>>>
>>> **
>>>
>>> i.e. there is no hack to find out the nextID before it actually gets
>>> submitted?
>>>
>>>
>>>
>>> Apart from that, I really don’t understand why BMC makes such a fuss
>>> around the nextID. Why can’t they just provide a special command GET-NEXTID?
>>>
>>>
>>>
>>>
>>>
>>> Thomas
>>>
>>>
>>>
>>>
>>>
>>> On Oct 12, 2017, at 10:26 PM, LJ LongWing <lj.longw...@gmail.com> wrote:
>>>
>>>
>>>
>>> **
>>>
>>> There are no interfaces that I'm aware of to ask a specific server what
>>> the next id it will hand out for a specific form is
>>>
>>>
>>>
>>> On Thu, Oct 12, 2017 at 2:14 PM, Thomas Miskiewicz <tmisk...@gmail.com>
>>> wrote:
>>>
>>> Hello List,
>>>
>>> with NextID Block size being set to 100 —>  is it possible the find out
>>> using the API which will be the next Request-ID that the server will assign
>>> to a request? Or what other options do I have to find out?
>>>
>>>
>>> --Thomas
>>>
>>>
>>> _______________________________________________________________________________
>>> UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
>>> "Where the Answers Are, and have been for 20 years"
>>>
>>>
>>>
>>> _ARSlist: "Where the Answers Are" and have been for 20 years_
>>>
>>>
>>>
>>> _ARSlist: "Where the Answers Are" and have been for 20 years_
>>>
>>> _ARSlist: "Where the Answers Are" and have been for 20 years_
>>> _ARSlist: "Where the Answers Are" and have been for 20 years_
>>>
>>
>> _ARSlist: "Where the Answers Are" and have been for 20 years_
>>
>
> _ARSlist: "Where the Answers Are" and have been for 20 years_

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
"Where the Answers Are, and have been for 20 years"

Reply via email to