Discussion VM CPU pinning and NUMA CPU pinning
by Liao, Chuan (Jason Liao, HPservers-Core-OE-PSC)
--_000_B63C858E777679458338A30A991BB5240163BDA8G2W2441americas_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Hi All,
Now we are working on the NUMA tune feature development for oVirt 3.5. This=
feature allow user to configure the vCPU pining according to host CPU/NUMA=
topology to get the best performance for created VM. But this will impact =
the current function of vCPU pining. Now, we are looking for a solution to =
consolidate the conflict. We want to start an open discussion about VM CPU =
pinning (the current design) and NUMA CPU pining (new feature we are workin=
g on) in developer list:
Background:
Concept:
1. VM CPU pinning: the exist feature in current oVirt, which allow use=
r to configure the VM vCPU pinning over ovirt, user can configure vCPU pini=
ng independently without NUMA tune.
2. NUMA CPU pinning: allow user to configure the vCPU pining according=
to host NUMA topology to get the best performance for created VM
3. vNode: Virtual NUMA node ( User configured )
4. pNode: host physical NUMA node ( Get capability from host )
Notice:
1. NUMA tuning feature and CPU pinning feature are individually in lib=
virt ( ovirt backend ).
2. User could configure VM CPU pining individually without NUMA tune s=
etup.
3. When configuring NUMA tuning feature, user need to configure VM NUM=
A tuning ( vNode pinto pNode & tuning mode ) and VM CPU pinning ( NUMA incl=
uded ) to get optimized VM performance, otherwise VM will have low performa=
nce.
We have two proposal now for this issue. Please give us some comments and y=
our feedback, thanks.
Solution 1:
GUI:
Transform between the CPU pinning text and a structure which will be used i=
n NUMA CPU pinning configure page.
And then save the CPU pinning text to the current VM CPU pinning field =
of VM.
Restful:
Transform between the CPU pinning text and a structure which will be used i=
n restful NUMA CPU pinning.
And then save the CPU pinning text to the current VM CPU pinning field of V=
M.
Broker:
Remove temporary solution(See the current implementation as below) and foll=
ow previous cpupin configuration procedure.
Solution 2:
GUI:
If current VM CPU pinning is configured, when user open NUMA CPU pinning co=
nfigure page, he will get a warning message. If he continues to configure N=
UMA CPU pinning and save the data, the current VM CPU pinning configura=
tion will be cleared.
NUMA CPU pinning configured data will be saved as new structure individuall=
y without changing current VM CPU pinning configuration.
Restful:
Configure NUMA CPU pinning and then save the data with the new NUMA CPU pin=
ning structure.
Entity and Database:
Individually NUMA CPU pinning entities and data structure.
Broker:
NUMA CPU pinning configuration will be first considered to use. If=
it's not configured, it will use the current VM CPU pinning.
Solution 1 The CPU pining data is consistent but the code logic is very com=
plex.
Solution 2 have better adaptive and better data structure. This is the way =
we preferred.
We are appreciated that anybody could give us your comments or the better s=
olution you have.
The below is the current implementation for your reference:
VM CPU pinning feature
GUI:
User input vCPU pining configure data with formatted text.
Restful:
User configure CpuTune and VCpuPin model with mapper to CPU pinning text.
Entity and Database:
CPU pinning is String property.
Broker:
Generate structure of cputune ( libvirt format ) from CPU pining string pro=
perty.
NUMA tuning feature
GUI:
User can drag & drop virtual NUMA node to host NUMA node ( pin to or remove=
pin to ).
Restful:
Add/update/remove virtual NUMA node with property of pin to host NUMA node =
index.
Design NUMACPU model under NUMA node for extend.
Entity and Database:
Individually NUMA node entities ( vNode extend pNode ) and store procedure.
Broker:
Generate structure of numatune, cpu/numa ( libvirt format ) from NUMA node =
entities.
Temporary solution prevent Notice 3
Broker:
Generate right structure of cputune ( libivirt format ) from NUMA node enti=
ties ( vNode pinto pNode )
Limitation:
This structure of cputune will not get the best performance of vNode.
Best Regards,
Jason Liao
--_000_B63C858E777679458338A30A991BB5240163BDA8G2W2441americas_
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
1">
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:"HP Simplified";
panose-1:2 11 6 4 2 2 4 2 2 4;}
@font-face
{font-family:"YaHei Consolas Hybrid";
panose-1:2 11 5 9 2 2 4 2 2 4;}
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:"\@YaHei Consolas Hybrid";
panose-1:2 11 5 9 2 2 4 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{mso-style-priority:99;
mso-style-link:"Plain Text Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.5pt;
font-family:"HP Simplified","sans-serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:21.0pt;
font-size:10.5pt;
font-family:"Calibri","sans-serif";}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"HP Simplified","sans-serif";
color:windowtext;}
span.PlainTextChar
{mso-style-name:"Plain Text Char";
mso-style-priority:99;
mso-style-link:"Plain Text";
font-family:"HP Simplified","sans-serif";}
.MsoChpDefault
{mso-style-type:export-only;}
/* Page Definitions */
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:1440225503;
mso-list-type:hybrid;
mso-list-template-ids:-598169600 1424391416 67698713 67698715 67698703 676=
98713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
@list l0:level2
{mso-level-number-format:alpha-lower;
mso-level-text:"%2\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:42.0pt;
text-indent:-21.0pt;}
@list l0:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:63.0pt;
text-indent:-21.0pt;}
@list l0:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:84.0pt;
text-indent:-21.0pt;}
@list l0:level5
{mso-level-number-format:alpha-lower;
mso-level-text:"%5\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:105.0pt;
text-indent:-21.0pt;}
@list l0:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:126.0pt;
text-indent:-21.0pt;}
@list l0:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:147.0pt;
text-indent:-21.0pt;}
@list l0:level8
{mso-level-number-format:alpha-lower;
mso-level-text:"%8\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:168.0pt;
text-indent:-21.0pt;}
@list l0:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:189.0pt;
text-indent:-21.0pt;}
@list l1
{mso-list-id:2059089049;
mso-list-type:hybrid;
mso-list-template-ids:148561564 103326546 67698713 67698715 67698703 67698=
713 67698715 67698703 67698713 67698715;}
@list l1:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;
mso-fareast-font-family:SimSun;}
@list l1:level2
{mso-level-number-format:alpha-lower;
mso-level-text:"%2\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:42.0pt;
text-indent:-21.0pt;}
@list l1:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:63.0pt;
text-indent:-21.0pt;}
@list l1:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:84.0pt;
text-indent:-21.0pt;}
@list l1:level5
{mso-level-number-format:alpha-lower;
mso-level-text:"%5\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:105.0pt;
text-indent:-21.0pt;}
@list l1:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:126.0pt;
text-indent:-21.0pt;}
@list l1:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:147.0pt;
text-indent:-21.0pt;}
@list l1:level8
{mso-level-number-format:alpha-lower;
mso-level-text:"%8\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:168.0pt;
text-indent:-21.0pt;}
@list l1:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:189.0pt;
text-indent:-21.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"ZH-CN" link=3D"#0563C1" vlink=3D"#954F72" style=3D"text-justi=
fy-trim:punctuation">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">Hi All,<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif""><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">Now we are working on the NUMA tune=
feature development for oVirt 3.5. This feature allow user to configure th=
e vCPU pining according to host CPU/NUMA topology to get the
best performance for created VM. But this will impact the current function=
of vCPU pining. Now, we are looking for a solution to consolidate the conf=
lict. We want to start an open discussion about VM CPU pinning (the current=
design) and NUMA CPU pining (new
feature we are working on) in developer list:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif""><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">Background:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">Concept:<o:p></o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"margin-left:18.0pt;text-indent:-18.0=
pt;mso-list:l1 level1 lfo1">
<![if !supportLists]><span lang=3D"EN-US" style=3D"font-family:"HP Sim=
plified","sans-serif""><span style=3D"mso-list:Ignore">1.<sp=
an style=3D"font:7.0pt "Times New Roman"">  =
;
</span></span></span><![endif]><span lang=3D"EN-US" style=3D"font-family:&q=
uot;HP Simplified","sans-serif"">VM CPU pinning: the exist f=
eature in current oVirt, which allow user to configure the VM vCPU pinning =
over ovirt, user can configure vCPU pining independently
without NUMA tune.<o:p></o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"margin-left:18.0pt;text-indent:-18.0=
pt;mso-list:l1 level1 lfo1">
<![if !supportLists]><span lang=3D"EN-US" style=3D"font-family:"HP Sim=
plified","sans-serif""><span style=3D"mso-list:Ignore">2.<sp=
an style=3D"font:7.0pt "Times New Roman"">  =
;
</span></span></span><![endif]><span lang=3D"EN-US" style=3D"font-family:&q=
uot;HP Simplified","sans-serif"">NUMA CPU pinning: allow use=
r to configure the vCPU pining according to host NUMA topology to get the b=
est performance for created VM<o:p></o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"margin-left:18.0pt;text-indent:-18.0=
pt;mso-list:l1 level1 lfo1">
<![if !supportLists]><span lang=3D"EN-US" style=3D"font-family:"HP Sim=
plified","sans-serif""><span style=3D"mso-list:Ignore">3.<sp=
an style=3D"font:7.0pt "Times New Roman"">  =
;
</span></span></span><![endif]><span lang=3D"EN-US" style=3D"font-family:&q=
uot;HP Simplified","sans-serif"">vNode: Virtual NUMA node ( =
User configured )<o:p></o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"margin-left:18.0pt;text-indent:-18.0=
pt;mso-list:l1 level1 lfo1">
<![if !supportLists]><span lang=3D"EN-US" style=3D"font-family:"HP Sim=
plified","sans-serif""><span style=3D"mso-list:Ignore">4.<sp=
an style=3D"font:7.0pt "Times New Roman"">  =
;
</span></span></span><![endif]><span lang=3D"EN-US" style=3D"font-family:&q=
uot;HP Simplified","sans-serif"">pNode: host physical NUMA n=
ode ( Get capability from host )<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">Notice:<o:p></o:p></span></p>
<p class=3D"MsoPlainText" style=3D"margin-left:18.0pt;text-align:justify;te=
xt-justify:inter-ideograph;text-indent:-18.0pt;mso-list:l0 level1 lfo2">
<![if !supportLists]><span lang=3D"EN-US"><span style=3D"mso-list:Ignore">1=
.<span style=3D"font:7.0pt "Times New Roman""> &=
nbsp;
</span></span></span><![endif]><span lang=3D"EN-US">NUMA tuning feature and=
CPU pinning feature are individually in libvirt ( ovirt backend ).<o:p></o=
:p></span></p>
<p class=3D"MsoPlainText" style=3D"margin-left:18.0pt;text-indent:-18.0pt;m=
so-list:l0 level1 lfo2">
<![if !supportLists]><span lang=3D"EN-US"><span style=3D"mso-list:Ignore">2=
.<span style=3D"font:7.0pt "Times New Roman""> &=
nbsp;
</span></span></span><![endif]><span lang=3D"EN-US">User could configure VM=
CPU pining individually without NUMA tune setup.<o:p></o:p></span></p>
<p class=3D"MsoPlainText" style=3D"margin-left:18.0pt;text-align:justify;te=
xt-justify:inter-ideograph;text-indent:-18.0pt;mso-list:l0 level1 lfo2">
<![if !supportLists]><span lang=3D"EN-US"><span style=3D"mso-list:Ignore">3=
.<span style=3D"font:7.0pt "Times New Roman""> &=
nbsp;
</span></span></span><![endif]><span lang=3D"EN-US">When configuring NUMA t=
uning feature, user need to configure VM NUMA tuning ( vNode pinto pNode &a=
mp; tuning mode ) and VM CPU pinning ( NUMA included ) to get optimized VM =
performance, otherwise VM will have low
performance.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif""><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">We have two proposal now for this i=
ssue. Please give us some comments and your feedback, thanks.<o:p></o:p></s=
pan></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif""><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">Solution 1:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; GUI:
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:21.0pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">Transf=
orm between the CPU pinning text and a structure which will be used in NUMA=
CPU pinning configure page.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif""> And then save th=
e CPU pinning text to the current VM CPU pinning field of VM.
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; Restful:
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:21.0pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">Transf=
orm between the CPU pinning text and a structure which will be used in rest=
ful NUMA CPU pinning.<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:21.0pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">And th=
en save the CPU pinning text to the current VM CPU pinning field of VM.<o:p=
></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; Broker:
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:21.0pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">Remove=
temporary solution(See the current implementation as below) and follow pre=
vious cpupin configuration procedure.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif""><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">Solution 2:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; GUI:
<span style=3D"color:#FFC000"><o:p></o:p></span></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:19.4pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">If cur=
rent VM CPU pinning is configured, when user open NUMA CPU pinning configur=
e page, he will get a warning message. If he continues to configure
NUMA CPU pinning and save the data, the current VM CPU pinning  =
; configuration will be cleared.<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:19.4pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">NUMA C=
PU pinning configured data will be saved as new structure individually with=
out changing current VM CPU pinning configuration.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; Restful:
<span style=3D"color:#FFC000"><o:p></o:p></span></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:21.0pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">Config=
ure NUMA CPU pinning and then save the data with the new NUMA CPU pinning s=
tructure.
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; Entity and Database:
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:21.0pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">Indivi=
dually NUMA CPU pinning entities and data structure.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; Broker:
<span style=3D"color:#FFC000"><o:p></o:p></span></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif";color:#FFC000"> &nb=
sp;
</span><span lang=3D"EN-US" style=3D"font-family:"HP Simplified",=
"sans-serif"">NUMA CPU pinning configuration will be first consid=
ered to use. If it’s not configured, it will use the current VM CPU p=
inning.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif""><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">Solution 1 The CPU pining data is c=
onsistent but the code logic is very complex.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">Solution 2 have better adaptive and=
better data structure. This is the way we preferred.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif""><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">We are appreciated that anybody cou=
ld give us your comments or the better solution you have.<o:p></o:p></span>=
</p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif""><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif""><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif""><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">The below is the current implementa=
tion for your reference:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">VM CPU pinning feature<o:p></o:p></=
span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; GUI:
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:21.0pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">User i=
nput vCPU pining configure data with formatted text.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; Restful:
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:21.0pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">User c=
onfigure CpuTune and VCpuPin model with mapper to CPU pinning text.<o:p></o=
:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; Entity and Database:
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:21.0pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">CPU pi=
nning is String property.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; Broker:
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:21.0pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">Genera=
te structure of cputune ( libvirt format ) from CPU pining string property.=
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">NUMA tuning feature<o:p></o:p></spa=
n></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; GUI:
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:21.0pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">User c=
an drag & drop virtual NUMA node to host NUMA node ( pin to or remove p=
in to ).<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; Restful:
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:21.0pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">Add/up=
date/remove virtual NUMA node with property of pin to host NUMA node index.=
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; Design NUMACPU model under NUMA node for extend.<o:p></o:p></=
span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; Entity and Database:
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:21.0pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">Indivi=
dually NUMA node entities ( vNode extend pNode ) and store procedure.<o:p><=
/o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; Broker:
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:21.0pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">Genera=
te structure of numatune, cpu/numa ( libvirt format ) from NUMA node entiti=
es.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">Temporary solution prevent Notice 3=
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; Broker:
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:21.0pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">Genera=
te right structure of cputune ( libivirt format ) from NUMA node entities (=
vNode pinto pNode )<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif"">  =
; Limitation:
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-indent:21.0pt"><span lang=3D"EN-US" st=
yle=3D"font-family:"HP Simplified","sans-serif"">This s=
tructure of cputune will not get the best performance of vNode.<o:p></o:p><=
/span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif""><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:9.0pt;fon=
t-family:"HP Simplified","sans-serif";color:black">Best=
Regards,<br>
</span></b><span lang=3D"EN-US" style=3D"font-size:9.0pt;font-family:"=
HP Simplified","sans-serif";color:#717172">Jason Liao</span>=
<span lang=3D"EN-US" style=3D"font-family:"HP Simplified","s=
ans-serif""><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-family:"HP S=
implified","sans-serif""><o:p> </o:p></span></p>
</div>
</body>
</html>
--_000_B63C858E777679458338A30A991BB5240163BDA8G2W2441americas_--