Threading...

A common question that I get asked is.. how do we force multi-threaded conversion jobs to split the key ranges evenly across each thread instance?

Unfortunately I don't have an easy answer. The base conversion jobs seem to take a simplistic approach of using the low and high override values (if supplied, otherwise they use values of 0000000000 and 9999999999) and then divide these by the number of threads to determine the ranges for each instance.

But.. We have found that we can force a predefined range of values and simulate threading but having separate batch controls defined for each thread, with predefined high/low values and these can then be run concurrently through standard batch submission processes.. e.g..
if we want to run VAL-ACCT in 4 threads and ensure that a known range of source keys between 0000000001 and 0000100000 is split between the 4 threads, we clone the existing batch control into
VAL-ACCT1, with OVRD-LOW-ID = 0000000001 and OVRD-HIGH-ID = 0000025000
VAL-ACCT2, with OVRD-LOW-ID = 0000025001 and OVRD-HIGH-ID = 0000050000
VAL-ACCT3, with OVRD-LOW-ID = 0000050001 and OVRD-HIGH-ID = 0000075000
VAL-ACCT4, with OVRD-LOW-ID = 0000075001 and OVRD-HIGH-ID = 0000100000

These four jobs can then be submitted alongside each other with Thread Number and Thread Count both set to 1, with no chance of them being rejected by the framework (this normally restricts the same batch control from running more than once at a time). The actual number of instances and the thread ranges of each will need to be adjusted in the same way as we normally do for our optimisation tasks, it is just a little harder since we have to adjust the batch control parameters rather than just the thread counts.

Comments

Maria said…
Thanks Stuart. I'll pass this to the guys and see if it helps.
Unknown said…
Hi Stuart,

How to using that parameters with submitjob in threadpoolworker batch process
Stuart Ramage said…
Not sure I fully understand your question hasainul, but in order to submit the individual processes, you simply define them as single threaded instances (ie submit them as -t1 -c1) with softparms for each High/Low value defined according to your specific ranges.
Unknown said…
stuart , can I have your e-mail ?
we are now in the middle project. We used CCNB ver 2.2 on sun solaris box machine and now we are in the preparation
for data migration form current database to CCNB , we tried with job submittion and unfortunately information from metalink in the version CCNB 2.2 had a bug and recommended to us to using threadpoolworker with submitjob to
process the batch , and when we trying to process with submitjob ,we found many error and unprocessed batch with multiple thread and they suggested to analyze what we was do directly to your blogs
Stuart Ramage said…
hasainul,

you can find my contact details in the Oracle internal directory (ARIA). please note that I have responsiblities which extend beyond management of this blog and cannot guarantee to respond to your questions within a defined time limit (but I will do my best).

Popular posts from this blog

Bundle Corrections.

Database Upgrades and their impact on Conversion