The following table describes some recommended performance settings to use with the FC++ API and the FCCL command line tool. Most of the initial default values used by FC++ are chosen for safety, not for performance, so changing these values will allow for faster file transfers. To get the most performance from FC++, refer to recommended values.
Name | C++ API | Command-line | Default Value | Recommended Value | Description |
---|---|---|---|---|---|
bandwidth | fc::Options::setBandwidth() | bandwidth and startrate | Set the maximum and initial bandwidth that can be used. If the maximum is set higher than the network capability between the client and the server, it is highly recommended to turn on UDP congrestion control. See –bandwidth and –startrate. | ||
congestion control | fc::Options::setCongestionControl() | congestioncontrol and aggression | disabled | enabled | Enable UDP congestion control to prevent packet floods. Set the aggression control at 5 for mid-level aggression/recovery.See –congestioncontrol. |
file encoders | fc::Options::setEncoders() | numencoders | 5 | threads + 2 | Set this to the number of FC++ client-side threads + 2. See multithread in this table. |
encrypted transfers | fc::Options::setEncryption() | ssl | disabled | disabled | Encryption and decryption slows down transfers. If encryption/decryption is required, turn on multithreading to lessen the impact of having to encrypt and decrypt every single packet. See multithread in this table.See –ssl and –port. |
unit and block size | fc::Options::setLimits() | unitsize and blocksize | 1 KiB unit and 4 MiB block | The unit size depends on the MTU between the client and the server. To prevent packet fragmentation, use a unit size smaller than the MTU. The FC++ overhead when sending files over UDP is exactly 18 bytes. See –blocksize and –unitsize. | |
MD5 checksum | fc::Options::setMd5Verification() | verify | disabled | disabled | MD5 verification can take a long time on extremely large files. See –verify. |
file transfer mode | fc::Options::setMode() | mode | udp | udp | FTP transfers use the TCP/FTP mode. For high-speed FileCatalyst UDP transfers, set the mode to UDP . |
multiple threads | fc::Options::setMultiThreaded() | multithread | enabled | enabled | Too many threads can introduce lock contention. Most file transfers perform best with several client-side threads. Between 3 and 5 threads is a good number to use to start in most situations. Set the number of server-side encoders slightly higher than the number of client-side threads. A good rule of thumb in most situations is:server-side encoders = FC++ client-side threads + 2 .See –multithread and –numencoders. |
file overwrite | fc::Options::setOverwrite() | overwrite | disabled | enabled | Allow transferred files to overwrite pre-existing files with the same name. |
resume partial transfers | fc::Options::setTransferResume() | autoresume | disabled | enabled | Allow resumption of partial or interrupted file transfers. Also needs overwrite to be fully effective.See overwrite in this table. |