Hot SKU control parameters

Ensure to specify the Hot SKU control parameters to avoid performance degradation.

Note: The Hot SKU component is a very powerful feature that can be deployed if your organization is experiencing a true high Hot SKU contention. You might experience performance degradation, if the values of the parameters are incorrectly set. Verify that you have a true Hot SKU contention before enabling this feature or modifying any settings. For any clarification, call Technical Support.

In the customer_overrides.properties file, specify the following Hot SKU control parameters.

Table 1. Hot SKU control parameters
Hot SKU Control Parameter Description
yfs.yfs.hotsku.useHotSKUFeature Control used to enable/disable the Hot SKU feature.

By default, this parameter is set to N.

yfs.yfs.hotsku.useTimeOutLocking Set this property to "Y" to use locking timeout while trying to obtain a lock for an inventory item when the Hot SKU feature is enabled. The timeout period is based on the yfs.hotsku.secondsToClassifyAsAbnormalTime property (round up to integer). Example: yfs.hotsku.useTimeOutLocking = N
yfs.yfs.hotsku.registerAvailabilityOnLockTimeout If the value of this property is set to Y, and the SKU turns hot for the first time, and if availability is not yet registered, then availability is registered without lock. Based on the availability picture, the normal hot SKU logic determines whether lock is needed.
Note: Ensure that the yfs.yfs.hotsku.useTimeOutLocking parameter is enabled by setting the value to Y.
yfs.yfs.hotsku.useAvailabilityAcrossNodes This property controls whether the safety level is checked across nodes or for a single node. By default, the value of this property is set to N.
  • If the value is set to N, the lock occurs for a hot SKU when the availability for a single node is below the safety level.
  • If the value is set to Y, the lock occurs for a hot SKU when the availability across the requested nodes is below the safety level.
yfs.hotsku.useGranularLockingForItem

Values: Y, N

Set the property to "Y" to enable granular locking for an inventory item. Optimistic Lock Avoidance (OLA) must be enabled to use the feature. It is recommended to set yfs.hotsku.assumeUnavailableOnLockTimeout = Y with this feature.
yfs.hotsku.useGranularLockingForItem.mode

Values: 00, 01

Default value is 00.

Set the property to optimize the locking of an item for availability checks. In mode 00, availability is locked when availability is low or 0. In mode 01, there is no locking when availability is 0.
yfs.yfs.hotsku.secondsToClassifyAsAbnormalTime Threshold used to determine when a lock request is "abnormal".

If a lock request exceeded this threshold, that lock request is counted as an "abnormal" lock request.

Defaults to 0.5 seconds.

yfs.yfs.hotsku.windowTimeInMinutes Interval of one tracking window during which "abnormal" lock requests are tracked. A subsequent window begins once the first window ends.

Default interval is 10 minutes.

yfs.yfs.hotsku.numberOfAbnormalLocks
ForSwitchToHotSKU
Threshold used to determine when to promote an inventory item to Hot SKU status.

If the number of "abnormal" lock requests for an item exceeds this value within the tracking window, that item is promoted to Hot SKU status.

see Three usage scenarios for recommended settings.

yfs.yfs.hotsku.numRequestsInTrackingWindow
ToKeepAsHotSku
Minimum number of requests needed within the tracking window to keep the item in Hot SKU status.
yfs.hotsku.granularLocking.purgeWindow Set the property to a suitable value to purge lock records from INV_INVENTORY_ITEM_LOCK table after the defined retention days. Default value is 30.
yfs.yfs.hotsku.showExtraMessagesAsInfo Enables extra messages to be displayed at info logging level.

Default value is "N".

yfs.yfs.hotsku.itemMapPurgeLeadTime This parameter is used when the number of Hot SKU items in the cache has reached its limit (specified by yfs.yfs.hotsku.maxItem MapSizeInMemory). When cache is full, eject Hot SKU if it has not been accessed in yfs.hotsku.itemMapPurgeLeadTime minutes. Default value is 10.
yfs.hotsku.lockOnlyOnLowAvailability

This property determines whether locking should be avoided until availability gets low. By default, the property assumes that when availability is checked for the first time, all the items have high availability.

If this property is set to Y, then, it is assumed that the availability is high and lock will be avoided. If the property is set to Y, then, the availability calculation will not lock the YFS_INVENTORY_ITEM if the INV_INVENTORY_ITEM_LOCK doesn’t exist for the demand type.
yfs.hotsku.assumeUnavailableOnLockTimeout This property determines whether an item should be assumed unavailable if in case the lock cannot be acquired. This property is applicable only when yfs.hotsku.lockOnlyOnLowAvailability is set to Y.

If the yfs.hotsku.useTimeOutLocking property is set, it will be assumed that there is no inventory available for this item if a timeout occurs. Inventory will be assumed unavailable for this sourcing rule detail. If there are multiple sourcing rule details, then normal expansion will continue and lock will be attempted again.

yfs.hotsku.lockItemOnInventoryChanges

This property determines whether an inventory item should be locked prior to making supply or demand updates.

Default value is "N".

yfs.yfs.hotsku.useGranularLockingForItem.mode Used to optimize the lock of an item for availability checks. The default value is set to 00.
  • If the value is set to 00, the lock is applied when availability is low or 0.
  • If the value is set to 01, the lock is not applied when availability is 0.
yfs.yfs.hotsku.granularLocking.purgeWindow The value for this property is set to an appropriate value to purge lock records from the INV_INVENTORY_ITEM_LOCK table. The default value is set to 30.
For Internal Use Only
yfs.yfs.hotsku.qtyMultiplier Defaults to 30. Do not modify without IBM® guidance.
yfs.yfs.hotsku.highRequestQuantityMultiplier Defaults to 2. Do not modify without IBM guidance.
yfs.yfs.hotsku.maxItemMapSizeInMemory Defaults to 1000. Do not modify without IBM guidance. Use the default value of 1000 if Optimistic Lock Avoidance (OLA) is not enabled. If OLA is enabled, reset the value to - distinct SKU * window time in minutes. The window time is 30 minutes based on the yfs.yfs.hotsku.windowTimeInMinutes property.
yfs.yfs.hotsku.updateInventoryAfterAPIOutput This property controls when inventory database updates happen during a transaction. Set this property to "Y" to commit the inventory updates to the database after the API output and at the end of the transaction. If this property is set to "N", then inventory updates are only committed to the database at the end of the transaction. By default this property is set to "N" and it is only applicable when yfs.hotsku.lockItemOnInventoryChanges is "N".

The valid values are Y, N. The default value is set to N.