book
Article ID: KB0094596
calendar_today
Updated On:
Description
Resolution:
Description:
============
In KPSA, swapping is used to avoid memory exhaustion. It relies on checkpoints to remove Service Orders from memory and reload them only when necessary.
This KB article describe a scenario where the application swaps continuously and with no effect, potentially leading it to a non recoverable situation.
Environment:
===========
TIBCO® KPSA - Mobile 3.4.x
TIBCO® KPSA - Mobile 3.5.x
TIBCO® KPSA - Mobile 3.6.0
TIBCO® KPSA - Mobile 3.7.0
TIBCO® KPSA - Broadband 3.4.x
TIBCO® KPSA - Broadband 3.5.x
TIBCO® KPSA - Broadband 3.6.0
TIBCO® KPSA - Broadband 3.7.0
Symptoms:
========
The following log message "Module <X> cleaning swap. -- done (0) removed." repeats continuously in engine logs.
2011-11-17 08:42:54.499420|USR|INFO |533|builtin.cpp(251)|Module <Reservoir> cleaning swap (up to 2683)
2011-11-17 08:43:18.299605|USR|INFO |533|builtin.cpp(251)|Module <Reservoir> cleaning swap. -- done (0) removed.
2011-11-17 08:43:18.348504|USR|INFO |640|builtin.cpp(251)|Module <Reservoir> cleaning swap (up to 2683)
2011-11-17 08:43:42.144637|USR|INFO |640|builtin.cpp(251)|Module <Reservoir> cleaning swap. -- done (0) removed.
2011-11-17 08:43:42.184981|USR|INFO |544|builtin.cpp(251)|Module <Reservoir> cleaning swap (up to 2683)
2011-11-17 08:44:06.030861|USR|INFO |544|builtin.cpp(251)|Module <Reservoir> cleaning swap. -- done (0) removed.
2011-11-17 08:44:06.074210|USR|INFO |501|builtin.cpp(251)|Module <Reservoir> cleaning swap (up to 2683)
2011-11-17 08:44:29.888333|USR|INFO |501|builtin.cpp(251)|Module <Reservoir> cleaning swap. -- done (0) removed.
2011-11-17 08:44:29.937765|USR|INFO |557|builtin.cpp(251)|Module <Reservoir> cleaning swap (up to 2683)
2011-11-17 08:44:53.680854|USR|INFO |557|builtin.cpp(251)|Module <Reservoir> cleaning swap. -- done (0) removed.
2011-11-17 08:44:53.724860|USR|INFO |177|builtin.cpp(251)|Module <Reservoir> cleaning swap (up to 2683)
2011-11-17 08:45:17.509475|USR|INFO |177|builtin.cpp(251)|Module <Reservoir> cleaning swap. -- done (0) removed.
2011-11-17 08:45:17.649778|USR|INFO |595|builtin.cpp(251)|Module <Reservoir> cleaning swap (up to 2683)
2011-11-17 08:45:41.455977|USR|INFO |595|builtin.cpp(251)|Module <Reservoir> cleaning swap. -- done (0) removed.
Theoritically, such a log should appear from time to time to record that a swap purge occured. Here the cleaning is useless (0 removed) as the system continues to swap.
Cause:
=====
(Refer to SOL1-CUHC2Y "KPSA swap handling" KB Article first for a good understanding of swap internal logic)
On some queues (non driver-like), Service Orders on queue out are swapped out only when enqueued and never during a purge, even when the internal number of Services Orders is greater than the swap level.
If 100% of the swap level is reached and some queues already have their Service Orders mainly on their queue out (Reservoir case for instance, and potentially POPWaiting queues), swap purges are called uselessly every swapCheckDelay on all queues and the Service Order number may remain higher than the swap level with a huge degradation of performances for a long period of time.
Resolution:
==========
KPSA swap handling has been enhancement through AP-2: Swap level purge optimization to avoid this situation, with TIBCO® KPSA - Mobile 3.5.9 or TIBCO® KPSA - Broadband 3.5.9. A purge will now also swap out Service Order on queue out.
Issue/Introduction
KPSA cleaning swap forever