1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>check_asym_packing</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Linux Device Drivers"><link rel="up" href="ch01s03.html" title="Delaying, scheduling, and timer routines"><link rel="prev" href="API-update-sd-lb-stats.html" title="update_sd_lb_stats"><link rel="next" href="API-fix-small-imbalance.html" title="fix_small_imbalance"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="phrase">check_asym_packing</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-update-sd-lb-stats.html">Prev</a>&#160;</td><th width="60%" align="center">Delaying, scheduling, and timer routines</th><td width="20%" align="right">&#160;<a accesskey="n" href="API-fix-small-imbalance.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="API-check-asym-packing"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>check_asym_packing &#8212; 
2     Check to see if the group is packed into the sched doman.
3 </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">check_asym_packing </b>(</code></td><td>struct lb_env * <var class="pdparam">env</var>, </td></tr><tr><td>&#160;</td><td>struct sd_lb_stats * <var class="pdparam">sds</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer">&#160;</div></div></div><div class="refsect1"><a name="idp1106874092"></a><h2>Arguments</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="parameter"><code>env</code></em></span></dt><dd><p>
4     The load balancing environment.
5    </p></dd><dt><span class="term"><em class="parameter"><code>sds</code></em></span></dt><dd><p>
6     Statistics of the sched_domain which is to be packed
7    </p></dd></dl></div></div><div class="refsect1"><a name="idp1106876692"></a><h2>Description</h2><p>
8   </p><p>
9
10   This is primarily intended to used at the sibling level.  Some
11   cores like POWER7 prefer to use lower numbered SMT threads.  In the
12   case of POWER7, it can move to lower SMT modes only when higher
13   threads are idle.  When in lower SMT modes, the threads will
14   perform better since they share less core resources.  Hence when we
15   have idle threads, we want them to be the higher ones.
16   </p><p>
17
18   This packing function is run on idle threads.  It checks to see if
19   the busiest CPU in this domain (core in the P7 case) has a higher
20   CPU number than the packing function is being run on.  Here we are
21   assuming lower CPU number will be equivalent to lower a SMT thread
22   number.
23</p></div><div class="refsect1"><a name="idp1106878236"></a><h2>Return</h2><p>
24   1 when packing is required and a task should be moved to
25   this CPU.  The amount of the imbalance is returned in *imbalance.
26</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-update-sd-lb-stats.html">Prev</a>&#160;</td><td width="20%" align="center"><a accesskey="u" href="ch01s03.html">Up</a></td><td width="40%" align="right">&#160;<a accesskey="n" href="API-fix-small-imbalance.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">update_sd_lb_stats</span>&#160;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&#160;<span class="phrase">fix_small_imbalance</span></td></tr></table></div></body></html>
27