alloc: Make alloc_algorithm_dynamic stateful

Currently there is no persistent state being used in
alloc_algorithm_dynamic. So algorithm B is even used in persistent
high usage scenarios. If there are many active TBFs, multislot
assigments are not fair, because MS of a "higher" multislot class get
higher troughputs. On the other hand, as long as all PDCH are busy no
bandwidth will be wasted even if all MS use algorithm A.

This commit modifies alloc_algorithm_dynamic to disable algorithm B
when that call fails. It then keeps it disabled until there is a
single PDCH which is idle (it is considered idle, if there is at most
one active DL TBF assigned to it).

Sponsored-by: On-Waves ehf
This commit is contained in:
Jacob Erlbeck 2015-07-16 18:33:46 +02:00
parent 7b3675bf7a
commit 77da35515c
5 changed files with 648 additions and 1076 deletions

View File

@ -182,6 +182,8 @@ struct gprs_rlcmac_bts {
/* list of downlink TBFs */
struct llist_head dl_tbfs;
/* State for dynamic algorithm selection */
int multislot_disabled;
/**
* Point back to the C++ object. This is used during the transition

View File

@ -28,6 +28,9 @@
#include <errno.h>
#include <values.h>
/* Consider a PDCH as idle if has at most this number of TBFs assigned to it */
#define PDCH_IDLE_TBF_THRESH 1
/* 3GPP TS 05.02 Annex B.1 */
#define MS_NA 255 /* N/A */
@ -363,6 +366,30 @@ static int find_trx(BTS *bts, const GprsMs *ms, int use_trx)
return -EBUSY;
}
static struct gprs_rlcmac_pdch * find_idle_pdch(BTS *bts)
{
unsigned trx_no;
unsigned ts;
struct gprs_rlcmac_bts *bts_data = bts->bts_data();
/* Find the first PDCH with an unused DL TS */
for (trx_no = 0; trx_no < ARRAY_SIZE(bts_data->trx); trx_no += 1) {
struct gprs_rlcmac_trx *trx = &bts_data->trx[trx_no];
for (ts = 0; ts < ARRAY_SIZE(trx->pdch); ts++) {
struct gprs_rlcmac_pdch *pdch = &trx->pdch[ts];
if (!pdch->is_enabled())
continue;
if (pdch->num_tbfs(GPRS_RLCMAC_DL_TBF) > PDCH_IDLE_TBF_THRESH)
continue;
return pdch;
}
}
return NULL;
}
static int tfi_find_free(BTS *bts, const GprsMs *ms,
enum gprs_rlcmac_tbf_direction dir, int use_trx, int *trx_no_)
{
@ -1030,9 +1057,22 @@ int alloc_algorithm_dynamic(struct gprs_rlcmac_bts *bts,
{
int rc;
rc = alloc_algorithm_b(bts, ms_, tbf_, cust, single, use_trx);
if (rc >= 0)
return rc;
/* Reset load_is_high if there is at least one idle PDCH */
if (bts->multislot_disabled) {
bts->multislot_disabled = find_idle_pdch(bts->bts) == NULL;
if (!bts->multislot_disabled)
LOGP(DRLCMAC, LOGL_DEBUG, "Enabling algorithm B\n");
}
if (!bts->multislot_disabled) {
rc = alloc_algorithm_b(bts, ms_, tbf_, cust, single, use_trx);
if (rc >= 0)
return rc;
if (!bts->multislot_disabled)
LOGP(DRLCMAC, LOGL_DEBUG, "Disabling algorithm B\n");
bts->multislot_disabled = 1;
}
rc = alloc_algorithm_a(bts, ms_, tbf_, cust, single, use_trx);
return rc;

View File

@ -759,7 +759,7 @@ static void test_successive_allocation()
test_successive_allocation(alloc_algorithm_b, 10, 10, TEST_MODE_DL_AFTER_UL,
32, "algorithm B class 10 (DL after UL)");
test_successive_allocation(alloc_algorithm_dynamic, 10, 10, TEST_MODE_DL_AFTER_UL,
63, "algorithm dynamic class 10 (DL after UL)");
95, "algorithm dynamic class 10 (DL after UL)");
test_successive_allocation(alloc_algorithm_a, 1, 1, TEST_MODE_UL_AFTER_DL,
35, "algorithm A (UL after DL)");
@ -787,7 +787,7 @@ static void test_many_connections()
{
test_many_connections(alloc_algorithm_a, 160, "algorithm A");
test_many_connections(alloc_algorithm_b, 32, "algorithm B");
test_many_connections(alloc_algorithm_dynamic, 121, "algorithm dynamic");
test_many_connections(alloc_algorithm_dynamic, 160, "algorithm dynamic");
}
int main(int argc, char **argv)

File diff suppressed because it is too large Load Diff

View File

@ -9133,37 +9133,69 @@ Going to test assignment with many TBF, algorithm dynamic class 10 (DL after UL)
TBF[30] class 10 reserves ...DCD..
TBF[31] class 10 reserves .....DCD
TBF[1] class 10 reserves ...C....
TBF[0] class 10 reserves .......C
TBF[3] class 10 reserves ...C....
TBF[2] class 10 reserves .......C
TBF[5] class 10 reserves ...C....
TBF[4] class 10 reserves .......C
TBF[7] class 10 reserves ...C....
TBF[6] class 10 reserves .......C
TBF[9] class 10 reserves ...C....
TBF[8] class 10 reserves .......C
TBF[11] class 10 reserves ...C....
TBF[1] class 10 reserves ....C...
TBF[2] class 10 reserves ......C.
TBF[10] class 10 reserves .......C
TBF[13] class 10 reserves ...C....
TBF[3] class 10 reserves ....C...
TBF[4] class 10 reserves ......C.
TBF[2] class 10 reserves ......C.
TBF[12] class 10 reserves .......C
TBF[15] class 10 reserves ...C....
TBF[5] class 10 reserves ....C...
TBF[6] class 10 reserves ......C.
TBF[4] class 10 reserves ......C.
TBF[14] class 10 reserves .......C
TBF[17] class 10 reserves ...C....
TBF[7] class 10 reserves ....C...
TBF[8] class 10 reserves ......C.
TBF[6] class 10 reserves ......C.
TBF[16] class 10 reserves .......C
TBF[19] class 10 reserves ...C....
TBF[9] class 10 reserves ....C...
TBF[10] class 10 reserves ......C.
TBF[8] class 10 reserves ......C.
TBF[18] class 10 reserves .......C
TBF[21] class 10 reserves ...C....
TBF[11] class 10 reserves ....C...
TBF[12] class 10 reserves ......C.
TBF[10] class 10 reserves ......C.
TBF[20] class 10 reserves .......C
TBF[23] class 10 reserves ...C....
TBF[13] class 10 reserves ....C...
TBF[14] class 10 reserves ......C.
TBF[12] class 10 reserves ......C.
TBF[22] class 10 reserves .......C
TBF[25] class 10 reserves ...C....
TBF[15] class 10 reserves ....C...
TBF[16] class 10 reserves ......C.
TBF[14] class 10 reserves ......C.
TBF[24] class 10 reserves .......C
TBF[27] class 10 reserves ...C....
TBF[17] class 10 reserves ....C...
TBF[18] class 10 reserves ......C.
TBF[16] class 10 reserves ......C.
TBF[26] class 10 reserves .......C
TBF[29] class 10 reserves ...C....
TBF[19] class 10 reserves ....C...
TBF[20] class 10 reserves ......C.
TBF[18] class 10 reserves ......C.
TBF[28] class 10 reserves .......C
TBF[31] class 10 reserves ...C....
TBF[21] class 10 reserves ....C...
TBF[22] class 10 reserves ......C.
TBF[20] class 10 reserves ......C.
TBF[30] class 10 reserves .......C
TBF[23] class 10 reserves ....C...
TBF[24] class 10 reserves ......C.
TBF[22] class 10 reserves ......C.
TBF[25] class 10 reserves ....C...
TBF[26] class 10 reserves ......C.
TBF[24] class 10 reserves ......C.
TBF[27] class 10 reserves ....C...
TBF[28] class 10 reserves ......C.
TBF[26] class 10 reserves ......C.
TBF[29] class 10 reserves ....C...
TBF[28] class 10 reserves ......C.
TBF[31] class 10 reserves ....C...
TBF[30] class 10 reserves ......C.
Successfully allocated 63 UL TBFs
Successfully allocated 95 UL TBFs
Going to test assignment with many TBF, algorithm A (UL after DL)
TBF[0] class 1 reserves ...U....
TBF[0] class 1 reserves ....U...
@ -10354,73 +10386,92 @@ Going to test assignment with many connections, algorithm dynamic
TBF[0] class 4 reserves .....C..
TBF[1] class 5 reserves ...C....
TBF[2] class 6 reserves ...C....
TBF[4] class 7 reserves ...C....
TBF[2] class 8 reserves .....C..
TBF[0] class 7 reserves .......C
TBF[4] class 8 reserves ...C....
TBF[0] class 9 reserves ....C...
TBF[2] class 10 reserves ....C...
TBF[4] class 11 reserves ....C...
TBF[0] class 12 reserves ......C.
TBF[4] class 13 reserves .....C..
TBF[6] class 14 reserves ....C...
TBF[6] class 15 reserves ...C....
TBF[7] class 16 reserves ...C....
TBF[9] class 17 reserves ...C....
TBF[11] class 18 reserves ...C....
TBF[1] class 19 reserves ......C.
TBF[3] class 20 reserves ......C.
TBF[5] class 21 reserves ......C.
TBF[8] class 22 reserves ......C.
TBF[9] class 23 reserves ....C...
TBF[10] class 24 reserves ......C.
TBF[11] class 25 reserves ....C...
TBF[12] class 26 reserves ......C.
TBF[18] class 27 reserves ....C...
TBF[19] class 28 reserves ......C.
TBF[20] class 29 reserves ....C...
TBF[0] class 1 reserves .......C
TBF[1] class 2 reserves .......C
TBF[3] class 3 reserves .......C
TBF[5] class 4 reserves .....C..
TBF[21] class 5 reserves ......C.
TBF[23] class 6 reserves ......C.
TBF[22] class 7 reserves ....C...
TBF[29] class 8 reserves .....C..
TBF[24] class 9 reserves ....C...
TBF[26] class 10 reserves ....C...
TBF[28] class 11 reserves ....C...
TBF[25] class 12 reserves ......C.
TBF[30] class 13 reserves .....C..
TBF[29] class 14 reserves ....C...
TBF[13] class 15 reserves ...C....
TBF[18] class 16 reserves ...C....
TBF[20] class 17 reserves ...C....
TBF[22] class 18 reserves ...C....
TBF[27] class 19 reserves ......C.
TBF[29] class 20 reserves ......C.
TBF[1] class 10 reserves .......C
TBF[6] class 11 reserves ...C....
TBF[2] class 12 reserves ....C...
TBF[0] class 13 reserves ......C.
TBF[3] class 14 reserves .......C
TBF[7] class 15 reserves ...C....
TBF[4] class 16 reserves ....C...
TBF[1] class 17 reserves ......C.
TBF[5] class 18 reserves .......C
TBF[9] class 19 reserves ...C....
TBF[6] class 20 reserves ....C...
TBF[3] class 21 reserves ......C.
TBF[6] class 22 reserves .......C
TBF[11] class 23 reserves ...C....
TBF[9] class 24 reserves ....C...
TBF[2] class 25 reserves .....C..
TBF[5] class 26 reserves ......C.
TBF[8] class 27 reserves .......C
TBF[13] class 28 reserves ...C....
TBF[11] class 29 reserves ....C...
TBF[4] class 1 reserves .....C..
TBF[8] class 2 reserves ......C.
TBF[10] class 3 reserves .......C
TBF[18] class 4 reserves ...C....
TBF[18] class 5 reserves ....C...
TBF[5] class 6 reserves .....C..
TBF[10] class 7 reserves ......C.
TBF[12] class 8 reserves .......C
TBF[20] class 9 reserves ...C....
TBF[20] class 10 reserves ....C...
TBF[29] class 11 reserves .....C..
TBF[12] class 12 reserves ......C.
TBF[19] class 13 reserves .......C
TBF[22] class 14 reserves ...C....
TBF[22] class 15 reserves ....C...
TBF[30] class 16 reserves .....C..
TBF[19] class 17 reserves ......C.
TBF[21] class 18 reserves .......C
TBF[24] class 19 reserves ...C....
TBF[24] class 20 reserves ....C...
TBF[31] class 21 reserves .....C..
TBF[21] class 22 reserves ......C.
TBF[23] class 23 reserves .......C
TBF[26] class 24 reserves ...C....
TBF[26] class 25 reserves ....C...
TBF[23] class 26 reserves ......C.
TBF[25] class 27 reserves .......C
TBF[28] class 28 reserves ...C....
TBF[28] class 29 reserves ....C...
TBF[25] class 1 reserves ......C.
TBF[27] class 2 reserves .......C
TBF[29] class 3 reserves ...C....
TBF[29] class 4 reserves ....C...
TBF[27] class 5 reserves ......C.
TBF[30] class 6 reserves ...C....
TBF[30] class 7 reserves ....C...
TBF[29] class 8 reserves ......C.
TBF[31] class 9 reserves ...C....
TBF[31] class 10 reserves ....C...
TBF[0] class 1 reserves ...C....
TBF[1] class 2 reserves ....DC..
TBF[2] class 3 reserves ......DC
TBF[3] class 4 reserves ...DCD..
TBF[4] class 5 reserves ......CD
TBF[5] class 6 reserves ...CD...
TBF[6] class 7 reserves .....CD.
TBF[7] class 8 reserves ....DDCD
TBF[8] class 9 reserves ...DCD..
TBF[9] class 10 reserves .....DCD
TBF[10] class 11 reserves ...DCD..
TBF[11] class 12 reserves .....DCD
TBF[12] class 13 reserves ...CDD..
TBF[13] class 14 reserves ....CDDD
TBF[14] class 15 reserves ...CDDDD
TBF[15] class 16 reserves ...CDDDD
TBF[16] class 17 reserves ...CDDDD
TBF[17] class 18 reserves ...CDDDD
TBF[18] class 19 reserves .....DCD
TBF[19] class 20 reserves ...DCD..
TBF[20] class 21 reserves .....DCD
TBF[21] class 22 reserves ...DCD..
TBF[22] class 23 reserves .....DCD
TBF[23] class 24 reserves ...DCD..
TBF[0] class 2 reserves ....DC..
TBF[0] class 3 reserves ......DC
TBF[0] class 4 reserves ...DCD..
TBF[0] class 5 reserves ......CD
TBF[1] class 6 reserves ...CD...
TBF[1] class 7 reserves .....CD.
TBF[1] class 8 reserves ....DDCD
TBF[1] class 9 reserves ...DCD..
TBF[2] class 10 reserves .....DCD
TBF[2] class 11 reserves ...DCD..
TBF[3] class 12 reserves .....DCD
TBF[2] class 13 reserves ...CDD..
TBF[3] class 14 reserves ....CDDD
TBF[3] class 15 reserves ...CDDDD
TBF[4] class 16 reserves ...CDDDD
TBF[5] class 17 reserves ...CDDDD
TBF[6] class 18 reserves ...CDDDD
TBF[4] class 19 reserves .....DCD
TBF[4] class 20 reserves ...DCD..
TBF[5] class 21 reserves .....DCD
TBF[5] class 22 reserves ...DCD..
TBF[6] class 23 reserves .....DCD
TBF[6] class 24 reserves ...DCD..
TBF[0] class 1 reserves ...C....
TBF[1] class 2 reserves .....C..
TBF[2] class 3 reserves .......C
@ -10435,195 +10486,310 @@ Going to test assignment with many connections, algorithm dynamic
TBF[7] class 12 reserves ......C.
TBF[5] class 13 reserves ...C....
TBF[7] class 14 reserves ....C...
TBF[14] class 15 reserves ...CDDDD
TBF[15] class 16 reserves ...CDDDD
TBF[16] class 17 reserves ...CDDDD
TBF[17] class 18 reserves ...CDDDD
TBF[8] class 15 reserves ...C....
TBF[10] class 16 reserves ...C....
TBF[12] class 17 reserves ...C....
TBF[14] class 18 reserves ...C....
TBF[9] class 19 reserves ......C.
TBF[8] class 20 reserves ....C...
TBF[11] class 21 reserves ......C.
TBF[10] class 22 reserves ....C...
TBF[13] class 23 reserves ......C.
TBF[12] class 24 reserves ....C...
TBF[18] class 25 reserves ......C.
TBF[14] class 25 reserves ......C.
TBF[13] class 26 reserves ....C...
TBF[20] class 27 reserves ......C.
TBF[19] class 28 reserves ....C...
TBF[22] class 29 reserves ......C.
TBF[15] class 27 reserves ......C.
TBF[14] class 28 reserves ....C...
TBF[16] class 29 reserves ......C.
TBF[4] class 1 reserves .......C
TBF[5] class 2 reserves .......C
TBF[31] class 3 reserves ......DC
TBF[7] class 2 reserves .......C
TBF[9] class 3 reserves .......C
TBF[0] class 4 reserves .....C..
TBF[1] class 5 reserves ...C....
TBF[2] class 6 reserves ...C....
TBF[4] class 7 reserves ...C....
TBF[2] class 8 reserves .....C..
TBF[0] class 7 reserves .......C
TBF[4] class 8 reserves ...C....
TBF[0] class 9 reserves ....C...
TBF[2] class 10 reserves ....C...
TBF[4] class 11 reserves ....C...
TBF[0] class 12 reserves ......C.
TBF[4] class 13 reserves .....C..
TBF[6] class 14 reserves ....C...
TBF[6] class 15 reserves ...C....
TBF[7] class 16 reserves ...C....
TBF[8] class 17 reserves ...C....
TBF[9] class 18 reserves ...C....
TBF[1] class 19 reserves ......C.
TBF[3] class 20 reserves ......C.
TBF[5] class 21 reserves ......C.
TBF[8] class 22 reserves ......C.
TBF[9] class 23 reserves ....C...
TBF[10] class 24 reserves ......C.
TBF[11] class 25 reserves ....C...
TBF[12] class 26 reserves ......C.
TBF[18] class 27 reserves ....C...
TBF[19] class 28 reserves ......C.
TBF[1] class 10 reserves .......C
TBF[6] class 11 reserves ...C....
TBF[2] class 12 reserves ....C...
TBF[0] class 13 reserves ......C.
TBF[3] class 14 reserves .......C
TBF[7] class 15 reserves ...C....
TBF[4] class 16 reserves ....C...
TBF[1] class 17 reserves ......C.
TBF[5] class 18 reserves .......C
TBF[9] class 19 reserves ...C....
TBF[6] class 20 reserves ....C...
TBF[3] class 21 reserves ......C.
TBF[6] class 22 reserves .......C
TBF[11] class 23 reserves ...C....
TBF[9] class 24 reserves ....C...
TBF[2] class 25 reserves .....C..
TBF[5] class 26 reserves ......C.
TBF[8] class 27 reserves .......C
TBF[13] class 28 reserves ...C....
TBF[11] class 29 reserves ....C...
TBF[4] class 1 reserves .....C..
TBF[8] class 2 reserves ......C.
TBF[10] class 3 reserves .......C
TBF[15] class 4 reserves ...C....
TBF[15] class 5 reserves ....C...
TBF[5] class 6 reserves .....C..
TBF[10] class 7 reserves ......C.
TBF[11] class 8 reserves .......C
TBF[16] class 9 reserves ...C....
TBF[16] class 10 reserves ....C...
TBF[6] class 11 reserves .....C..
TBF[12] class 12 reserves ......C.
TBF[12] class 13 reserves .......C
TBF[17] class 14 reserves ...C....
TBF[17] class 15 reserves ....C...
TBF[7] class 16 reserves .....C..
TBF[17] class 17 reserves ......C.
TBF[13] class 18 reserves .......C
TBF[18] class 19 reserves ...C....
TBF[18] class 20 reserves ....C...
TBF[8] class 21 reserves .....C..
TBF[18] class 22 reserves ......C.
TBF[14] class 23 reserves .......C
TBF[19] class 24 reserves ...C....
TBF[19] class 25 reserves ....C...
TBF[19] class 26 reserves ......C.
TBF[15] class 27 reserves .......C
TBF[20] class 28 reserves ...C....
TBF[20] class 29 reserves ....C...
TBF[0] class 1 reserves .......C
TBF[1] class 2 reserves .......C
TBF[3] class 3 reserves .......C
TBF[5] class 4 reserves .....C..
TBF[20] class 1 reserves ......C.
TBF[16] class 2 reserves .......C
TBF[21] class 3 reserves ...C....
TBF[21] class 4 reserves ....C...
TBF[21] class 5 reserves ......C.
TBF[23] class 6 reserves ......C.
TBF[21] class 7 reserves ....C...
TBF[6] class 8 reserves .....C..
TBF[24] class 9 reserves ....C...
TBF[26] class 10 reserves ....C...
TBF[28] class 11 reserves ....C...
TBF[25] class 12 reserves ......C.
TBF[30] class 13 reserves .....C..
TBF[22] class 14 reserves ....C...
TBF[10] class 15 reserves ...C....
TBF[11] class 16 reserves ...C....
TBF[12] class 17 reserves ...C....
TBF[13] class 18 reserves ...C....
TBF[27] class 19 reserves ......C.
TBF[29] class 20 reserves ......C.
TBF[24] class 21 reserves ......C.
TBF[26] class 22 reserves ......C.
TBF[28] class 23 reserves ......C.
TBF[23] class 24 reserves ....C...
TBF[30] class 25 reserves ......C.
TBF[25] class 26 reserves ....C...
TBF[6] class 1 reserves .......C
TBF[22] class 6 reserves ...C....
TBF[22] class 7 reserves ....C...
TBF[22] class 8 reserves ......C.
TBF[23] class 9 reserves ...C....
TBF[23] class 10 reserves ....C...
TBF[9] class 11 reserves .....C..
TBF[10] class 12 reserves .....C..
TBF[11] class 13 reserves .....C..
TBF[12] class 14 reserves .....C..
TBF[13] class 15 reserves .....C..
TBF[14] class 16 reserves .....C..
TBF[15] class 17 reserves .....C..
TBF[16] class 18 reserves .....C..
TBF[17] class 19 reserves .....C..
TBF[17] class 20 reserves .......C
TBF[18] class 21 reserves .....C..
TBF[18] class 22 reserves .......C
TBF[19] class 23 reserves .....C..
TBF[19] class 24 reserves .......C
TBF[20] class 25 reserves .....C..
TBF[20] class 26 reserves .......C
TBF[21] class 27 reserves .....C..
TBF[21] class 28 reserves .......C
TBF[22] class 29 reserves .....C..
TBF[22] class 1 reserves .......C
TBF[23] class 2 reserves .....C..
TBF[23] class 3 reserves ......C.
TBF[23] class 4 reserves .......C
TBF[24] class 5 reserves ...C....
TBF[24] class 6 reserves ....C...
TBF[24] class 7 reserves .....C..
TBF[24] class 8 reserves ......C.
TBF[24] class 9 reserves .......C
TBF[25] class 10 reserves ...C....
TBF[25] class 11 reserves ....C...
TBF[25] class 12 reserves .....C..
TBF[25] class 13 reserves ......C.
TBF[25] class 14 reserves .......C
TBF[26] class 15 reserves ...C....
TBF[26] class 16 reserves ....C...
TBF[26] class 17 reserves .....C..
TBF[26] class 18 reserves ......C.
TBF[26] class 19 reserves .......C
TBF[27] class 20 reserves ...C....
TBF[27] class 21 reserves ....C...
TBF[27] class 22 reserves .....C..
TBF[27] class 23 reserves ......C.
TBF[27] class 24 reserves .......C
TBF[28] class 25 reserves ...C....
TBF[28] class 26 reserves ....C...
TBF[28] class 27 reserves .....C..
TBF[28] class 28 reserves ......C.
TBF[28] class 29 reserves .......C
TBF[29] class 1 reserves ...C....
TBF[29] class 2 reserves ....C...
TBF[29] class 3 reserves .....C..
TBF[29] class 4 reserves ......C.
TBF[29] class 5 reserves .......C
TBF[30] class 6 reserves ...C....
TBF[30] class 7 reserves ....C...
TBF[30] class 8 reserves .....C..
TBF[30] class 9 reserves ......C.
TBF[30] class 10 reserves .......C
TBF[31] class 11 reserves ...C....
TBF[31] class 12 reserves ....C...
TBF[31] class 13 reserves .....C..
TBF[31] class 14 reserves ......C.
TBF[31] class 15 reserves .......C
TBF[0] class 1 reserves ...C....
TBF[1] class 2 reserves .....C..
TBF[2] class 3 reserves .......C
TBF[7] class 4 reserves .....C..
TBF[7] class 5 reserves .......C
TBF[8] class 6 reserves .....C..
TBF[1] class 4 reserves ....C...
TBF[2] class 5 reserves ......C.
TBF[3] class 6 reserves ...C....
TBF[3] class 7 reserves .....C..
TBF[8] class 8 reserves .......C
TBF[9] class 9 reserves .....C..
TBF[9] class 10 reserves .......C
TBF[10] class 11 reserves .....C..
TBF[10] class 12 reserves .......C
TBF[11] class 13 reserves .....C..
TBF[11] class 14 reserves .......C
TBF[14] class 15 reserves ...CDDDD
TBF[15] class 16 reserves ...CDDDD
TBF[16] class 17 reserves ...CDDDD
TBF[17] class 18 reserves ...CDDDD
TBF[0] class 19 reserves ...C....
TBF[3] class 20 reserves ...C....
TBF[5] class 21 reserves ...C....
TBF[12] class 22 reserves .....C..
TBF[12] class 23 reserves .......C
TBF[18] class 24 reserves ...C....
TBF[13] class 25 reserves .....C..
TBF[13] class 26 reserves .......C
TBF[19] class 27 reserves ...C....
TBF[1] class 28 reserves ....C...
TBF[18] class 29 reserves .....C..
TBF[4] class 8 reserves ......C.
TBF[3] class 9 reserves ....C...
TBF[6] class 10 reserves ......C.
TBF[5] class 11 reserves ....C...
TBF[7] class 12 reserves ......C.
TBF[5] class 13 reserves ...C....
TBF[7] class 14 reserves ....C...
TBF[8] class 15 reserves ...C....
TBF[10] class 16 reserves ...C....
TBF[12] class 17 reserves ...C....
TBF[14] class 18 reserves ...C....
TBF[9] class 19 reserves ......C.
TBF[8] class 20 reserves ....C...
TBF[11] class 21 reserves ......C.
TBF[10] class 22 reserves ....C...
TBF[13] class 23 reserves ......C.
TBF[12] class 24 reserves ....C...
TBF[14] class 25 reserves ......C.
TBF[13] class 26 reserves ....C...
TBF[15] class 27 reserves ......C.
TBF[14] class 28 reserves ....C...
TBF[16] class 29 reserves ......C.
TBF[4] class 1 reserves .......C
TBF[5] class 2 reserves .......C
TBF[31] class 3 reserves ......DC
TBF[7] class 2 reserves .......C
TBF[9] class 3 reserves .......C
TBF[0] class 4 reserves .....C..
TBF[1] class 5 reserves ...C....
TBF[2] class 6 reserves ...C....
TBF[4] class 7 reserves ...C....
TBF[2] class 8 reserves .....C..
TBF[0] class 7 reserves .......C
TBF[4] class 8 reserves ...C....
TBF[0] class 9 reserves ....C...
TBF[2] class 10 reserves ....C...
TBF[3] class 11 reserves ....C...
TBF[18] class 12 reserves .......C
TBF[4] class 13 reserves .....C..
TBF[4] class 14 reserves ....C...
TBF[6] class 15 reserves ...C....
TBF[7] class 16 reserves ...C....
TBF[8] class 17 reserves ...C....
TBF[9] class 18 reserves ...C....
TBF[0] class 19 reserves ......C.
TBF[1] class 20 reserves ......C.
TBF[2] class 21 reserves ......C.
TBF[3] class 22 reserves ......C.
TBF[5] class 23 reserves ....C...
TBF[4] class 24 reserves ......C.
TBF[6] class 25 reserves ....C...
TBF[1] class 10 reserves .......C
TBF[6] class 11 reserves ...C....
TBF[2] class 12 reserves ....C...
TBF[0] class 13 reserves ......C.
TBF[3] class 14 reserves .......C
TBF[7] class 15 reserves ...C....
TBF[4] class 16 reserves ....C...
TBF[1] class 17 reserves ......C.
TBF[5] class 18 reserves .......C
TBF[9] class 19 reserves ...C....
TBF[6] class 20 reserves ....C...
TBF[3] class 21 reserves ......C.
TBF[6] class 22 reserves .......C
TBF[11] class 23 reserves ...C....
TBF[9] class 24 reserves ....C...
TBF[2] class 25 reserves .....C..
TBF[5] class 26 reserves ......C.
TBF[7] class 27 reserves ....C...
TBF[6] class 28 reserves ......C.
TBF[20] class 29 reserves ...DCD..
TBF[0] class 1 reserves .......C
TBF[1] class 2 reserves .......C
TBF[3] class 3 reserves .......C
TBF[8] class 4 reserves ....C...
TBF[7] class 5 reserves ......C.
TBF[8] class 6 reserves ......C.
TBF[21] class 7 reserves ....CD..
TBF[5] class 8 reserves .....C..
TBF[9] class 9 reserves ....C...
TBF[10] class 10 reserves ....C...
TBF[11] class 11 reserves ....C...
TBF[9] class 12 reserves ......C.
TBF[6] class 13 reserves .....C..
TBF[22] class 14 reserves ....CDDD
TBF[10] class 15 reserves ...C....
TBF[11] class 16 reserves ...C....
TBF[12] class 17 reserves ...C....
TBF[13] class 18 reserves ...C....
TBF[27] class 19 reserves ....DDCD
TBF[29] class 20 reserves .....DCD
TBF[24] class 21 reserves ....DCD.
TBF[26] class 22 reserves .....DCD
TBF[28] class 23 reserves ....DCD.
TBF[23] class 24 reserves ...DCD..
TBF[30] class 25 reserves .....DCD
TBF[25] class 26 reserves ...CD...
TBF[10] class 27 reserves ......C.
TBF[21] class 28 reserves ...C....
TBF[11] class 29 reserves ......C.
TBF[12] class 1 reserves ....C...
TBF[22] class 2 reserves ...C....
TBF[12] class 3 reserves ......C.
TBF[13] class 4 reserves ....C...
TBF[8] class 27 reserves .......C
TBF[13] class 28 reserves ...C....
TBF[11] class 29 reserves ....C...
TBF[4] class 1 reserves .....C..
TBF[8] class 2 reserves ......C.
TBF[10] class 3 reserves .......C
TBF[15] class 4 reserves ...C....
TBF[15] class 5 reserves ....C...
TBF[5] class 6 reserves .....C..
TBF[10] class 7 reserves ......C.
TBF[11] class 8 reserves .......C
TBF[16] class 9 reserves ...C....
TBF[16] class 10 reserves ....C...
TBF[6] class 11 reserves .....C..
TBF[12] class 12 reserves ......C.
TBF[12] class 13 reserves .......C
TBF[17] class 14 reserves ...C....
TBF[17] class 15 reserves ....C...
TBF[7] class 16 reserves .....C..
TBF[17] class 17 reserves ......C.
TBF[13] class 18 reserves .......C
TBF[18] class 19 reserves ...C....
TBF[18] class 20 reserves ....C...
TBF[8] class 21 reserves .....C..
TBF[18] class 22 reserves ......C.
TBF[14] class 23 reserves .......C
TBF[19] class 24 reserves ...C....
TBF[19] class 25 reserves ....C...
TBF[19] class 26 reserves ......C.
TBF[15] class 27 reserves .......C
TBF[20] class 28 reserves ...C....
TBF[20] class 29 reserves ....C...
TBF[20] class 1 reserves ......C.
TBF[16] class 2 reserves .......C
TBF[21] class 3 reserves ...C....
TBF[21] class 4 reserves ....C...
TBF[21] class 5 reserves ......C.
TBF[22] class 6 reserves ...C....
TBF[22] class 7 reserves ....C...
TBF[22] class 8 reserves ......C.
TBF[23] class 9 reserves ...C....
TBF[23] class 10 reserves ....C...
TBF[9] class 11 reserves .....C..
TBF[10] class 12 reserves .....C..
TBF[11] class 13 reserves .....C..
TBF[12] class 14 reserves .....C..
TBF[13] class 15 reserves .....C..
TBF[14] class 16 reserves .....C..
TBF[15] class 17 reserves .....C..
TBF[16] class 18 reserves .....C..
TBF[17] class 19 reserves .....C..
TBF[17] class 20 reserves .......C
TBF[18] class 21 reserves .....C..
TBF[18] class 22 reserves .......C
TBF[19] class 23 reserves .....C..
TBF[19] class 24 reserves .......C
TBF[20] class 25 reserves .....C..
TBF[20] class 26 reserves .......C
TBF[21] class 27 reserves .....C..
TBF[21] class 28 reserves .......C
TBF[22] class 29 reserves .....C..
TBF[22] class 1 reserves .......C
TBF[23] class 2 reserves .....C..
TBF[23] class 3 reserves ......C.
TBF[23] class 4 reserves .......C
TBF[24] class 5 reserves ...C....
TBF[13] class 6 reserves ......C.
TBF[19] class 7 reserves .......C
TBF[18] class 8 reserves ....C...
TBF[26] class 9 reserves ...C....
TBF[18] class 10 reserves ......C.
TBF[20] class 11 reserves .......C
TBF[19] class 12 reserves ....C...
TBF[27] class 13 reserves ...C....
TBF[19] class 14 reserves ......C.
TBF[21] class 15 reserves .......C
TBF[24] class 6 reserves ....C...
TBF[24] class 7 reserves .....C..
TBF[24] class 8 reserves ......C.
TBF[24] class 9 reserves .......C
TBF[25] class 10 reserves ...C....
TBF[25] class 11 reserves ....C...
TBF[25] class 12 reserves .....C..
TBF[25] class 13 reserves ......C.
TBF[25] class 14 reserves .......C
TBF[26] class 15 reserves ...C....
TBF[26] class 16 reserves ....C...
TBF[28] class 17 reserves ...C....
TBF[19] class 18 reserves .....C..
TBF[20] class 19 reserves ......C.
TBF[23] class 20 reserves .......C
TBF[29] class 21 reserves ....C...
TBF[29] class 22 reserves ...C....
TBF[25] class 23 reserves .....C..
TBF[21] class 24 reserves ......C.
TBF[24] class 25 reserves .......C
TBF[30] class 26 reserves ....C...
TBF[30] class 27 reserves ...C....
TBF[31] class 28 reserves .....C..
TBF[23] class 29 reserves ......C.
TBF[25] class 1 reserves .......C
TBF[31] class 2 reserves ....C...
TBF[31] class 3 reserves ...C....
TBF[25] class 4 reserves ......C.
TBF[28] class 5 reserves .......C
Successfully allocated 121 TBFs
TBF[26] class 17 reserves .....C..
TBF[26] class 18 reserves ......C.
TBF[26] class 19 reserves .......C
TBF[27] class 20 reserves ...C....
TBF[27] class 21 reserves ....C...
TBF[27] class 22 reserves .....C..
TBF[27] class 23 reserves ......C.
TBF[27] class 24 reserves .......C
TBF[28] class 25 reserves ...C....
TBF[28] class 26 reserves ....C...
TBF[28] class 27 reserves .....C..
TBF[28] class 28 reserves ......C.
TBF[28] class 29 reserves .......C
TBF[29] class 1 reserves ...C....
TBF[29] class 2 reserves ....C...
TBF[29] class 3 reserves .....C..
TBF[29] class 4 reserves ......C.
TBF[29] class 5 reserves .......C
TBF[30] class 6 reserves ...C....
TBF[30] class 7 reserves ....C...
TBF[30] class 8 reserves .....C..
TBF[30] class 9 reserves ......C.
TBF[30] class 10 reserves .......C
TBF[31] class 11 reserves ...C....
TBF[31] class 12 reserves ....C...
TBF[31] class 13 reserves .....C..
TBF[31] class 14 reserves ......C.
TBF[31] class 15 reserves .......C
Successfully allocated 160 TBFs