|
Hex Dec Type/Val Lng Label (dup) Comments
---- ---- --------- ---- -------------- --------
0000 0 Structure DSVBK DiSpatch Vector BlocK
Format of the header:
00000000 DSVHEADR * Base value to be used when
referencing the DSVBK header
0000 0 Bitstring 1 * Reserved for IBM use.
0001 1 Bitstring 1 DSVHDFLG Flag byte for DSVBK status
1... .... DSVHDOFL X'80' DSVHDOFL Set when DSVBK has
"overflowed"
.1.. .... DSVTIDLE X'40' DSVTIDLE Set to indicate
that a scan should be made of the
test-idle users by HCPDSP.
...1 .... DSVIMBAL X'10' DSVIMBAL Possible processor
workload imbalance
.... 1... DSVNOPTL X'08' DSVNOPTL We could not
obtain the PTIL lock for any of
the VMDBKs in the master-only
DSVBK.
.... .1.. DSVNEWRK X'04' DSVNEWRK Used to tell
HCPSTLWT that new work was added
to this DSVBK between the time
the dispatcher released the DSVBK
lock and when HCPSTLWT turns on
the wait bit in SRMCPUWT. This is
necessary since the dispatcher
does not hold the scheduler lock
exclusive or the DSVBK lock
during that time and another
processor could add work to the
DSVBK and the dispatcher could go
into wait state without knowing
that work is available. The DSVBK
lock must be held to turn this
bit on or off.
.... ..1. DSVOFLER X'02' DSVOFLER Indicates that
this DSVBK had the
DSVHDOFL/DSVLOREJ mismatch error
at least one time
0002 2 Address 1 DSVHDFRE Anchor of the "entries not in
use" queue.
0003 3 Address 1 DSVHDWRK Anchor of the "entries in use"
queue.
0004 4 Address 4 DSVNXTDV Pointer to the next dispatch
vector in a circular linked list
of dispatch vectors that belong
to CPUs of the same CPU type.
i.e: zIIP,zAAP,CP,IFL. Protected
by the scheduler lock.
0008 8 Signed 4 DSVLOREJ Lowest-value (best) priority
which was rejected from this
DSVBK
000C 12 Signed 2 DSVUSERC User count - number of VMDBKS in
this DSVBK
000E 14 Address 1 DSVLSTEN Last DSVENTRY in DSVHDWRK queue
000F 15 Address 1 * Reserved for future IBM use
0010 16 Dbl-Word 8 DSVLOCK (6) Lock area for the DSVBK lock.
This lock is a formal exclusive
spin lock and it is used to
serialize access to a DSVBK. The
HCPLKPLD and HCPULPLD macros are
used to obtain and release it. At
least a share of the scheduler
lock must be held before
requesting this lock. This means
that any DSVBK can be accessed or
even changed without its DSVBK
lock if the scheduler lock is
held in exclusive mode. More than
one DSVBK lock can be held by a
processor only if the scheduler
lock is first held in exclusive
mode. The scheduler lock cannot
be obtained in exclusive mode
while a DSVBK lock is held.
0040 64 Dbl-Word 8 * (0)
0040 64 Bitstring 8 DSVASSOC Mask of CPUs that are associated
with this dispatch vector
0048 72 Signed 2 DSVASCAO Dispatch vector associated CPU
address origin (bit index)
004A 74 Signed 2 * Reserved for IBM use
004C 76 Signed 4 * Reserved for IBM use
0050 80 Signed 4 DSVFTRMK Mask of features available on all
CPUs associated with this
dispatch vector
0054 84 Address 4 DSVGLIST Global list pointer, either to
all active DSVBKs or to all
DSVBKs in the free list
0058 88 Address 4 DSVTOPBK Pointer to containing TOPBK
005C 92 Signed 4 DSVCAPAC The amount of unparked CPU/core
capacity for all CPUs/cores
associated with this DSVBK. An
entire real CPU/core of capacity
is represented as x'10000'. This
is an unsigned value, as a
CPU/core will never have negative
capacity.
0060 96 Signed 4 DSVRCAP The amount of remaining capacity
which hasn't been earmarked for a
VMDBK with affinity to this
DSVBK. This value is in the same
units as DSVCAPAC, however, it is
a signed number.
Notes : For a single-level topology, DSVTOPID has the
format x'bb000000' where bb is the TOPCNTID of
the TOPNL=1 TOPBK.
For a two-level topology, DSVTOPID has the format
x'bbcc0000' where bb is the TOPCNTID of the
TOPNL=2 TOPBK, and cc is the TOPCNTID of the
TOPNL=1 TOPBK.
Currently z/VM supports machines with up to
two levels of CPU topology. The architecture
allows for up to 5 topology levels. This field
has room for 4 topology levels. If z/VM were to
support more than 4 levels of topology, DSVTOPID
would need to be expanded.
0064 100 Bitstring 4 DSVTOPID Topology identifier. This
consists of the container ids
(TOPCNTID) for the TOPBKs above
this DSVBK in the topology tree,
specified left to right with the
highest (greatest TOPNL value)
TOPBKs listed first.
0068 104 Address 4 * Reserved for IBM use.
006C 108 Signed 4 DSVCBF Chargeback factor. Updated only
by the single HCPMTCPL task in
the system. Scaled by
HisMT_Entry_kMetricFactor or by
shifting the value using
HisMT_Entry_kMetricShift
0070 112 Signed 8 DSVTIMWT TOD clock value when a CPU
associated with this DSVBK last
exited wait state.
0078 120 Signed 4 * Reserved for IBM use
007C 124 Signed 2 * Reserved for IBM use
007E 126 Signed 2 DSVUNPAO Associated unparked CPU address
origin (bit index)
0080 128 Bitstring 8 DSVUNPRK Mask of associated CPUs that are
currently in the unparked state
00000088 DSVHDLEN *-DSVHEADR Length in bytes of the
DSVBK header.
List of DSVBK entries:
0088 136 Dbl-Word 8 DSVENTRS (0) Start of DSVENTRY list.
0088 136 Bitstring 1 * (320)
DSVBK Trailer. Follows last of the entries.
01C8 456 Dbl-Word 8 DSVTRALR (0)
01C8 456 Bitstring 1 DSVHDWKB Byte of Work Bits All bit
manipulations must be serialized
by compare-and-swap logic. See
note in block comment above.
1... .... DSVDSCAN X'80' DSVDSCAN A Steal Task may
need to be started
.1.. .... DSVRCGAL X'40' DSVRCGAL A foreground
replenish of the cleared global
available list is required
..1. .... DSVNOOWN X'20' DSVNOOWN High priority
reclaim noown resources
...1 .... DSVSXSPM X'10' DSVSXSPM High priority
SXSPM work
.... .1.. DSVRUGAL X'04' DSVRUGAL The uncleared
global available lists need to be
replenished.
.... ..1. DSVEMPTY X'02' DSVEMPTY DSVHDWRK=0
(empty).
1111 .1.. DSVHiPri DSVDSCAN+DSVRCGAL+DSVNOOWN+DSVSXS
PM+DSVRUGAL DSVHiPri *cmt
01C9 457 Bitstring 1 * (3) Reserved for IBM use.
01CC 460 Address 4 DSVNXTTO Pointer to the next dispatch
vector in a circular linked list
of dispatch vectors of the same
CPU type that belong to the same
NL=1 TOPBK. Serialized by the
topology lock (HCPDSVTL).
01D0 464 Bitstring 512 DSVCPARY Cache penalty array. An indexed
array of one-byte entries that
contain the "cache penalty" or
topological distance from each of
the other DSVBKs of the same CPU
type. Indexed by position in the
array of DSVBKs starting at
HCPDSVST. An entry value of x'FF'
means there is no active DSVBK at
that index into the HCPDSVST
array.
00000030 DSVTRRES 1024-(*-DSVBK) space left in
first 4 cache lines
03D0 976 Bitstring 1 * Reserved for IBM use
00000238 DSVTRLEN *-DSVTRALR Length of DSVBK
Trailer.
00000400 DSVBKLEN *-DSVBK Length of
header+entries+trailer.
00000400 DSVEND * End of the DSVBK defined
content.
Format of each entry:
0088 136 Dbl-Word 8 DSVENTRY (0) Base value to be used when
referencing a DSVBK entry.
0088 136 Address 3 DSVVMDBK Bits 0 to 19 of the user's VMDBK
address. Bits 20 to 31 are known
to be zero and need not be stored
in the Vector entry.
1... .... DSVINUSE X'80' DSVINUSE High-order bit is
set when the DSVBK entry is "in
use", whenever the entry is in
the chain starting from DSVHDWRK.
008A 138 Bitstring 1 DSVFLAGS A flag nibble
.... 1... DSVNOSTL X'08' DSVNOSTL Set when work MUST
not be stolen, in order to
respect VMDBK's affinity
requirements
008B 139 Address 1 DSVFPNT Forward pointer to next entry in
queue. Zero if this is the last
entry.
008C 140 Signed 4 DSVPRIOR A representation of this VMDBK's
priority in the dispatch list.
The value in this field is a
function of the VMDBK's VMDDPRTY.
00000008 DSVENTLN *-DSVENTRY Length in bytes of a
DSVBK entry
00000028 DSVMAXUS 40 Maximum number of users in a
DSVBK
00000003 DSVSHIFT 3 Number of bits to shift to
convert a DSVENTRY index into a
displacement from DSVHEADR
0000000A DSVLFCTR 10 shift value used to divide by
the length of a DSVBK DSVLEN must
be a power of two so that use of
DSVLFCTR as a shift value for
DSVBK length is valid
Constants used for DSVBK allocation:
00000400 DSVLEN (DSVBKLEN+255)/256*256 Length in
bytes of a multiple of cache
lines required for 1 DSVBK.
00000080 DSVSIZE (DSVLEN+7)/8 DSVLEN size in
dwords.
| |