Microsoft KB Archive/156967

= SNA Server Performance Degrades Running LUA Application =

Article ID: 156967

Article Last Modified on 11/26/2003

-

APPLIES TO


 * Microsoft SNA Server 2.0, when used with:
 * Microsoft Windows NT 4.0
 * Microsoft SNA Server 2.1, when used with:
 * Microsoft Windows NT 4.0
 * Microsoft SNA Server 3.0, when used with:
 * Microsoft Windows NT 4.0
 * Microsoft SNA Server 2.11 Service Pack 1, when used with:
 * Microsoft Windows NT 4.0
 * Microsoft SNA Server 3.0 Service Pack 4, when used with:
 * Microsoft Windows NT 4.0

-



This article was previously published under Q156967



SYMPTOMS
When you run an LUA application (or 3270 application that uses the LUA flavor of the SNA Server 3270 Emulator Interface Specification), SNA Server performance may degrade if the application is receiving a large number of frames and SNA exception response protocol is being used on the session.



CAUSE
This problem can occur if exception response protocol is used on an LU type 0, 1, 2, or 3 session, and the application does not periodically send "courtesy acknowledgments" to SNA Server, as documented in the SNA Considerations section in Chapter 2 of the SNA Server "LUA Programmer's Guide" (included below).

If an LUA application developer encounters this problem, the application should issue "courtesy acknowledgments" periodically (say, after every 10 frames received or so), as described below.

If a customer suspects a problem in this area, see the information below for instructions on generating SNA Server traces to provide to the LUA application developer or to SNA Server support personnel.



MORE INFORMATION
Chapter 2 of the SNA Server "LUA Programmer's Guide" includes the following information regarding "courtesy acknowledgments":

"SNA Server keeps a record of requests received from the host in order to correlate any response sent by the application with the appropriate request. When the application sends a response, SNA Server correlates the response with the data from the original request, and can then free the storage associated with it.

If the host specifies exception response only (a negative response may be sent but a positive response should not be sent), SNA Server must still keep a record of the request in case the application subsequently sends a negative response. If the application does not send a response, the storage associated with this request cannot be freed.

Because of this, SNA Server allows the LUA application to issue a positive response to an exception-response-only request from the host (this is known as a courtesy acknowledgment). The response is not sent to the host, but is used by LUA to clear the storage associated with the request." If the LUA application does not issue courtesy acknowledgments in this scenario, the following behavior may be observed using Microsoft Windows NT Performance Monitor utility:
 * The "private bytes" memory counter for the SNASERVR.EXE process will steadily increase while the LUA application receives data.
 * Processor CPU usage may steadily increase
 * Data throughput on the LUA session will decrease

Also, if SNA Server tracing is enabled, the SNA Server may encounter unexpected delays up to 45 seconds before responding to client requests.

To determine if this problem is occurring, the following traces should be captured and provided to the LUA application developer, or to SNA Server support personnel:
 * Stop the LUA application
 * Run SNATRACE, focus on the SNA Server service and turn on Data Link Control (DLC) and 3270 message tracing, set the trace file size to a large value (say, 5000000 or 5 MB) and select Apply.
 * Start the LUA application and run a sample transaction.
 * Return to SNATRACE and select Clear All. The resulting trace files can be found in \System\Nodemsg?.trc.

To send a courtesy acknowledgment, the LUA application should write a response containing a zero-length data message, setting the RH to indicate a response and by setting the TH to have the sequence number (SNF) of the RECEIVE verb that is being acknowledged. A SLI_SEND or RUI_WRITE indicates a response if it has the response bit set in the RH in the verb control block. The bits to set are:

lua_rh.rri = 1 /* response */

lua_rh.ri = 0 /* positive response*/

Also, if you use an SLI application, the lua_message_type in the SLI_SEND command must be set to indicate a response (LUA_MESSAGE_TYPE_RSP). This is described in Chapter 4 of the [ASCII 147]LUA Programmer's Reference.[ASCII 148]

Additional query words: sp1 prodsna

Keywords: kbprogramming kbprb kb3rdparty KB156967

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.