<?xml version="1.0" encoding="ANSI_X3.4-1968" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><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><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> </td><th width="60%" align="center">Delaying, scheduling, and timer routines</th><td width="20%" align="right"> <a accesskey="n" href="API-fix-small-imbalance.html">Next</a></td></tr></table><hr /></div><div class="refentry"><a id="API-check-asym-packing"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>check_asym_packing — Check to see if the group is packed into the sched doman. </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 <strong class="fsfunc">check_asym_packing </strong>(</code></td><td>struct lb_env * <var class="pdparam">env</var>, </td></tr><tr><td> </td><td>struct sd_lb_stats * <var class="pdparam">sds</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a id="idm140404969005024"></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> The load balancing environment. </p></dd><dt><span class="term"><em class="parameter"><code>sds</code></em></span></dt><dd><p> Statistics of the sched_domain which is to be packed </p></dd></dl></div></div><div class="refsect1"><a id="idm140404968999984"></a><h2>Description</h2><p> </p><p> This is primarily intended to used at the sibling level. Some cores like POWER7 prefer to use lower numbered SMT threads. In the case of POWER7, it can move to lower SMT modes only when higher threads are idle. When in lower SMT modes, the threads will perform better since they share less core resources. Hence when we have idle threads, we want them to be the higher ones. </p><p> This packing function is run on idle threads. It checks to see if the busiest CPU in this domain (core in the P7 case) has a higher CPU number than the packing function is being run on. Here we are assuming lower CPU number will be equivalent to lower a SMT thread number. </p></div><div class="refsect1"><a id="idm140404968997600"></a><h2>Return</h2><p> 1 when packing is required and a task should be moved to this CPU. The amount of the imbalance is returned in *imbalance. </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> </td><td width="20%" align="center"><a accesskey="u" href="ch01s03.html">Up</a></td><td width="40%" align="right"> <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> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> <span class="phrase">fix_small_imbalance</span></td></tr></table></div></body></html>