Salesforce

Which Progress process are multi-threaded?

« Go Back

Information

 
TitleWhich Progress process are multi-threaded?
URL NameP73663
Article Number000156714
EnvironmentProduct: Progress
Product: OpenEdge
Version: 9.1x,10.x, 11.x, 12.x
OS: All supported platforms
Question/Problem Description
Is the Progress client multi-threaded ?
Can a Progress client become multi-thread process?
Which Progress process are multi-thread?
Are any Progress programs multi-threaded?
Is Multi-threaded a multi-threaded relationship between the Progress SQL-92 server and client rather than a way for a single task to use multiple CPUs
Is _mprosrv multi-threaded
Is the Progress Client SMP or multiprocessor aware?
Does the progress 4GL client support multi-threaded processing?
Steps to Reproduce
Clarifying Information
Error Message
Defect Number
Enhancement Number
Cause
Resolution

There are Progress/OpenEdge utilities that are multi-threaded at the time of writing (5/13/2019);

  • SQL Server: one thread per client connection
  • PASOE Agent: number of threads configurable, first available in OpenEdge 11.5
  • DB Server:  number of thread configurable, first available in OpenEdge 12.0 
  • DBTOOL: number of thread configurable when run online.
  • In OpenEdge 10, the binary dump and Phase 2 of idxbuild process were enhanced for multi-threading. The binary load process is not multi-threaded.

Since OpenEdge 12, when the database is started with -threadedServer 1, the broker will spawn a threaded database server. The executable name of the threaded database server is _mtprosrv as opposed to _mprosrv for the classic database server. For further information refer to Article  Starting the multithreaded database server  

Prior to OpenEdge 12.0 the broker/server process for ABL clients (_mprosrv) was not multi-threaded. It can spawn multiple server processes, each capable of serving multiple clients (configurable with the -Mn -Ma database login broker startup parameters). The server processes context switch for each client request and when returning batches of records, context switch after a number of records have been sent.

The Progress AppServer for OpenEdge (PAS for OE) is multi-threaded (tomcat and agent, _mproapsv.exe) which can be configured for multiple session threads.

The Classic AppServer / WebSpeed Broker (Server) being a java process - spawns several threads which the OS may allocate across several CPU's. Each Agent being a Progress client (_progress, _proapsv) however, will be assigned by the OS to a CPU but not across CPU's.

The Progress clients (_proapsv, _progress, prowin32, prowin) are single threaded executables and do not support multi-threaded applications. The Progress client being single threaded means that an ABL application cannot be designed to process multiple tasks at the same time. Depending on requirements, a Classic AppServer and asynchronous calls could be used instead:

Since Progress 9.1D,  the OpenEdge SQL Server processes provide a thread per connection. A new thread is created whenever a new connection is established. The thread is terminated when the connection ends. This will still however run as one _sqlsrv2 process (for each remote server spawned) on one CPU.

Only the Enterprise Database Server has specific parameter switches to help better utilize a multiprocessor environment (for example -spin), however it is the underlying operating system which is responsible for directing processes to processors.  Progress expects the operating system to govern evenly distributing the number of processes across available CPU's as opposed to being limited to one sector, unless the OS has explicitly been configured to do so.

Workaround
Notes
Keyword Phrase
Last Modified Date11/20/2020 6:57 AM

Powered by