[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference microw::acmsxp

Title:ACMSxp product questions and comments
Notice:Refer to notes 1 through 11 for conference information
Moderator:DUCAT::ROSCOE
Created:Tue Oct 05 1993
Last Modified:Thu Jun 05 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:282
Total number of notes:1134

273.0. "How to tune on ACMSxp/WNT" by TKOV60::SHINDO (Y.Shindo/EJ3 PSC/Tokyo/Japan/8-699-4652) Thu Apr 10 1997 07:13

Hi,

We are doing TPC-C benchmark with ACMSxp V3.0 for WNT/Intel.
Because of some unexpected reason(by customer), the schedule is put off till 
beginning of May.

BTW, we've tried to obtain the info for the performance tuning on WNT box, 
however, not good.

We don't know how we can tune up the ACMSxp on WNT box, except increasing the
number of threads for task server and the number of process for processing 
server. 
Of course, we read the 'Performance and Tuning of Application' guide, but it 
doesn't say much.

In general, on what should we concentrate to tune the performance on WNT box ? 
I'm sorry it's a vague question but we need any info.

Regards,
Yoshizumi Shindo

T.RTitleUserPersonal
Name
DateLines
273.1CAMINO::ROSCOEFri Apr 11 1997 00:1948
    Hi,
    
    Let me start by suggesting a few things.
    
    1.  You should use the transaction type = none with the shared memory
        transport option between the task and processing server.
    
    2.  For each of the five transaction types
        (payment,stocklevel,neworder,delivery,order status) you should have 
        a separate pool of processing procedures.  
        For delivery, one server should suffice.  For New order 12 servers
        should suffice.  For Order status 4 servers should suffice.  For 
        Payment, 8 servers should suffice.  For stocklevel 10 servers
        should suffice.  The The delivery processing server which would
        queue the request to the microsoft delivery server should have 
        approximately 10 threads in it. 
    
    3.  You should pass the workspace from the client to the processing
        procedure as a octet array of bytes.  
    
    I need to know the following:
    
    1.  What is being used to drive the front end?  Some type of RTE on
        UNIX perhaps?
    
    2.  What is the front end based on?  Is it a web based front end?
        
    3.  How many users will be used in the benchmark?  How many front ends? How
        many users per front end?  What type of machine is the front end?
        How much memory does each front end have?  Do the front end 
        machine(s) have a single CPU.
    
    4.  What type of backend machine is being used for the database?
        How much memory, how many CPU's.
      
    5.  What database are you using?  How many warehouses does the
        database have?  How many connections does the database allow?
    
    If your client code is using a Web based front end, be sure to make
    good use of the string manipulation routines to pass data to and from
    the client, they are expensive.  Watch our for excessive use of 
    sprintf routines as well.
    
    How much experience does the team have in running a TPCC benchmark?
    
    
    Rich
    
273.2more infoTKOV60::SHINDOY.Shindo/EJ3 PSC/Tokyo/Japan/8-699-4652Fri Apr 11 1997 04:58149
Rich,
Thanks for the info.

Let me clarify some point and also please see my comments preceded by YS> in 
your comments.

First of all, our TPC-C benchmark is planned by NTT and they've tried to do
benchmark with several TPmonitor on Unix and on WNT. 

Target TP monitors are
        + WNT/Intel box -- ACMSxp(Digital)
                           TUXEDO(Unisys/Sun)
                           TOPEND(NCR)
        + Unix box      -- TUXEDO(Unisys/Sun)
                           TOPEND(NCR)
                           Encina(HP)

So we've provided the source files for TPC-C application from NTT and have to 
use these sources. This means we cannot modify sources by ourselves to tune up.

Measurement Configuration is like below.
Front End(RTE is the console program running on Unix box(Sun))

                                        \
        Front End(Unisys/Sun) X 2       \        Back End(Target TP monitor)
                                        \
  +-----------+                         \
  |RTE        |                         \
  | controller|                         \
  +-----------+                         \
        |                               \
   RTE  V              Task Svr         \   Task Svr            Processing Svr
    +--------------+   +--------------+ \  +--------------+     +--------------+
    |(NewOrder)    ||  |(Neworder)    | \  |(Neworder)    |     |(Neworder)    |
    |(Payment)     |+  |(Payment)     | \  |(Payment)     |     |(Payment)     |
    |(OrderStatus) ||  |(OrderStatus) | \  |(OrderStatus) |     |(OrderStatus) |
    |(Delivery)    ||  |(Delivery)    | \  |(Delivery)    |     |(Delivery)    |
    |(StockLevel)  ||  |(StockLevel)  | \  |(StockLevel)  |     |(StockLevel)  |
    +--------------+|  +--------------+ \  +--------------+     +--------------+
     +--------------+                   \                           |
        ...                             \                           |
                                        \                        +------+
                                                                 |Oracle|
                                                                 +------+

As for Delivery transaction, we made small program which workarounds the luck
of SUBMIT functionality.

Each vendor is provided the sources for STDL tasks, processing procedures 
written with Pro*C and DDL for Oracle SQL. And basically we'll use these 
sources as they are.

Regards,                                                          
Yoshizumi Shindo
------------------------------------------------------------------------------

    Hi,
    
    Let me start by suggesting a few things.
    
    1.  You should use the transaction type = none with the shared memory
        transport option between the task and processing server.
YS> 
YS> What does it mean ?  Are you saying about -T none option ?
YS>
YS> If so, we have to add several statement for transaction control like,
YS>     EXEC SQL COMMIT WORK,  EXEC SQL ROLLBACK ... and so on 
YS> in processing procedures.
YS> We are not allowed to modify these sources and also these statements 
YS> violate X/Open STDL spec. 
YS>

    2.  For each of the five transaction types
        (payment,stocklevel,neworder,delivery,order status) you should have 
        a separate pool of processing procedures.  
        For delivery, one server should suffice.  For New order 12 servers
        should suffice.  For Order status 4 servers should suffice.  For 
        Payment, 8 servers should suffice.  For stocklevel 10 servers
        should suffice.  The The delivery processing server which would
        queue the request to the microsoft delivery server should have 
        approximately 10 threads in it. 
    
YS>
YS> It's valuable information for us, however we cannot separate processing 
YS> group. As you see in above measurement configuration, all 5 processing 
YS> procedures corresponding to 5 transaction types are included in one 
YS> processing group.
YS>

    3.  You should pass the workspace from the client to the processing
        procedure as a octet array of bytes.  
YS>
YS> We cannot modify sources.
YS>    

    I need to know the following:
    
    1.  What is being used to drive the front end?  Some type of RTE on
        UNIX perhaps?

YS>
YS> RTE and RTE control program are used on Unix box.
YS>

    2.  What is the front end based on?  Is it a web based front end?

YS>
YS> No. It's just console program.
YS>
        
    3.  How many users will be used in the benchmark?  How many front ends? How
        many users per front end?  What type of machine is the front end?
        How much memory does each front end have?  Do the front end 
        machine(s) have a single CPU.

YS>
YS> We have two Front End machine, Ultra SPARC(512MB/single processor). I don't
YS> know the exact number of users(transaction) per Front End.
YS> 

    4.  What type of backend machine is being used for the database?
        How much memory, how many CPU's.
      
YS>
YS> Back End machine for WNT is NCR WorldMark4300(512MB/4 processor).
YS>
    
    5.  What database are you using?  How many warehouses does the
        database have?  How many connections does the database allow?

YS>
YS> We are using Oracle 7.3.2.
YS> In current plan, we have 3 or 4 warehouses
YS>
    
    If your client code is using a Web based front end, be sure to make
    good use of the string manipulation routines to pass data to and from
    the client, they are expensive.  Watch our for excessive use of 
    sprintf routines as well.
    
    How much experience does the team have in running a TPCC benchmark?
    
YS>
YS> We are almost novice for TPC-C benchmark.
YS>
    
    Rich
    
273.3CAMINO::ROSCOEFri Apr 11 1997 12:3311
    What  transaction model is being used to compile the task and
    processing procedure groups?
    
    In your picture is the second task server and processing procedures
    on the same box as the database?  Or is sqlnet used to  connect to 
    the database which is on a different box?
    
    Once I get answers to these two questions I'll give my full opinion
    of this test.
    
    Rich
273.4CAMINO::ROSCOEFri Apr 11 1997 13:114
    Would you please post the task code for each of the 5 transactions
    as well.
    
    rich
273.5TKOV60::SHINDOY.Shindo/EJ3 PSC/Tokyo/Japan/8-699-4652Mon Apr 14 1997 13:05316
Rich,

.3>    What  transaction model is being used to compile the task and
.3>    processing procedure groups?

We've compiled sources with -T single option.
    
.3>    In your picture is the second task server and processing procedures
.3>    on the same box as the database?  Or is sqlnet used to  connect to 
.3>    the database which is on a different box?

We don't make use of SQLnet anywhere. Oracle resides on the same box as 
ACMSxp servers.
    
.3>    Once I get answers to these two questions I'll give my full opinion
.3>    of this test.

Thanks in advance.

.4>    Would you please post the task code for each of the 5 transactions
.4>    as well.

I attached 5 task code, 

TASK pt0s2001 is corresponding to NewOrder TXN, pt0s2002 is to OrderStatus TXN,
pt0s2003 is to Payment TXN, pt0s2004 is to StockLevel TXN and pt0s2005 is to 
Delivery TXN.

As I mentioned in previos reply, these sources are provided by NTT(actually 
made by Unisys), however quality is very bad(This is the reason why schedule 
is postponed). 

Even now we can see unexpected status code, like -38000. 
According to the processing procedure which are also provided by Unisys, the 
number -38000 seems to be one of the SQLcodes ????

Anyway please see attached sources .

Regards,
Yoshizumi Shindo
===============================================================================
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:11
! Input Source File is : MIA1_3/pt0s2001.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
#include "neworreq.std"
#include "neworres.std"
TASK PT0S2001
IN PGTPC011
        USING NEWORREQ PASSED AS INPUT  ,
            NEWORRES PASSED AS OUTPUT ;
        RESTARTABLE ;
        rtn_deadlock :
        BLOCK WITH TRANSACTION
                BLOCK
                        AUDIT "start pt0s2001." , NEWORREQ ;
                END BLOCK
                ;
                BLOCK
                        CALL PROCEDURE TPCCNEW IN PPTPC011 USING NEWORREQ ,
                            NEWORRES
                        ;
                END
                EXCEPTION HANDLER IS
                        BLOCK
                                IF NEWORRES.lk_res_rtn_code =   "-38000"
                                    OR 
                                    EXCEPTION-INFO-WORKSPACE.EXCEPTION-CODE
                                    =   04691841
                                THEN
                                        AUDIT "TEST ROLLBACK NON-TRA" , NEWORRES ;
                                        RAISE EXCEPTION CLASS AP-INVOCATION-FAULT ;
                                ELSE
                                        AUDIT "*** ERROR *** TPCCNEW RET-CODE:" ,
                                        NEWORRES.lk_res_rtn_code ;
                                        AUDIT "not_tran:" , EXCEPTION-INFO-WORKSPACE ;
                                        AUDIT NEWORRES ;
                                        RAISE EXCEPTION CLASS
                                            EXCEPTION-INFO-WORKSPACE.EXCEPTION-CLASS ;
                                END IF ;
                        END ;
                END EXCEPTION HANDLER
                ;
                AUDIT NEWORRES ;
                EXIT TASK WITH COMMIT TRANSACTION ;
        END BLOCK
        EXCEPTION HANDLER IS
                BLOCK TRANSACTION
                        IF NEWORRES.lk_res_rtn_code =   "-38000"
                            OR 
                            EXCEPTION-INFO-WORKSPACE.EXCEPTION-CODE
                            =   04691841
                        THEN
                                AUDIT "TEST ROLLBACK TRA" , NEWORRES ;
                                GOTO rtn_deadlock WITH ROLLBACK TRANSACTION ;
                        END IF ;
                        AUDIT "parm:" , EXCEPTION-INFO-WORKSPACE ;
                        AUDIT NEWORRES ;
                END ;
        END EXCEPTION HANDLER ;
END TASK ;

===============================================================================
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:11
! Input Source File is : MIA1_3/pt0s2002.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
#include "payreq.std"
#include "payres.std"
TASK PT0S2002
IN PGTPC011
        USING PAYREQ PASSED AS INPUT  ,
            PAYRES PASSED AS OUTPUT ;
        RESTARTABLE ;
        rtn_deadlock :
        BLOCK WITH TRANSACTION
                BLOCK
                        AUDIT "start pt0s2002." , PAYREQ ;
                END BLOCK
                ;
                BLOCK
                        CALL PROCEDURE TPCCPAY IN PPTPC011 USING PAYREQ ,
                            PAYRES
                        ;
                END
                EXCEPTION HANDLER IS
                        BLOCK
                                IF PAYRES.lk_res_rtn_code =   "-38000"
                                    OR 
                                    EXCEPTION-INFO-WORKSPACE.EXCEPTION-CODE
                                    =   04691841
                                THEN
                                        AUDIT "TEST ROLLBACK NON-TRA" , PAYRES ;
                                        RAISE EXCEPTION CLASS AP-INVOCATION-FAULT ;
                                ELSE
                                        AUDIT "not_tran:" , EXCEPTION-INFO-WORKSPACE ;
                                        AUDIT PAYRES ;
                                        RAISE EXCEPTION CLASS
                                            EXCEPTION-INFO-WORKSPACE.EXCEPTION-CLASS ;
                                END IF ;
                        END ;
                END EXCEPTION HANDLER
                ;
                AUDIT PAYRES ;
                EXIT TASK WITH COMMIT TRANSACTION ;
        END BLOCK
        EXCEPTION HANDLER IS
                BLOCK TRANSACTION
                        IF PAYRES.lk_res_rtn_code =   "-38000"
                            OR 
                            EXCEPTION-INFO-WORKSPACE.EXCEPTION-CODE
                            =   04691841
                        THEN
                                AUDIT "TEST ROLLBACK TRA" , PAYRES ;
                                GOTO rtn_deadlock WITH ROLLBACK TRANSACTION ;
                        END IF ;
                        AUDIT "parm:" , EXCEPTION-INFO-WORKSPACE ;
                        AUDIT PAYRES ;
                END ;
        END EXCEPTION HANDLER ;
END TASK ;
===============================================================================
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:12
! Input Source File is : MIA1_3/pt0s2003.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
#include "ostatreq.std"
#include "ostatres.std"
TASK PT0S2003
IN PGTPC011
        USING OSTATREQ PASSED AS INPUT  ,
            OSTATRES PASSED AS OUTPUT ;
        RESTARTABLE ;
        rtn_deadlock :
        BLOCK WITH TRANSACTION
                BLOCK
                        AUDIT "start pt0s2003." , OSTATREQ ;
                END BLOCK
                ;
                BLOCK
                        CALL PROCEDURE TPCCOST IN PPTPC011 USING OSTATREQ ,
                            OSTATRES
                        ;
                END
                EXCEPTION HANDLER IS
                        BLOCK
                                IF OSTATRES.lk_res_rtn_code =   "-38000"
                                    OR 
                                    EXCEPTION-INFO-WORKSPACE.EXCEPTION-CODE
                                    =   04691841
                                THEN
                                        AUDIT "TEST ROLLBACK NON-TRA" , OSTATRES ;
                                        RAISE EXCEPTION CLASS AP-INVOCATION-FAULT ;
                                ELSE
                                        AUDIT "not_tran:" , EXCEPTION-INFO-WORKSPACE ;
                                        AUDIT OSTATRES ;
                                        RAISE EXCEPTION CLASS EXCEPTION-INFO-WORKSPACE.EXCEPTION-CLASS ;
                                END IF ;
                        END ;
                END EXCEPTION HANDLER
                ;
                AUDIT OSTATRES ;
                EXIT TASK WITH COMMIT TRANSACTION ;
        END BLOCK
        EXCEPTION HANDLER IS
                BLOCK TRANSACTION
                        IF OSTATRES.lk_res_rtn_code =   "-38000"
                            OR 
                            EXCEPTION-INFO-WORKSPACE.EXCEPTION-CODE
                            =   04691841
                        THEN
                                AUDIT "TEST ROLLBACK TRA" , OSTATRES ;
                                GOTO rtn_deadlock WITH ROLLBACK TRANSACTION ;
                        END IF ;
                        AUDIT "parm:" , EXCEPTION-INFO-WORKSPACE ;
                        AUDIT OSTATRES ;
                END ;
        END EXCEPTION HANDLER ;
END TASK ;
===============================================================================
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:12
! Input Source File is : MIA1_3/pt0s2004.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
#include "slevreq.std"
#include "slevres.std"
TASK PT0S2004
IN PGTPC011
        USING SLEVREQ PASSED AS INPUT  ,
            SLEVRES PASSED AS OUTPUT ;
        RESTARTABLE ;
        rtn_deadlock :
        BLOCK WITH TRANSACTION
                BLOCK
                        AUDIT "start pt0s2004." , SLEVREQ ;
                END BLOCK
                ;
                BLOCK
                        CALL PROCEDURE TPCCSLEV IN PPTPC011 USING SLEVREQ ,
                            SLEVRES
                        ;
                END
                EXCEPTION HANDLER IS
                        BLOCK
                                IF SLEVRES.lk_res_rtn_code =   "-38000"
                                    OR 
                                    EXCEPTION-INFO-WORKSPACE.EXCEPTION-CODE
                                    =   04691841
                                THEN
                                        AUDIT "TEST ROLLBACK NON-TRA" , SLEVRES ;
                                        RAISE EXCEPTION CLASS AP-INVOCATION-FAULT ;
                                ELSE
                                        AUDIT "not_tran:" , EXCEPTION-INFO-WORKSPACE ;
                                        AUDIT SLEVRES ;
                                        RAISE EXCEPTION CLASS EXCEPTION-INFO-WORKSPACE.EXCEPTION-CLASS ;
                                END IF ;
                        END ;
                END EXCEPTION HANDLER
                ;
                AUDIT SLEVRES ;
                EXIT TASK WITH COMMIT TRANSACTION ;
        END BLOCK
        EXCEPTION HANDLER IS
                BLOCK TRANSACTION
                        IF SLEVRES.lk_res_rtn_code =   "-38000"
                            OR 
                            EXCEPTION-INFO-WORKSPACE.EXCEPTION-CODE
                            =   04691841
                        THEN
                                AUDIT "TEST ROLLBACK TRA" , SLEVRES ;
                                GOTO rtn_deadlock WITH ROLLBACK TRANSACTION ;
                        END IF ;
                        AUDIT "parm:" , EXCEPTION-INFO-WORKSPACE ;
                        AUDIT SLEVRES ;
                END ;
        END EXCEPTION HANDLER ;
END TASK ;
===============================================================================
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:12
! Input Source File is : MIA1_3/pt0s2005.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
#include "delivreq.std"
#include "delivres.std"
#include "sources.std"
TASK PT0S2005
IN PGTPC011
        USING DELIVREQ PASSED AS INPUT  ,
            DELIVRES PASSED AS OUTPUT ,
	    SOURCES PASSED AS INPUT;
        NOT RESTARTABLE ;
        BLOCK WITH TRANSACTION
                BLOCK
                        AUDIT "start pt0s2005." , DELIVREQ ;
                END BLOCK
                ;
                BLOCK
                        SUBMIT TASK PT0S2015 IN PGTPC011 USING DELIVREQ, SOURCES
                        ;
                END
                EXCEPTION HANDLER IS
                        BLOCK
                                AUDIT "not_tran:" , EXCEPTION-INFO-WORKSPACE ;
                                RAISE EXCEPTION CLASS
                                    EXCEPTION-INFO-WORKSPACE.EXCEPTION-CLASS ;
                        END ;
                END EXCEPTION HANDLER
                ;
        END BLOCK
        EXCEPTION HANDLER IS
                BLOCK TRANSACTION
                        AUDIT "parm:" , EXCEPTION-INFO-WORKSPACE ;
                END ;
        END EXCEPTION HANDLER ;
END TASK ;
273.6DUCAT::ROSCOEMon Apr 14 1997 14:1727
Since you are using Oracle on Windows NT this means that you are not yet 
able to use the XA interface.  This means that you must use either the 
none or single transaction model.

Of the two models the transaction model=none is far superior in performance
than the transaction model=single.  If you can, I would modify the 
processing procedure code to call the routines that starts and end the 
transactions directly instead of having the task server call them via
rpc's.  By using the transaction model=none, that will also allow you to use
the global transport option between task and processing procedure.

Because you have the database on the same box as the task and processing
servers that is also going to hinder your performance.  The idea in this
benchmark is to saturate the CPU on the box that has the database running
on it, while pushing the front ends to about 90% of their cpu capacity.
By having the task and processing servers on the same box as the database
the database has less cpu available for its use.

By the way 3-4 warehouses implies that the maximum number of conncurrent users
that can be supported by the database is 30-40 users, if you try to use 
more users than that performance will suffer as well.  Below is the formula
used in this calculation.

Maximum number of users supported by database = number of warehouses * 10

Rich

273.7TKOV60::SHINDOY.Shindo/EJ3 PSC/Tokyo/Japan/8-699-4652Tue Apr 15 1997 04:3752
Rich,

>Since you are using Oracle on Windows NT this means that you are not yet 
>able to use the XA interface.  This means that you must use either the 
>none or single transaction model.
>
>Of the two models the transaction model=none is far superior in performance
>than the transaction model=single.  If you can, I would modify the 
>processing procedure code to call the routines that starts and end the 
>transactions directly instead of having the task server call them via
>rpc's.  By using the transaction model=none, that will also allow you to use
>the global transport option between task and processing procedure.

As I mentioned in previos reply, we use single resourse model. It's because
basically, we are not allowed to modify source files. Of course, even if single
resource model, we have to make 3 procedures for transaction control, 
2 procedures for database access and modify processing group definition to add
initialization and termination procedure, however, it's less impact to original
sources than none resource model.

>Because you have the database on the same box as the task and processing
>servers that is also going to hinder your performance.  The idea in this
>benchmark is to saturate the CPU on the box that has the database running
>on it, while pushing the front ends to about 90% of their cpu capacity.
>By having the task and processing servers on the same box as the database
>the database has less cpu available for its use.

Yes.
We've supposed that database access must be the bottleneck in our configuration,
however this is the equal condition to all vendor.

>By the way 3-4 warehouses implies that the maximum number of conncurrent users
>that can be supported by the database is 30-40 users, if you try to use 
>more users than that performance will suffer as well.  Below is the formula
>used in this calculation.
>
>Maximum number of users supported by database = number of warehouses * 10

According to this issue, we already claimed to NTT that they should prepare 
data for support more warehouses. 


Our configuration and condition is like this.
And now all knowlegde to improve performance is to modify max threads attribute
for task server and max process attribute for processing procedure.

Of course, we should consider to tune Oracle database up finally, but before 
do so we'd like to know the way howto tune up the ACMSxp.

Regards,
Yoshizumi Shindo
273.8DUCAT::ROSCOETue Apr 15 1997 15:0750
Shindo-san,

>>>Of course, we should consider to tune Oracle database up finally, but before 
>>>do so we'd like to know the way how to tune up the ACMSxp.

In addition to ACMSxp modifications you should make sure that no paging
occurs on the box as well.  I assume with 512 Mb of memory on the backend
you are seeing no paging, right?

If the task server that is calling the ACMSxp task server logs connection
request reject errors, or any other kind of connectivity error message
you might want to consider having two ACMSxp task servers that export
the same interface and that are running at the same selection priority.

Given the keying rate of the test I would suspect that if you use two
ACMSxp task servers, 100 threads per task server should be sufficient.
If you use one task server, 200 threads in the task server should be
sufficient.

I also noticed that the task code  does an audit to say that the task
is starting.   In addition the exception handling code does audits as
well.  During the test run are you planning on running with the audit
event filter enabled or disabled?  The auditing that occurs in the 
exception handling part of the code doesn't bother me that much because
you shouldn't be in the exception handler very often if at all.  The
audit at the start of the task  bothers me.  It serves no purpose that 
I can see and, auditing is expensive.  Of course, I already know your 
answer you cannot modify the source code...

Do not have ACMSxp system monitoring turned on during the run.

Your biggest gain in performance is going to be in using the transaction
model=none, with the global transport between task and processing server.  
In my opinion the code modifications required for either the 
single or none option are about the same.  The difference in code 
modifications between the two models is certainly not that different such
that it should be the reason not to use it, in my opinion.


The nice thing about ACMSxp is that their are not a lot of tuning options,
you are aware of all of them.  If your not sure how to tune Windows NT then
I would suggest that you get some local help.  

The STDL compiler does a good job of limiting the amount of generated code 
based on the STDL you have written.  

By the way unless this is going to be an audited benchmark I don't believe 
that you can say that it is a TPCC benchmark when presenting the results.

Rich
273.9DUCAT::ROSCOETue Apr 15 1997 15:117
Shindo-san,

Would you also please send me the include files used by each of the stdl
tasks?  I want to run the code through the stdl compiler and take a look
at the generated code. 

Rich
273.10TKOV60::SHINDOY.Shindo/EJ3 PSC/Tokyo/Japan/8-699-4652Wed Apr 16 1997 11:3682
Rich,
Thanks a lot.

>Given the keying rate of the test I would suspect that if you use two
>ACMSxp task servers, 100 threads per task server should be sufficient.
>If you use one task server, 200 threads in the task server should be
>sufficient.

Probabry we will use only one task server in the test, so we will set 200 
threads for that server.

>I also noticed that the task code  does an audit to say that the task
>is starting.   In addition the exception handling code does audits as
>well.  During the test run are you planning on running with the audit
>event filter enabled or disabled?  The auditing that occurs in the 
>exception handling part of the code doesn't bother me that much because
>you shouldn't be in the exception handler very often if at all.  The
>audit at the start of the task  bothers me.  It serves no purpose that 
>I can see and, auditing is expensive.  Of course, I already know your 
>answer you cannot modify the source code...

If audit statements are written in the task code but only FAULT type of event 
filter is set, what's happen ?
Even in this case, will it cost us much ?

>Do not have ACMSxp system monitoring turned on during the run.

Yes.

>Your biggest gain in performance is going to be in using the transaction
>model=none, with the global transport between task and processing server.  
>In my opinion the code modifications required for either the 
>single or none option are about the same.  The difference in code 
>modifications between the two models is certainly not that different such
>that it should be the reason not to use it, in my opinion.

I'd like to confirm some regarding to none resource mode.
In my understanding, if we'd like to run in none transaction model, we should

	- add initialization and termination procedure entry in processing 
	  group definition
	- add new initialization procedure for database connect
	- add new termination procedure for database disconnect
	- add EXEC SQL COMMIT WORK and EXEC SQL ROLLBACK WORK statement in
	  all existing processing procedure, at least.

As you know, foutunatelly, COMPOSABLE task and shared worksapce are not used 
in TPC-C task sources which we are provided, so all we should do is above
four modification.
Right ?

On the other hand, for single resource model, we should

	- add initialization and termination procedure entry in processing 
	  group definition
	- add new initialization procedure for database connect
	- add new termination procedure for database disconnect
	- add 3 new procedures for transaction control, which are
		stdl_start_transaction()
		stdl_commit_transaction()
		stdl_rollback_transaction()
Right ?		

Global transport between task and processing server is used automatically
if we use in transaction model=none ?
Or, we should setup something for that ?

>The nice thing about ACMSxp is that their are not a lot of tuning options,
>you are aware of all of them.  If your not sure how to tune Windows NT then
>I would suggest that you get some local help.  
>
>The STDL compiler does a good job of limiting the amount of generated code 
>based on the STDL you have written.  
>
>By the way unless this is going to be an audited benchmark I don't believe 
>that you can say that it is a TPCC benchmark when presenting the results.

I think so...

Regards,
Yoshizumi Shindo
273.11Record difinitionsTKOV60::SHINDOY.Shindo/EJ3 PSC/Tokyo/Japan/8-699-4652Wed Apr 16 1997 11:47230
Rich,

Here are the record definitions.

I attached 10 STDL record definition files. I put the file name in the 
brackets.

Thanks,
Yoshizumi Shindo
-------------------------------------------------------------------------------
[neworreq.std]
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:10
! Input Source File is : MIA1_3/neworreq.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
TYPE
neworreq RECORD 
        lk_req_w_id TEXT SIZE 4 ;
        lk_req_d_id TEXT SIZE 2 ;
        lk_req_c_id TEXT SIZE 4 ;
        lk_req_ol_supply_w_id ARRAY SIZE 15 OF TEXT SIZE 4 ;
        lk_req_ol_i_id ARRAY SIZE 15 OF TEXT SIZE 6 ;
        lk_req_ol_quantity ARRAY SIZE 15 OF TEXT SIZE 2 ;
END RECORD  ;
-------------------------------------------------------------------------------
[neworres.std]
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:10
! Input Source File is : MIA1_3/neworres.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
TYPE
neworres RECORD 
        lk_res_w_id TEXT SIZE 4 ;
        lk_res_d_id TEXT SIZE 2 ;
        lk_res_c_id TEXT SIZE 4 ;
        lk_res_c_last TEXT SIZE 16 ;
        lk_res_c_credit_id TEXT SIZE 2 ;
        lk_res_c_discount TEXT SIZE 5 ;
        lk_res_w_tax TEXT SIZE 5 ;
        lk_res_d_tax TEXT SIZE 5 ;
        lk_res_o_ol_cnt TEXT SIZE 2 ;
        lk_res_o_id TEXT SIZE 8 ;
        lk_res_o_entry_d_1 TEXT SIZE 8 ;
        lk_res_o_entry_d_2 TEXT SIZE 8 ;
        lk_res_total_amount TEXT SIZE 9 ;
        lk_res_supply_w_id ARRAY SIZE 15 OF TEXT SIZE 4 ;
        lk_res_i_id ARRAY SIZE 15 OF TEXT SIZE 6 ;
        lk_res_i_name ARRAY SIZE 15 OF TEXT SIZE 24 ;
        lk_res_ol_quantity ARRAY SIZE 15 OF TEXT SIZE 2 ;
        lk_res_s_quantity ARRAY SIZE 15 OF TEXT SIZE 4 ;
        lk_res_brand_generic ARRAY SIZE 15 OF TEXT SIZE 1 ;
        lk_res_i_price ARRAY SIZE 15 OF TEXT SIZE 5 ;
        lk_res_ol_amount ARRAY SIZE 15 OF TEXT SIZE 6 ;
        lk_res_rtn_type TEXT SIZE 1 ;
        lk_res_err_prg TEXT SIZE 1 ;
        lk_res_rtn_code TEXT SIZE 6 ;
        lk_res_err_inf TEXT SIZE 55 ;
END RECORD  ;
-------------------------------------------------------------------------------
[payreq.std]
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:10
! Input Source File is : MIA1_3/payreq.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
TYPE
payreq RECORD 
        lk_req_w_id TEXT SIZE 4 ;
        lk_req_d_id TEXT SIZE 2 ;
        lk_req_h_amount TEXT SIZE 6 ;
        lk_req_c_id TEXT SIZE 4 ;
        lk_req_c_last TEXT SIZE 16 ;
        lk_req_c_w_id TEXT SIZE 4 ;
        lk_req_c_d_id TEXT SIZE 2 ;
END RECORD  ;
-------------------------------------------------------------------------------
[payres.std]
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:10
! Input Source File is : MIA1_3/payres.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
TYPE
payres RECORD 
        lk_res_w_id TEXT SIZE 4 ;
        lk_res_d_id TEXT SIZE 2 ;
        lk_res_c_id TEXT SIZE 4 ;
        lk_res_c_d_id TEXT SIZE 2 ;
        lk_res_c_w_id TEXT SIZE 4 ;
        lk_res_h_amount TEXT SIZE 6 ;
        lk_res_h_date_1 TEXT SIZE 8 ;
        lk_res_h_date_2 TEXT SIZE 8 ;
        lk_res_w_street_1 TEXT SIZE 20 ;
        lk_res_w_street_2 TEXT SIZE 20 ;
        lk_res_w_city TEXT SIZE 20 ;
        lk_res_w_state TEXT SIZE 2 ;
        lk_res_w_zip TEXT SIZE 9 ;
        lk_res_d_street_1 TEXT SIZE 20 ;
        lk_res_d_street_2 TEXT SIZE 20 ;
        lk_res_d_city TEXT SIZE 20 ;
        lk_res_d_state TEXT SIZE 2 ;
        lk_res_d_zip TEXT SIZE 9 ;
        lk_res_c_first TEXT SIZE 16 ;
        lk_res_c_middle TEXT SIZE 2 ;
        lk_res_c_last TEXT SIZE 16 ;
        lk_res_c_street_1 TEXT SIZE 20 ;
        lk_res_c_street_2 TEXT SIZE 20 ;
        lk_res_c_city TEXT SIZE 20 ;
        lk_res_c_state TEXT SIZE 2 ;
        lk_res_c_zip TEXT SIZE 9 ;
        lk_res_c_phone TEXT SIZE 16 ;
        lk_res_c_since_1 TEXT SIZE 8 ;
        lk_res_c_since_2 TEXT SIZE 8 ;
        lk_res_c_credit TEXT SIZE 2 ;
        lk_res_c_credit_lim TEXT SIZE 7 ;
        lk_res_c_discount TEXT SIZE 5 ;
        lk_res_c_balance TEXT SIZE 8 ;
        lk_res_c_data TEXT SIZE 200 ;
        lk_res_rtn_type TEXT SIZE 1 ;
        lk_res_err_prg TEXT SIZE 1 ;
        lk_res_rtn_code TEXT SIZE 6 ;
        lk_res_err_inf TEXT SIZE 55 ;
END RECORD  ;
-------------------------------------------------------------------------------
[ostatreq.std]
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:10
! Input Source File is : MIA1_3/ostatreq.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
TYPE
ostatreq RECORD 
        lk_req_w_id TEXT SIZE 4 ;
        lk_req_d_id TEXT SIZE 2 ;
        lk_req_c_id TEXT SIZE 4 ;
        lk_req_c_last TEXT SIZE 16 ;
END RECORD  ;
-------------------------------------------------------------------------------
[ostatres.std]
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:10
! Input Source File is : MIA1_3/ostatres.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
TYPE
ostatres RECORD 
        lk_res_w_id TEXT SIZE 4 ;
        lk_res_d_id TEXT SIZE 2 ;
        lk_res_c_id TEXT SIZE 4 ;
        lk_res_c_first TEXT SIZE 16 ;
        lk_res_c_middle TEXT SIZE 2 ;
        lk_res_c_last TEXT SIZE 16 ;
        lk_res_c_balance TEXT SIZE 8 ;
        lk_res_o_id TEXT SIZE 8 ;
        lk_res_o_entry_d_1 TEXT SIZE 8 ;
        lk_res_o_entry_d_2 TEXT SIZE 8 ;
        lk_res_o_carrier_id TEXT SIZE 2 ;
        lk_res_ol_suppley_w_id ARRAY SIZE 15 OF TEXT SIZE 4 ;
        lk_res_ol_i_id ARRAY SIZE 15 OF TEXT SIZE 6 ;
        lk_res_ol_quantity ARRAY SIZE 15 OF TEXT SIZE 2 ;
        lk_res_ol_amount ARRAY SIZE 15 OF TEXT SIZE 6 ;
        lk_res_ol_delivery_d_1 ARRAY SIZE 15 OF TEXT SIZE 8 ;
        lk_res_ol_delivery_d_2 ARRAY SIZE 15 OF TEXT SIZE 8 ;
        lk_res_rtn_type TEXT SIZE 1 ;
        lk_res_err_prg TEXT SIZE 1 ;
        lk_res_rtn_code TEXT SIZE 6 ;
        lk_res_err_inf TEXT SIZE 55 ;
END RECORD  ;
-------------------------------------------------------------------------------
[slevreq.std]
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:12
! Input Source File is : MIA1_3/slevreq.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
TYPE
slevreq RECORD 
        lk_req_w_id TEXT SIZE 4 ;
        lk_req_d_id TEXT SIZE 2 ;
        lk_req_threshold TEXT SIZE 2 ;
END RECORD  ;
-------------------------------------------------------------------------------
[slevres.std]
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:12
! Input Source File is : MIA1_3/slevres.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
TYPE
slevres RECORD 
        lk_res_w_id TEXT SIZE 4 ;
        lk_res_d_id TEXT SIZE 2 ;
        lk_res_threshold TEXT SIZE 2 ;
        lk_res_low_stock TEXT SIZE 3 ;
        lk_res_rtn_type TEXT SIZE 1 ;
        lk_res_err_prg TEXT SIZE 1 ;
        lk_res_rtn_code TEXT SIZE 6 ;
        lk_res_err_inf TEXT SIZE 55 ;
END RECORD  ;
-------------------------------------------------------------------------------
[delivreq.std]
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:09
! Input Source File is : MIA1_3/delivreq.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
TYPE
delivreq RECORD 
        lk_req_w_id TEXT SIZE 4 ;
        lk_req_o_carrier_id TEXT SIZE 2 ;
        lk_req_s_date TEXT SIZE 8 ;
        lk_req_s_time TEXT SIZE 8 ;
        lk_req_client_id TEXT SIZE 3 ;
        lk_req_trmnl_id TEXT SIZE 5 ;
END RECORD  ;
-------------------------------------------------------------------------------
[delivres.std]
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:09
! Input Source File is : MIA1_3/delivres.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
TYPE
delivres RECORD 
        lk_res_w_id TEXT SIZE 4 ;
        lk_res_o_carrier_id TEXT SIZE 2 ;
        lk_res_s_date TEXT SIZE 8 ;
        lk_res_s_time TEXT SIZE 8 ;
        lk_res_d_id ARRAY SIZE 10 OF TEXT SIZE 2 ;
        lk_res_o_id ARRAY SIZE 10 OF TEXT SIZE 8 ;
        lk_res_client_id TEXT SIZE 3 ;
        lk_res_trmnl_id TEXT SIZE 5 ;
        lk_res_rtn_type TEXT SIZE 1 ;
        lk_res_err_prg TEXT SIZE 1 ;
        lk_res_rtn_code TEXT SIZE 6 ;
        lk_res_err_inf TEXT SIZE 55 ;
END RECORD  ;
273.12CAMINO::ROSCOEWed Apr 16 1997 14:5855
>>>If audit statements are written in the task code but only FAULT 
>>>type of event filter is set, what's happen ?
>>>Even in this case, will it cost us much ?

If the event filter does not specify  auditing it has almost 0 cost.
The setting of your event filter is good news.



>>>	- add initialization and termination procedure entry in processing 
>>>	  group definition
>>>	- add new initialization procedure for database connect
>>>	- add new termination procedure for database disconnect
>>>	- add EXEC SQL COMMIT WORK and EXEC SQL ROLLBACK WORK statement in
>>>	  all existing processing procedure, at least.

>>>As you know, foutunatelly, COMPOSABLE task and shared worksapce are not used 
>>>in TPC-C task sources which we are provided, so all we should do is above
>>>four modification.
>>>Right ?

You need to start the transaction as well.


>>>On the other hand, for single resource model, we should

>>>	- add initialization and termination procedure entry in processing 
>>>	  group definition
>>>	- add new initialization procedure for database connect
>>>	- add new termination procedure for database disconnect
>>>	- add 3 new procedures for transaction control, which are
>>>		stdl_start_transaction()
>>>		stdl_commit_transaction()
>>>		stdl_rollback_transaction()
>>>Right ?		

Right.

In the none model you could just call the three routines 
stdl_start_transaction, stdl_commit_transaction and 
stdl_rollback_transaction in the appropriate places in the processing
procedure code.  If you put an ifdef around the calls you could 
easily switch between the two models.

>>>Global transport between task and processing server is used automatically
>>>if we use in transaction model=none ?
>>>Or, we should setup something for that ?

No. you must compile the processing procedure group specification with the 
-G flag in order to use the global transport option.  If you don't specify
the -G option you will use a DCE RPC to call the task server.  The -G flag
can only be used when you compile the processing procedure group 
specification with the -T none switch.

273.13Please post task group and processing group stdl codeCAMINO::ROSCOEThu Apr 17 1997 02:061
    
273.14TKOV60::SHINDOY.Shindo/EJ3 PSC/Tokyo/Japan/8-699-4652Thu Apr 17 1997 02:55219
Rich,

Here are the STDL sources you required.

	pgtpc011.std -- task group definition
	pptpc011.std -- processing group definition
	
And further, I posted one another task definition file, pt0s2015.std, the 
task which is submitted by task pt0s2005 in Delivery transaction and call 
task pt0c2015 which is in Front End task server.
As I may mentioned previous reply, we workarounded SUBMIT functionality by 
following scenario. 
                            \
                            \
        Front End           \			Back End
                            \
             task server    \     task server           new processing
	      (pgtpc001)    \     (pgtpc011)              server
	     +----------+   \    +----------+      	+--------+
 RTE	     | ...	|   \    |          |      +----->fake()-------+
 (Delivery)--->pt0c2005----------->pt0s2005--------+	+--------+     |(Mail
             |          |   \    |          |      	               | Slot)
             | pt0c2015 |   \    | pt0s2015<-----+                     V
             |          |   \    |          |    |               +----------+
             +----------+   \    +----------+    +-----------------u.w.c.p  |
                            \                                    +----------+
                                                               Detached process

Task pt0s2005 calls processing procedure 'fake' instead of submitting the task
pt0s2015. Processing Procedure 'fake' is also Mail Slot client, which posts 
the arguments into the Mail Slot and returns immediately.
We have one another multithreaded process, which is Mail Slot server and the 
STDL client. This process calles task ptps2015.

Regards,
Yoshizumi Shindo

-------------------------------------------------------------------------------
[pgtpc011.std]
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:10
! Input Source File is : MIA1_3/pgtpc011.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
#include "delivreq.std"
#include "delivres.std"
#include "neworreq.std"
#include "neworres.std"
#include "ostatreq.std"
#include "ostatres.std"
#include "payreq.std"
#include "payres.std"
#include "slevreq.std"
#include "slevres.std"
#include "sources.std"

TASK GROUP PGTPC011
        UUID "2AD95F11-5CE4-11CD-9C95-08002B2FB05C" ;
        VERSION 1.0 ;
        TASK PT0S2001
                USING NEWORREQ PASSED AS INPUT  ,
                    NEWORRES PASSED AS OUTPUT
        ;
        TASK PT0S2002
                USING PAYREQ PASSED AS INPUT  ,
                    PAYRES PASSED AS OUTPUT
        ;
        TASK PT0S2003
                USING OSTATREQ PASSED AS INPUT  ,
                    OSTATRES PASSED AS OUTPUT
        ;
        TASK PT0S2004
                USING SLEVREQ PASSED AS INPUT  ,
                    SLEVRES PASSED AS OUTPUT
        ;
        TASK PT0S2005
                USING DELIVREQ PASSED AS INPUT  ,
                    DELIVRES PASSED AS OUTPUT,
		    SOURCES PASSED AS INPUT
        ;
        TASK PT0S2015
                USING DELIVREQ PASSED AS INPUT ,
			SOURCES PASSED AS INPUT
        ;
END TASK GROUP ;
-------------------------------------------------------------------------------
[pptpc011.std]
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:11
! Input Source File is : MIA1_3/pptpc011.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
#include "delivreq.std"
#include "delivres.std"
#include "neworreq.std"
#include "neworres.std"
#include "ostatreq.std"
#include "ostatres.std"
#include "payreq.std"
#include "payres.std"
#include "slevreq.std"
#include "slevres.std"

PROCESSING GROUP PPTPC011
        SOURCE "C" ;
        PROCEDURE tpccnew
            USING NEWORREQ PASSED AS INPUT  ,
            NEWORRES PASSED AS OUTPUT ;
        PROCEDURE tpccpay
            USING PAYREQ PASSED AS INPUT  ,
            PAYRES PASSED AS OUTPUT ;
        PROCEDURE tpccost
            USING OSTATREQ PASSED AS INPUT  ,
            OSTATRES PASSED AS OUTPUT ;
        PROCEDURE tpccslev
            USING SLEVREQ PASSED AS INPUT  ,
            SLEVRES PASSED AS OUTPUT ;
        PROCEDURE tpccdlv
            USING DELIVREQ PASSED AS INPUT  ,
            DELIVRES PASSED AS OUTPUT ;
END PROCESSING GROUP ;
-------------------------------------------------------------------------------
[pt0s2015.std]
! STDL Converter V1.1-0 Generated Source File 1997-02-17 16:54:12
! Input Source File is : MIA1_3/pt0s2015.std
! Input STDL specification is : MIA V1.3
! Output STDL specification is : SPIRIT V3.0
#include "delivreq.std"
#include "sources.std"
TASK PT0S2015
IN PGTPC011
        USING DELIVREQ PASSED AS INPUT  ,
		SOURCES PASSED AS INPUT;
        RESTARTABLE ;
        WORKSPACES ARE
            DELIVRES PRIVATE ;
        rtn_deadlock :
        BLOCK WITH TRANSACTION
                BLOCK
                        AUDIT "start pt0s2015." , DELIVREQ ;
                END BLOCK
                ;
                BLOCK
                        CALL PROCEDURE TPCCDLV IN PPTPC011 USING DELIVREQ ,
                            DELIVRES
                        ;
                END
                EXCEPTION HANDLER IS
                        BLOCK
                                IF DELIVRES.lk_res_rtn_code =   "-38000"
                                    OR 
                                    EXCEPTION-INFO-WORKSPACE.EXCEPTION-CODE
                                    =   04691841
                                THEN
                                        AUDIT "TEST ROLLBACK NON-TRA" , DELIVRES ;
                                        RAISE EXCEPTION CLASS AP-INVOCATION-FAULT ;
                                ELSE
                                        IF DELIVRES.lk_res_rtn_type =   "1"
                                        THEN
                                                RAISE EXCEPTION CLASS
                                                    EXCEPTION-INFO-WORKSPACE.EXCEPTION-CLASS ;
                                        ELSE
                                                DELIVRES.lk_res_rtn_type
                                                    = "2"
                                                ;
                                                AUDIT "not_tran:" , EXCEPTION-INFO-WORKSPACE ;
                                                AUDIT DELIVRES ;
                                                RAISE EXCEPTION CLASS
                                                    EXCEPTION-INFO-WORKSPACE.EXCEPTION-CLASS ;
                                        END IF ;
                                END IF ;
                        END ;
                END EXCEPTION HANDLER
                ;
                AUDIT DELIVRES ;
        END BLOCK
        EXCEPTION HANDLER IS
                BLOCK TRANSACTION
                        IF DELIVRES.lk_res_rtn_code =   "-38000"
                            OR 
                            EXCEPTION-INFO-WORKSPACE.EXCEPTION-CODE
                            =   04691841
                        THEN
                                AUDIT "TEST ROLLBACK TRA" , DELIVRES ;
                                GOTO rtn_deadlock WITH ROLLBACK TRANSACTION ;
                        ELSE
                                DELIVRES.lk_res_rtn_type
                                    = "2"
                                ;
                                AUDIT "parm:" , EXCEPTION-INFO-WORKSPACE ;
                                AUDIT DELIVRES ;
                        END IF ;
                END ;
        END EXCEPTION HANDLER ;
        BLOCK WITH TRANSACTION
                BLOCK
                        AUDIT "start pt0s2015." , DELIVRES ;
                END BLOCK
                ;
                BLOCK
			AUDIT "sources.dest:",SOURCES.DEST;
                        CALL TASK PT0C2015
                            IN PGTPC001 AT SOURCES.DEST 
				WITH INDEPENDENT USING DELIVRES
                        ;
                END
                EXCEPTION HANDLER IS
                        BLOCK
                                AUDIT "parm2:" , EXCEPTION-INFO-WORKSPACE ;
                                AUDIT DELIVRES ;
                        END ;
                END EXCEPTION HANDLER
                ;
        END BLOCK
        EXCEPTION HANDLER IS
                BLOCK TRANSACTION
                        AUDIT "parm3:" , EXCEPTION-INFO-WORKSPACE ;
                END ;
        END EXCEPTION HANDLER ;
END TASK ;
273.15workspaces should be nonrecoverableCAMINO::ROSCOETue May 06 1997 01:3311
    Shindo-san,
    
    In looking at the stdl code and the generated code, one additional 
    optimization could be made.  The optimization involves a change to the
    stdl task code.  By default workspaces are recoverable when a task
    is restartable.  In the case of this benchmark making the workspaces
    recoverable serves no purupose and adds unnecessary overhead.  You
    might want to consider asking NTT to modify the workspace definitions
    for each task to include the words "not recoverable".
    
    Rich
273.16NOT RESTATBLE TASKTKOV60::SHINDOY.Shindo/EJ3 PSC/Tokyo/Japan/8-699-4652Tue May 06 1997 02:3117
]
Rich,
Thanks for your help.

>    In looking at the stdl code and the generated code, one additional 
>    optimization could be made.  The optimization involves a change to the
>    stdl task code.  By default workspaces are recoverable when a task
>    is restartable.  In the case of this benchmark making the workspaces
>    recoverable serves no purupose and adds unnecessary overhead.  You
>    might want to consider asking NTT to modify the workspace definitions
>    for each task to include the words "not recoverable".

Yes. 
We changed all tasks as 'NOT RESTARTABLE TASK'.

Regards,
Yoshizumi Shindo
273.17CAMINO::ROSCOETue May 06 1997 12:383
    Making the task not restartable will work as well.
    
    Rich
273.18Oracle 8 and XATKOV60::SHINDOY.Shindo/EJ3 PSC/Tokyo/Japan/8-699-4652Fri May 09 1997 07:3716
Rich,

As I mentioned in the E-mail, we received Oracle 8 beta release kit for 
Windows NT from Oracle Japan. This version of Oracle supports XA interface.

Then, we tried to build TP environment with Multi RM model.

BTW, I found LibEncServer.lib file in lib directory, however, I could not 
find tps_txn_xainit.obj for Oracle. (I just found tps_txn_mssql_xainit.obj)

Is it impossible to access Oracle from ACMSxp V3.0 for WindowsNT through XA 
interface ? 

Regards,
Yoshizumi Shindo
273.19DUCAT::ROSCOEFri May 09 1997 13:466
We did not supply the tps_txn_xainit.obj module for Oracle because we had no
way to test it.  We also didn't know if the setup of the XA interface would
be the same on NT as it is on Unix for example.  As soon as we can get it 
working ourselves we will supply you with a pointer to the module.

Rich