1function [AvgTable,QT,UT,
RT,WT,AT,TT] = getAvgNodeTable(self,Q,U,R,T,A,W,keepDisabled)
2% [AVGTABLE,QT,UT,
RT,WT,AT,TT] = GETNODEAVGTABLE(SELF,Q,U,R,T,A,W,KEEPDISABLED)
3% Return table of average node metrics
5% Copyright (c) 2012-2026, Imperial College London
8if nargin<8 %~exist(
'keepDisabled',
'var')
12if GlobalConstants.DummyMode
13 [AvgTable, QT, UT,
RT, TT, WT, AT] = deal(Table());
14 AvgTable = IndexedTable(AvgTable);
18sn = self.model.getStruct;
19I = sn.nnodes + sn.nregions; % Include FCR virtual
nodes
22% Auxiliary retrieval
classes (created internally by Cache.setRetrievalSystem
23% to model the delayed-hit retrieval system) are hidden from the node table:
24% they are plumbing, not user-facing
classes.
25hiddenClass = false(1,K);
27 if sn.nodetype(ind) == NodeType.Cache && isfield(sn.nodeparam{ind},
'retrievalClassIndices')
28 rci = sn.nodeparam{ind}.retrievalClassIndices;
29 rci = rci(rci>=1 & rci<=K);
30 hiddenClass(rci) =
true;
35 [Q,U,R,T,A,W] = getAvgHandles(self);
36elseif isempty(Q) && isempty(U) && isempty(R) && isempty(T) && isempty(A) && isempty(W)
37 [Q,U,R,T,A,W] = getAvgHandles(self);
40[QN,UN,RN,TN,AN,WN] = self.getAvgNode(Q,U,R,T,A,W);
43 [AvgTable, QT, UT,
RT, WT, TT, AT] = deal(Table());
44 AvgTable = IndexedTable(AvgTable);
46 [Qval, Uval, Rval, Tval, Aval, Wval] = deal([]);
52 continue % auxiliary retrieval
class - omit from node table
54 % Check
if any metric
is non-zero (omit NaN values
for FCR
nodes)
55 if isMATLABReleaseOlderThan(
"R2018b")
56 filterVal = nansum([QN(ind,k),UN(ind,k),RN(ind,k),TN(ind,k),AN(ind,k)]); %
#ok<NANSUM>
58 filterVal = sum([QN(ind,k),UN(ind,k),RN(ind,k),TN(ind,k),AN(ind,k)],
'omitnan');
62 inchain = sn.inchain{c};
63 JobClass{end+1,1} = sn.classnames{k};
64 Node{end+1,1} = sn.nodenames{ind};
65 Qval(end+1) = QN(ind,k);
66 Uval(end+1) = UN(ind,k);
67 Rval(end+1) = RN(ind,k);
68 Wval(end+1) = WN(ind,k);
69 Tval(end+1) = TN(ind,k);
70 Aval(end+1) = AN(ind,k);
75 JobClass = label(JobClass);
76 QLen = Qval(:); % we need to save first in a variable named like the column
77 QT = Table(Node,JobClass,QLen);
78 Util = Uval(:); % we need to save first in a variable named like the column
79 UT = Table(Node,JobClass,Util);
80 ResidT = Wval(:); % we need to save first in a variable named like the column
81 WT = Table(Node,JobClass,ResidT);
82 RespT = Rval(:); % we need to save first in a variable named like the column
83 RT = Table(Node,JobClass,RespT);
84 Tput = Tval(:); % we need to save first in a variable named like the column
85 TT = Table(Node,JobClass,Tput);
86 ArvR = Aval(:); % we need to save first in a variable named like the column
87 AT = Table(Node,JobClass,ArvR);
88 AvgTable = Table(Node,JobClass,QLen,Util,RespT,ResidT,ArvR,Tput);
89 AvgTable = IndexedTable(AvgTable);
91 [Qval, Uval, Rval, Tval, Aval, Wval] = deal(zeros(I, K));
97 inchain = sn.inchain{c};
98 JobClass{end+1,1} = sn.classnames{k};
99 Node{end+1,1} = sn.nodenames{ind};
100 Qval((ind-1)*K+k) = QN(ind,k);
101 Uval((ind-1)*K+k) = UN(ind,k);
102 Rval((ind-1)*K+k) = RN(ind,k);
103 Wval((ind-1)*K+k) = WN(ind,k);
104 Tval((ind-1)*K+k) = TN(ind,k);
105 Aval((ind-1)*K+k) = AN(ind,k);
109 JobClass = label(JobClass);
110 QLen = Qval(:); % we need to save first in a variable named like the column
111 QT = Table(Node,JobClass,QLen);
112 Util = Uval(:); % we need to save first in a variable named like the column
113 UT = Table(Node,JobClass,Util);
114 ResidT = Wval(:); % we need to save first in a variable named like the column
115 WT = Table(Node,JobClass,ResidT);
116 RespT = Rval(:); % we need to save first in a variable named like the column
117 RT = Table(Node,JobClass,RespT);
118 Tput = Tval(:); % we need to save first in a variable named like the column
119 TT = Table(Node,JobClass,Tput);
120 ArvR = Aval(:); % we need to save first in a variable named like the column
121 AT = Table(Node,JobClass,ArvR);
122 AvgTable = Table(Node,JobClass,QLen,Util,RespT,ArvR,Tput);
123 AvgTable = IndexedTable(AvgTable);