FileCatalyst Automatically Optimizes Some Client Configuration Settings
Posted by Aly Essa, Last modified by Aly Essa on 07 January 2020 03:24 PM

Overview

For the use of this article when a reference to "a client-side application or FileCatalyst Clients" is made the products used are:

  • FileCatalyst HotFolder
  • FileCatalyst TransferAgent Express
  • FileCatalyst CLI/API (Java and C++)

Note: This article assumes that the transfer mode is set to UDP, since the parameters discussed below can only be configured using this mode.

The values displayed in FileCatalyst logs (INIFC command specifically) for transfers may not mirror transfer settings in client applications. The block size, packet size, and the number of threads may be modified/optimized based on the size of the file being transferred and/or other transfer settings.

All FileCatalyst client-side applications, the block size is the maximum chunk size of data that is uploaded and written to the storage. FileCatalyst products have various settings that can be tuned to enhance the performance of transfers. These values can be modified automatically.

In the client application logs, you will see an INIFC command which lists the transfer parameters used. Our default block size is set to 4MB (4096000 bytes) and this value will be adjusted automatically by rounding to a multiple (or very close to a multiple) of the file size. This eliminates padding which is left on the last block is transferred but not written. The file size will always be the same on the source and destination. The example below uses a default 4 MB block and based on the 2621404000-byte file being transferred. The optimized block size value is 4369070 bytes which is slightly greater than our default block size. 

The Block Size is a parameter we can configure in our client applications. The default block size set is 4 MB. You can verify this in our logs by searching for "INIFC command":

INIFC command: , #senderThreads=5, #blockSizeBytes=4369070, packetSize=1006, fileSize=2621404000, dataPort(s)=0, congestionControl (true=1)=1, fileID=-1915133686, Mode (ftp=1,HTTP=3,UDP=4)=4, compression (true=1)=0, compression level (0,1-10)=6, comp strategy (always 0)=0, MD5 on-the-fly (true=1)=1, congst aggression (1-10)=10, #sender sockets=1, congst strat (RTT=0,Loss=1)=1, #receive sockets=1, compress mode(zip=0,LMZA=1)=0, verify mode(after=0,concurrent=2,partial=3)=0, task priority=5

In the example above, you can see that the Block Size does not match the value that is identified in the INIFC command. 

For example, if you set a block size of 4096000, FileCatalyst will actually round that value to be close to an exact multiple of the file size being transferred. This is done to optimize the transfer and reduce the need for block padding.

Another example, if the number of sender sockets exceeds the number of sender threads, the sender threads are increased to match the number of sockets. This optimizes the use of the allocated sockets for better performance.


Environment

FileCatalyst Direct Suite v3.7.3 and newer.

Resolution

Since the optimization takes place behind the scenes there are no other modifications needed to enable this feature. 

FileCatalyst HotFolder

If this is a feature that needs to be disabled in the HotFolder the sites.xml file contains a value called OptimizeBlockSize and this value should be set to false. When making any changes to the FileCatalyst HotFolder, turn off the service and make a backup of the sites.xml file before making changes.

FileCatalyst TransferAgent Express

This application optimizes the Block Size automatically in the background and can not be configured through the UI.

FileCatalyst Client API

Please consult our SDK Documentation on how to toggle the options for this option. To access the download site you will need to log into the Support Portal to obtain the download credentials.







Comments (0)