[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v13 01/23] docs: create Cache Allocation Technology (CAT) and Code and Data Prioritization (CDP) feature document
[I just add some of my thoughts when I read this document.] > +## Hardware perspective > + > + CAT/CDP defines a range of MSRs to assign different cache access patterns > + which are known as CBMs, each CBM is associated with a COS. > + > + ``` > + E.g. L2 CAT: > + +----------------------------+----------------+ > + IA32_PQR_ASSOC | MSR (per socket) | Address | > + +----+---+-------+ +----------------------------+----------------+ > + | |COS| | | IA32_L2_QOS_MASK_0 | 0xD10 | > + +----+---+-------+ +----------------------------+----------------+ > + └-------------> | ... | ... | > + +----------------------------+----------------+ > + | IA32_L2_QOS_MASK_n | 0xD10+n (n<64) | > + +----------------------------+----------------+ > + ``` > + > + L3 CAT/CDP uses a range of MSRs from 0xC90 ~ 0xC90+n (n<128). > + > + L2 CAT uses a range of MSRs from 0xD10 ~ 0xD10+n (n<64), following the L3 > + CAT/CDP MSRs, setting different L2 cache accessing patterns from L3 cache > is > + supported. > + > + Every MSR stores a CBM value. A capacity bitmask (CBM) provides a hint to > the > + hardware indicating the cache space a domain should be limited to as well > as > + providing an indication of overlap and isolation in the CAT-capable cache > from > + other domains contending for the cache. > + > + Sample cache capacity bitmasks for a bitlength of 8 are shown below. Please > + note that all (and only) contiguous '1' combinations are allowed (e.g. > FFFFH, > + 0FF0H, 003CH, etc.). IIRC, the number of contiguous '1's in CBM should be at least 2 at least on my machine (Intel(R) Xeon(R) CPU E5-2618L v3). I'm unsure if this constraint exist for all CAT-capable processors. For those processors that have such constraint, the system may crash when the user sets only 1 bit to the CBM. > + 3. Per-socket PSR features information structure > + > + ``` > + struct psr_socket_info { > + bool feat_init; > + struct feat_node *features[PSR_SOCKET_FEAT_NUM]; > + spinlock_t ref_lock; > + unsigned int cos_ref[MAX_COS_REG_CNT]; > + DECLARE_BITMAP(dom_ids, DOMID_IDLE + 1); > + }; > + ``` > + > + We collect all PSR allocation features information of a socket in this > + `struct psr_socket_info`. > + > + - Member `feat_init` > + > + `feat_init` is a flag, to indicate whether the CPU init on a socket > + has been done. > + > + - Member `features` > + > + `features` is a pointer array to save all enabled features poniters > + according to feature position defined in `enum psr_feat_type`. > + > + - Member `ref_lock` > + > + `ref_lock` is a spin lock to protect `cos_ref`. > + > + - Member `cos_ref` > + > + `cos_ref` is an array which maintains the reference of one COS. It > maps > + to cos_reg_val[MAX_COS_REG_NUM] in `struct feat_node`. If one COS is > + used by one domain, the corresponding reference will increase by > one. If > + a domain releases the COS, the reference will decrease by one. The > array > + is indexed by COS ID. > + > + - Member `dom_ids` > + > + `dom_ids` is a bitmap, every bit corresponds to a domain. Index is > + domain_id. It is used to help restore domain_id to 0 when a socket is > + offline and then online again. Did you mean "it is used to help restore domain_id to COS0, which has all 1s in CBM, when a socket is offline and then online again." Best, Meng ----------- Meng Xu PhD Candidate in Computer and Information Science University of Pennsylvania http://www.cis.upenn.edu/~mengxu/ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |