From 91f01c402deab4ac346c1f3ccd19a0c24833bc22 Mon Sep 17 00:00:00 2001 From: Eric Kooistra <kooistra@astron.nl> Date: Thu, 6 Feb 2025 11:58:57 +0100 Subject: [PATCH] Add script to calculate fiber IO cost for SDP data output. --- .../lofar2/doc/station_sdp_fiber_cost.py | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 applications/lofar2/doc/station_sdp_fiber_cost.py diff --git a/applications/lofar2/doc/station_sdp_fiber_cost.py b/applications/lofar2/doc/station_sdp_fiber_cost.py new file mode 100644 index 0000000000..bc5a5072e4 --- /dev/null +++ b/applications/lofar2/doc/station_sdp_fiber_cost.py @@ -0,0 +1,108 @@ +# Author : Eric Kooistra +# Purpose: Calculate cost of fiber resources for data output by SDP in LOFAR2 +# Descriptions: +# . See https://support.astron.nl/confluence/display/L2M/L2+STAT+Decision%3A+Allocation+of+10GbE+ports+in+SDP +# Usage: +# . python station_sdp_fiber_cost.py + +# Number of stations in LOFAR2 +nof_core = 24 +nof_remote = 14 +nof_international = 14 + +# Component prices in Euro incl. VAT +QSFP_optic = 47 # [RD-15] +MTP8_cable = 121 # [RD-13] +breakout_box = 229 # [RD-10] +rack_mount = 80 # [RD-11] +LC2_cable = 6 # [RD-14] +breakout_cable = 71 # [RD-12] +SFP_optic = 33 # [RD-16] + +# Cost per station +BaseLine_STAT_core = 3 * QSFP_optic + 3 * MTP8_cable + 1 * breakout_box + 1 * rack_mount + 3 * LC2_cable + 3 * SFP_optic +QuickBlitz_A1_core = 21 * QSFP_optic + 21 * MTP8_cable + 7 * breakout_box + 1 * rack_mount + 24 * LC2_cable + 24 * SFP_optic +QuickBlitz_A2_core = 24 * QSFP_optic + 24 * breakout_cable + 1 * rack_mount + 24 * SFP_optic +QuickBlitz_B1_core = 6 * QSFP_optic + 6 * MTP8_cable + 2 * breakout_box + 24 * LC2_cable + 24 * SFP_optic +QuickBlitz_B2_core = 6 * QSFP_optic + 6 * breakout_cable + 24 * SFP_optic + +BaseLine_STAT_remote = 2 * QSFP_optic + 2 * MTP8_cable + 1 * breakout_box + 1 * rack_mount + 2 * LC2_cable + 2 * SFP_optic +QuickBlitz_A1_remote = 22 * QSFP_optic + 22 * MTP8_cable + 7 * breakout_box + 1 * rack_mount + 24 * LC2_cable + 24 * SFP_optic +QuickBlitz_A2_remote = 24 * QSFP_optic + 24 * breakout_cable + 1 * rack_mount + 24 * SFP_optic +QuickBlitz_B1_remote = 6 * QSFP_optic + 6 * MTP8_cable + 2 * breakout_box + 24 * LC2_cable + 24 * SFP_optic +QuickBlitz_B2_remote = 6 * QSFP_optic + 6 * breakout_cable + 24 * SFP_optic + +BaseLine_STAT_int = 2 * QSFP_optic + 2 * MTP8_cable + 1 * breakout_box + 1 * rack_mount + 2 * LC2_cable + 2 * SFP_optic +QuickBlitz_A1_int = 30 * QSFP_optic + 30 * MTP8_cable + 10 * breakout_box + 2 * rack_mount + 32 * LC2_cable + 32 * SFP_optic +QuickBlitz_A2_int = 32 * QSFP_optic + 32 * breakout_cable + 2 * rack_mount + 32 * SFP_optic +QuickBlitz_B1_int = 8 * QSFP_optic + 8 * MTP8_cable + 3 * breakout_box + 32 * LC2_cable + 32 * SFP_optic +QuickBlitz_B2_int = 8 * QSFP_optic + 8 * breakout_cable + 32 * SFP_optic + +# Cost in kEuro +BaseLine_STAT_core = BaseLine_STAT_core / 1000 +QuickBlitz_A1_core = QuickBlitz_A1_core / 1000 +QuickBlitz_A2_core = QuickBlitz_A2_core / 1000 +QuickBlitz_B1_core = QuickBlitz_B1_core / 1000 +QuickBlitz_B2_core = QuickBlitz_B2_core / 1000 + +BaseLine_STAT_remote = BaseLine_STAT_remote / 1000 +QuickBlitz_A1_remote = QuickBlitz_A1_remote / 1000 +QuickBlitz_A2_remote = QuickBlitz_A2_remote / 1000 +QuickBlitz_B1_remote = QuickBlitz_B1_remote / 1000 +QuickBlitz_B2_remote = QuickBlitz_B2_remote / 1000 + +BaseLine_STAT_int = BaseLine_STAT_int / 1000 +QuickBlitz_A1_int = QuickBlitz_A1_int / 1000 +QuickBlitz_A2_int = QuickBlitz_A2_int / 1000 +QuickBlitz_B1_int = QuickBlitz_B1_int / 1000 +QuickBlitz_B2_int = QuickBlitz_B2_int / 1000 + +# Cost for sum of stations in LOFAR2 +BaseLine_STAT_cores = BaseLine_STAT_core * nof_core +QuickBlitz_A1_cores = QuickBlitz_A1_core * nof_core +QuickBlitz_A2_cores = QuickBlitz_A2_core * nof_core +QuickBlitz_B1_cores = QuickBlitz_B1_core * nof_core +QuickBlitz_B2_cores = QuickBlitz_B2_core * nof_core + +BaseLine_STAT_remotes = BaseLine_STAT_remote * nof_remote +QuickBlitz_A1_remotes = QuickBlitz_A1_remote * nof_remote +QuickBlitz_A2_remotes = QuickBlitz_A2_remote * nof_remote +QuickBlitz_B1_remotes = QuickBlitz_B1_remote * nof_remote +QuickBlitz_B2_remotes = QuickBlitz_B2_remote * nof_remote + +BaseLine_STAT_ints = BaseLine_STAT_int * nof_international +QuickBlitz_A1_ints = QuickBlitz_A1_int * nof_international +QuickBlitz_A2_ints = QuickBlitz_A2_int * nof_international +QuickBlitz_B1_ints = QuickBlitz_B1_int * nof_international +QuickBlitz_B2_ints = QuickBlitz_B2_int * nof_international + +BaseLine_STAT_lofar = BaseLine_STAT_cores + BaseLine_STAT_remotes + BaseLine_STAT_ints +QuickBlitz_A1_lofar = QuickBlitz_A1_cores + QuickBlitz_A1_remotes + QuickBlitz_A1_ints +QuickBlitz_A2_lofar = QuickBlitz_A2_cores + QuickBlitz_A2_remotes + QuickBlitz_A2_ints +QuickBlitz_B1_lofar = QuickBlitz_B1_cores + QuickBlitz_B1_remotes + QuickBlitz_B1_ints +QuickBlitz_B2_lofar = QuickBlitz_B2_cores + QuickBlitz_B2_remotes + QuickBlitz_B2_ints + +print('BaseLine_STAT_core = %5.2f kEuro * %2d = %6.1f kEuro incl. VAT' % (BaseLine_STAT_core, nof_core, BaseLine_STAT_cores)) +print('QuickBlitz_A1_core = %5.2f kEuro * %2d = %6.1f kEuro incl. VAT' % (QuickBlitz_A1_core, nof_core, QuickBlitz_A1_cores)) +print('QuickBlitz_A2_core = %5.2f kEuro * %2d = %6.1f kEuro incl. VAT' % (QuickBlitz_A2_core, nof_core, QuickBlitz_A2_cores)) +print('QuickBlitz_B1_core = %5.2f kEuro * %2d = %6.1f kEuro incl. VAT' % (QuickBlitz_B1_core, nof_core, QuickBlitz_B1_cores)) +print('QuickBlitz_B2_core = %5.2f kEuro * %2d = %6.1f kEuro incl. VAT' % (QuickBlitz_B2_core, nof_core, QuickBlitz_B2_cores)) +print() +print('BaseLine_STAT_remote = %5.2f kEuro * %2d = %6.1f kEuro incl. VAT' % (BaseLine_STAT_remote, nof_remote, BaseLine_STAT_remotes)) +print('QuickBlitz_A1_remote = %5.2f kEuro * %2d = %6.1f kEuro incl. VAT' % (QuickBlitz_A1_remote, nof_remote, QuickBlitz_A1_remotes)) +print('QuickBlitz_A2_remote = %5.2f kEuro * %2d = %6.1f kEuro incl. VAT' % (QuickBlitz_A2_remote, nof_remote, QuickBlitz_A2_remotes)) +print('QuickBlitz_B1_remote = %5.2f kEuro * %2d = %6.1f kEuro incl. VAT' % (QuickBlitz_B1_remote, nof_remote, QuickBlitz_B1_remotes)) +print('QuickBlitz_B2_remote = %5.2f kEuro * %2d = %6.1f kEuro incl. VAT' % (QuickBlitz_B2_remote, nof_remote, QuickBlitz_B2_remotes)) +print() +print('BaseLine_STAT_int = %5.2f kEuro * %2d = %6.1f kEuro incl. VAT' % (BaseLine_STAT_int, nof_international, BaseLine_STAT_ints)) +print('QuickBlitz_A1_int = %5.2f kEuro * %2d = %6.1f kEuro incl. VAT' % (QuickBlitz_A1_int, nof_international, QuickBlitz_A1_ints)) +print('QuickBlitz_A2_int = %5.2f kEuro * %2d = %6.1f kEuro incl. VAT' % (QuickBlitz_A2_int, nof_international, QuickBlitz_A2_ints)) +print('QuickBlitz_B1_int = %5.2f kEuro * %2d = %6.1f kEuro incl. VAT' % (QuickBlitz_B1_int, nof_international, QuickBlitz_B1_ints)) +print('QuickBlitz_B2_int = %5.2f kEuro * %2d = %6.1f kEuro incl. VAT' % (QuickBlitz_B2_int, nof_international, QuickBlitz_B2_ints)) +print() +print() +print('BaseLine_STAT_lofar = %6.0f kEuro incl. VAT' % BaseLine_STAT_lofar) +print('QuickBlitz_A1_lofar = %6.0f kEuro incl. VAT' % QuickBlitz_A1_lofar) +print('QuickBlitz_A2_lofar = %6.0f kEuro incl. VAT' % QuickBlitz_A2_lofar) +print('QuickBlitz_B1_lofar = %6.0f kEuro incl. VAT' % QuickBlitz_B1_lofar) +print('QuickBlitz_B2_lofar = %6.0f kEuro incl. VAT' % QuickBlitz_B2_lofar) -- GitLab