Operating System - OpenVMS
cancel
Showing results for 
Search instead for 
Did you mean: 

DECforms, IA64, multithread

 
SOLVED
Go to solution
Klaus Heim
Advisor

DECforms, IA64, multithread

We ported our DECforms Application from AXP to IA64. The Application is written in PASCAL and use the ADABAS database from SAG on IA64. The AXP Version is stable since many years. With IA64 we had a Problem when the Application is linked /threads_enable=(multi,upcall). Our App. is not multithreaded, but for better performance SAG recommendes the Linker qualifier /threads_enable. The Problem is an ACCVIO resp. Forms$_ioerror in forms$enable(). When we link the App. without /threads_enable we had no problem, but the performance is not acceptable. The abnormal end (linked with /threads_enabled) doesn't occur when forms$trace is enabled.
6 REPLIES 6
Hein van den Heuvel
Honored Contributor
Solution

Re: DECforms, IA64, multithread

two things

1) Be sure to get the update DECforms code. The original port causes far too many alignment faults

2) That performance problem, what were its characteristics? Did you see excessive MPsync and when drilling down with SPL TRACE was the SCHED spinlock HOT, followed closely by TIMER?

DECforms, when linked with a DECthreads component, will put itself in a SCHED OTHER thread. This will cause a timer interrupt 10 times per second, per process, to see if all threads are still being treated fairly only to find that no thread is using any CPU(most of the time).
You can stop that behavior with:

$ DEFINE [/SYSTEM] FORMS$SUPPRESS_DECTHREADS Y

I found the logical using STRINGS on FORMS$MANAGER, and Ian found a old release note documenting it, but I can not find that just now.
The current release note does not mention it
http://h71000.www7.hp.com/doc/82final/decforms/forms_release_notes.pdf


This is NOT Itanium specific and has the potential to significantly hurt performance when there are hundreds of DECforms sessions enabled.
Ballpark? 4 GS1280 CPUs for 1000 users just staring at a form/field.

Good luck,
Hein van den Heuvel
HvdH Performance Engineering.

Hein van den Heuvel
Honored Contributor

Re: DECforms, IA64, multithread


Ah! Hoff found the 2003 DECforms V3.3 Release Notes, which mention FORMS$SUPPRESS_DECTHREADS online at:

http://www.s-and-b.ru/syshlp/forms033.release_notes

See details below. Thanks Hoff!

/enable=upcall should also help, but because then DECthreads 'knows' what is going on and does not need a timer based scheduler. But as you indicate I have also seen ACCVIO and OPCCUS program crashed. Details escaped me for now.

Hein

---------
o If DECforms detects DECthreads in the process when loading or during processing, it will take an alternative code path and make use of threading routines.
This however, places restrictions (refer to the "General Restrictions" section below) on how an application can behave when making DECforms requests.
When those restrictions are not adhered to, the FORMS$BLOCKED_BY_THREAD message is returned. If it is not necessary for the application to run in a "threaded manner", the user can define the logical FORMS$SUPPRESS_DECTHREADS to "1" or "Y" before the application is started. This will force DECforms to behave in a non-threaded manner and therefore not place any extra restrictions on request calls.
-------
Klaus Heim
Advisor

Re: DECforms, IA64, multithread

Thank you for this tip. I will test it tomorrow and report the result.
Klaus Heim
Advisor

Re: DECforms, IA64, multithread

The performance problem is as follows:

When we use /nothreads_enable the ADABAS kernel does not use threads. With /threads_enabled ADABAS uses threads for local an remote database access. The IO throughput is significantly better.

When we started our application on Alpha is faster than on IA64. After the hint from SAG (with /threads_enabled) the performance on IA64 is 1.5 to 2 times faster than Alpha.
Klaus Heim
Advisor

Re: DECforms, IA64, multithread

I defined the logical at 27. May and I believe that the problem is solved. Thank you very much for this hint.

We have also reported the problem to HP support a few months ago, but we got no help until today.
Klaus Heim
Advisor

Re: DECforms, IA64, multithread

The solution is to define the logical forms$suppress_decthreads.