FIXEdge Capacity

Disk space recommendations

Rationale

FIXEdge constantly generates big volumes of the logs. Long-term work could exhaust all disk space which would result in unstable application operation.

FIXEdge should use fast storage (e.g. SSD) for session logs to achieve maximum performance.

Under article 25 of MiFIR and RTS 24 MiFID II, operators of trading venues will be required to collect and maintain for at least five years the relevant data relating to all orders in financial instruments which are advertised through their systems. Within the five-year period, competent authorities may request these records of orders and transactions maintained by investment firms and trading venues.  

For smart usage of disk space on fast storage, old data could be moved to a different place, e.g. to a network drive. FIXEdge configuration parameters allow configuring proper archiving and rotation strategy (see How to configure logging and logs rotation in FIXEdge for more information).

Common recommendations

The following items are to be considered for determining the required disk space:

  1. FIXEdge binaries and configuration (~1 GB)
  2. FIX session logs with FIX messages
    Depends on the maximum expected number of messages per day multiplied by the average size of messages.
  3. Application logs (tens - hundreds of MB per day):
    1. application status and errors
    2. sessions statuses changes
    3. validation errors
    4. monitoring notes
    Sessions and messages flow with issues and generate more logs than the issues-free flow. 
  4. Reserve extra space for core files (a few GB)

Additional items consuming space

The best practice is to reserve space for unexpected consequences.

  1. Database consumes the similar size as sessions logs but it depends on content to be stored.

    It is recommended to have the Database setup on another disk or on a different server to make your architecture less vulnerable to failures.

  2. Enabled debug or trace information could generate several times more logging (all above multiplied 3).
  3. Disabled archiving and cleaning up (all above multiplied 365 per year).
  4. Foreseen growth as per business operational plans.
    In fact, MiFID II states that a financial institution should be prepared for handling messages twice bigger as the biggest one seen in the previous 6 months (all above-multiplied x 2).

Example

For the solution:

  • 130 active sessions
  • 160 000 000 messages pass through the system per day
  • simple routing from one FIX session to another FIX session

Total space:

  • Daily sessions logs take up 70 GB
  • Application logs occupy 320 MB
  • DB occupies 60 GB

Note

For this example, daily sessions and application logs occupy about 8-10 GB after archiving.

Insufficient disk space mechanism

The mechanism for handling insufficient disk space is available since FIXEdge C++ 6.14.0 release.

The minimal amount of free disk space for the FIXEdge session start can be configured via Persistents.MinDiskSpace property in the engine.properties file. By default, the value of this property is set to 50 Mb.

On session creation or switching to backup/primary connection, FIXEdge C++ automatically checks free space on the disk and if its amount is less than the value of Persistents.MinDiskSpace property, then FIXEdge C++ does not start a new session or does not switch to backup/primary connection.

The following WARN message will be logged:

There is no enough free disk space on "<log_path>" (<available_space> Mb) to create a FIX session.

Also, FIXEdge C++ terminates the session if there is no free disk space left on the session's logs device.

Since FIXEdge C++ 6.14.0 release it is possible to specify different log directories for primary and backup connections of the session. In such a case FIXEdge C++ will check free disk space for each connection.