Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Linkdepth and maxlinks differences?

581 views
Skip to first unread message

Tamilarasu T

unread,
Sep 27, 2014, 12:07:08 PM9/27/14
to
I was trained in mainframe but started working in tandem. While referring pathway manual, i got confused with the server parameters Linkdepth and maxlinks. They are defined as the maximum number of concurrent request processes that can be queued per a server process. I could understand maxlinks parameter is correlated with the receive control. Can any one please explain how to correlate linkdepth and maxlinks? Also, i m not able to get the syncdepth concepts.
In a prod environment, if a server is receiving 1000 requests per time, increasing which parameters would help? I thought of increasing Maxservers. Would it help? Since increasing maxserver count is limited by the global parameter MAXSERVERPROCES.

Please clarify me to get better understanding in pathway concepts.

thanks in advance!!

Doug Miller

unread,
Sep 28, 2014, 3:03:06 PM9/28/14
to
Tamilarasu T <tamila...@gmail.com> wrote in
news:9c7491cb-2012-4a03...@googlegroups.com:

> I was trained in mainframe but started working in tandem. While
> referring pathway manual, i got confused with the server
> parameters Linkdepth and maxlinks. They are defined as the
> maximum number of concurrent request processes that can be
> queued per a server process. I could understand maxlinks
> parameter is correlated with the receive control. Can any one
> please explain how to correlate linkdepth and maxlinks? Also, i
> m not able to get the syncdepth concepts. In a prod environment,
> if a server is receiving 1000 requests per time, increasing
> which parameters would help? I thought of increasing Maxservers.
> Would it help? Since increasing maxserver count is limited by
> the global parameter MAXSERVERPROCES.

LINKDEPTH must not exceed the number of requests that the server is able to process
concurrently. Since you mention Receive-Control, I assume you're talking about Cobol
servers -- and LINKDEPTH needs to be set to 1.

MAXLINKS is the maximum number of concurrent *links* that the server can handle -- that is,
the maximum number of requester processes that can talk to one copy of the server. For
Cobol servers, this must not exceed the number of entries in the Receive-Control table.

All this is explained in detail in the TS-MP System Management Manual.

Keith Dick

unread,
Sep 28, 2014, 7:31:06 PM9/28/14
to
Doug mentioned that there is a detailed explanation in the TS/MP System Management Manual. To make that more specific, in the current version of that manual (679664-002, published February 2012), the explanation is in chapter 3. The whole chapter of about 25 pages would be good to study, but if you cannot take in the whole chapter, you should at least study the "Configuration Overview" section and the "Configuring Links for Optimum Performance" section. There is a procedure at the very end of the latter section that gives detailed steps for calculating the various attributes' settings for a serverclass.

When you read what I write below, keep in mind the difference between a serverclass and server processes. A serverclass describes a program that can process requests. A server process is one running copy of that program. There may be many server processes active for a serverclass. Each server process performs the requests that are sent to it independently from the other processes of that serverclass (except that they may block each other if they need to lock some common resource).

I think the most important thing to say is that to make your system capable of handling a larger transaction rate, the two main things you can to do are increase MAXSERVERS, as you mentioned, and reduce the time it takes a server program to process a single transaction. Reducing the time it takes a server program to process a single transaction generally would involve redesigning the database to reduce the amount of I/O needed, so that is not an easy thing to do, and might not be possible at all. That leaves increasing MAXSERVERS as probably the only practical approach. This increases the number of copies of the server program running, so that more transactions can be processed in parallel. If your Pathway system's setting of MAXSERVERPROCESSES does not allow you to increase the value of MAXSERVERS, you might have to restart your Pathway system with a larger value for MAXSERVERPROCESSES. If your Pathway system already has MAXSERVERPROCESSES set to its upper limit, there
are other things you can do to increase the number of server processes, but without knowing some details of your current environment, I don't want to suggest a particular approach.

It might be necessary to add some requester processes in other CPUs or spread the existing requester processes across more CPUs if they are concentrated in just a few CPUs. All the Pathsend requesters in a given CPU share the link manager in that CPU, so if you need to get more link managers involved, you need the requesters to be in more CPUs.

The difference between LINKDEPTH and MAXLINKS is that LINKDEPTH limits the number of opens from a single link manager, while MAXLINKS limits the total number of opens from all link managers.

Unless a single copy of the server program can process more than one request simultaneously (is multithreaded), LINKDEPTH must be set to 1. Writing a multithreaded server program is rather complicated, and not even possible in COBOL, so it is very rare that LINKDEPTH should be set to anything other than 1. LINKDEPTH gives the maximum number of opens any link manager (basically the agent process that sends a request to a server process on behalf of the actual requester) may have to a given server process. A link manager has at most one request outstanding on an open at any given time, so LINKDEPTH 1 means that each link manager may have at most one request outstanding to a given server process. A link manager may have links to more than one process of a serverclass open at the same time, so LINKDEPTH 1 does not limit the number of simultaneous requests a link manager may have in progress for a serverclass -- it may have one request in progress for each server process it h
as open.

When LINKDEPTH is 1, as it almost always is, MAXLINKS essentially says how many link managers may have a particular process of the serverclass open at the same time. This does NOT mean that the server process performs MAXLINKS requests at once. The server process performs one request at a time, so up to MAXLINKS-1 requests are queued, waiting for requests ahead of them to be done. So increasing MAXLINKS does NOT increase performance -- it potentially increases queuing.

You are right that, for COBOL servers, MAXLINKS must be less than or equal to the TABLE OCCURS value in the RECEIVE-CONTROL paragraph.

The names LINKDEPTH and MAXLINKS are, I believe, a little confusing, but more descriptive names probably would be so long as to be unwieldy.

When you mentioned SYNCDEPTH, I assume you meant the SYNCDEPTH setting in the RECEIVE-CONTROL paragraph. In general, SYNCDEPTH is a fairly complex topic to understand, involving checkpointing and retries of failed requests, but since you are talking about a Pathway server program, you don't have to understand any of that. Just set SYNCDEPTH to 1 and you will be fine.

Tamilarasu T

unread,
Sep 29, 2014, 2:25:15 PM9/29/14
to
Thank you very much Keith and Doug. That explains a lot!
0 new messages