<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:windowtext;}
span.EmailStyle18
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:#1F497D;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">The password is intel1234<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Problem statement:<o:p></o:p></p>
<p class="MsoNormal">The current OFA driver assumes a one to one mapping of MSI vectors, queues and CPU cores. If there is not a one to one mapping then the driver does not go through learning mode and we see a performance drop. Learning mode is how we maintain
our source core interrupt steering, where we map MSI vectors to CPU cores. This mapping allows the driver to issue and complete commands on the same CPU core.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Proposed changes:<o:p></o:p></p>
<p class="MsoNormal">Instead of giving up on learn mapping if there are differences between MSI vectors and CPU cores, we will proceed as normal with learning mode. We allocate the Core table for the max number of cores, and if at the end of learning mode,
any CPU cores have not been mapped, we will map them to Submission queues in a round robin fashion. We also take into account if the MSI vectors are not mapped contiguously, or if the number of submission and completion queues are different from each other
and the number of cores. These changes still won’t have 100% functionality of the source core interrupt steering, but performance is better than if we don’t try at all. Most of the changes are in the initialization path, there was no change to the IO path.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Also in this patch is the removal of the #defines for the CHATHAM prototype hardware.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Unit Tests:<o:p></o:p></p>
<p class="MsoNormal">Tested the following on Windows 7 and Windows 8 based systems.<o:p></o:p></p>
<p class="MsoNormal">Booted from a system with more CPU cores than MSI vectors.<o:p></o:p></p>
<p class="MsoNormal">IO stress on a setup with fewer IO queues than CPU cores and MSI vectors<o:p></o:p></p>
<p class="MsoNormal">Ran SCSI compliance tests<o:p></o:p></p>
<p class="MsoNormal">Ran SDStress<o:p></o:p></p>
<p class="MsoNormal">Ran IOmeter<o:p></o:p></p>
<p class="MsoNormal">Hibernate<o:p></o:p></p>
<p class="MsoNormal">Format (quick and slow) of MBR and GPT<o:p></o:p></p>
<p class="MsoNormal">Install/Uninstall, Enable/Disable<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks!<o:p></o:p></p>
<p class="MsoNormal">Carolyn<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>