Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Current »

Latency tuning

FixEngine::createSession

  • Session persistent mode (ordered by latency: the best is on the top):

    • null_storageType – should be chosen if session will not resend last sent messages by request and recovery on start will be performed by user
    • transient_storageType – should be chosen if session will resend last sent messages by request and recovery on start will be performed by user
    • persistentMM_storageType – should be chosen if session will resend last sent messages by request and recovery on start will be performed by FIX antenna
    • persistent_storageType – should be chosen if persistentMM_storageType is not supported by OS

Receiving

engine.properties

  • LogIncomingMessages = false
  • ThirdPartyRoutingIsEnabled = false
  • EnableIncrementalLogFileCreation = true (for persistent mode)
  • TimestampsInLogs = false
  • RecvCpuAffinity  you can find the description of this parameter here: FIX Engine parameters#RecvCpuAffinity
  • DictionariesFilesList  to get best latency user should create FIX protocol XML file with minimal message/field set. Only used fields should be listed in the message. Path to the XML file should be passed to DictionariesFilesList parameter in the engine.properties. SessionExtraParameters::validation_.ignoreUnknownFields_ should be true.

SessionExtraParameters

  • SessionExtraParameters::validation_.isEnabled = false
  • SessionExtraParameters::validation_.ignoreUnknownFields_ = true
  • validateCheckSum_ = false; More about validation parameters is here: How to configure FIX messages validation
  • socketPriority_ |= Engine::AGGRESSIVE_RECEIVE_SOCKET_OP_PRIORITY
  • aggressiveReceiveDelay_ = 0; this will cause 100% core usage. For Linux see also: How to use SO_BUSY_POLL socket option

Sending

engine.properties

  • CheckVersionOfOutgoingMessages = false
  • TimestampsInLogs = false
  • EnableIncrementalLogFileCreation = true (for persistent mode)
  • SendCpuAffinity  you can find the description of this parameter here: FIX Engine parameters#SendCpuAffinity
  • DictionariesFilesList  to get best latency user should create FIX protocol XML file with minimal message/field set. Only used fields should be listed in the message. Path to the XML file should be passed to DictionariesFilesList parameter in the engine.properties. SessionExtraParameters::validation_.ignoreUnknownFields_ should be true.

SessionExtraParameters

  • SessionExtraParameters::validation_.isEnabled = false
  • SessionExtraParameters::validation_.ignoreUnknownFields_ = true
  • generateCheckSum_ = false; if remote side does not validate CheckSum(10) field, user can disable calculation of this field
  • disableTCPBuffer_ = true
  • socketPriority_ |= Engine::AGGRESSIVE_SEND_SOCKET_OP_PRIORITY

Session::put

  • PutOptions.overrideSendingTime_ = false; With this option user should get current system time only once and copy obtained value to SendingTime and TransactTime (if defined) field
  • PreparedMessage – where it is possible user should use this class instead of FIXMessage
  • If PreparedMessage is not suitable, you should reuse sent FIXMessge objects
  • No labels