[08/11] blk-throttle: remove repeat check of elapsed time from last upgrade in throtl_hierarchy_can_downgrade

Message ID 20221123060401.20392-9-shikemeng@huawei.com
State New
Headers
Series A few bugfix and cleanup patches for blk-throttle |

Commit Message

Kemeng Shi Nov. 23, 2022, 6:03 a.m. UTC
  There is no need to check elapsed time from last upgrade for each node in
hierarchy. Move this check before traversing as throtl_can_upgrade do
to remove repeat check.

Signed-off-by: Kemeng Shi <shikemeng@huawei.com>
---
 block/blk-throttle.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
  

Comments

Tejun Heo Nov. 23, 2022, 6:28 p.m. UTC | #1
On Wed, Nov 23, 2022 at 02:03:58PM +0800, Kemeng Shi wrote:
>  static bool throtl_hierarchy_can_downgrade(struct throtl_grp *tg)
>  {
> +	if (time_before(now, tg->td->low_upgrade_time + td->throtl_slice))
> +		return false;

Does this even build? Where is td defined?
  
Kemeng Shi Nov. 24, 2022, 12:58 p.m. UTC | #2
on 11/24/2022 2:28 AM, Tejun Heo wrote:
> On Wed, Nov 23, 2022 at 02:03:58PM +0800, Kemeng Shi wrote:
>>  static bool throtl_hierarchy_can_downgrade(struct throtl_grp *tg)
>>  {
>> +	if (time_before(now, tg->td->low_upgrade_time + td->throtl_slice))
>> +		return false;
> 
> Does this even build? Where is td defined?
Sorry for this mistake, CONFIG_BLK_DEV_THROTTLING_LOW seems not be set on
default. I will fix this and build with CONFIG_BLK_DEV_THROTTLING_LOW
set.
  
kernel test robot Nov. 26, 2022, 8:15 a.m. UTC | #3
Hi Kemeng,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on axboe-block/for-next]
[also build test ERROR on linus/master v6.1-rc6 next-20221125]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Kemeng-Shi/A-few-bugfix-and-cleanup-patches-for-blk-throttle/20221123-140704
base:   https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next
patch link:    https://lore.kernel.org/r/20221123060401.20392-9-shikemeng%40huawei.com
patch subject: [PATCH 08/11] blk-throttle: remove repeat check of elapsed time from last upgrade in throtl_hierarchy_can_downgrade
config: x86_64-randconfig-a005
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/f01c7d5bc75515a315dff091b1b1aa1ea1ef12fc
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Kemeng-Shi/A-few-bugfix-and-cleanup-patches-for-blk-throttle/20221123-140704
        git checkout f01c7d5bc75515a315dff091b1b1aa1ea1ef12fc
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   block/blk-throttle.c:1812:1: error: expected identifier
   }
   ^
>> block/blk-throttle.c:1945:50: error: use of undeclared identifier 'td'
           if (time_before(now, tg->td->low_upgrade_time + td->throtl_slice))
                                                           ^
>> block/blk-throttle.c:1945:18: error: use of undeclared identifier 'now'
           if (time_before(now, tg->td->low_upgrade_time + td->throtl_slice))
                           ^
>> block/blk-throttle.c:1945:18: error: use of undeclared identifier 'now'
>> block/blk-throttle.c:1945:50: error: use of undeclared identifier 'td'
           if (time_before(now, tg->td->low_upgrade_time + td->throtl_slice))
                                                           ^
   5 errors generated.


vim +/td +1945 block/blk-throttle.c

  1942	
  1943	static bool throtl_hierarchy_can_downgrade(struct throtl_grp *tg)
  1944	{
> 1945		if (time_before(now, tg->td->low_upgrade_time + td->throtl_slice))
  1946			return false;
  1947	
  1948		while (true) {
  1949			if (!throtl_tg_can_downgrade(tg))
  1950				return false;
  1951			tg = sq_to_tg(tg->service_queue.parent_sq);
  1952			if (!tg || !tg_to_blkg(tg)->parent)
  1953				break;
  1954		}
  1955		return true;
  1956	}
  1957
  

Patch

diff --git a/block/blk-throttle.c b/block/blk-throttle.c
index bd07f562c799..3eccc7af4368 100644
--- a/block/blk-throttle.c
+++ b/block/blk-throttle.c
@@ -1932,8 +1932,7 @@  static bool throtl_tg_can_downgrade(struct throtl_grp *tg)
 	 * If cgroup is below low limit, consider downgrade and throttle other
 	 * cgroups
 	 */
-	if (time_after_eq(now, td->low_upgrade_time + td->throtl_slice) &&
-	    time_after_eq(now, tg_last_low_overflow_time(tg) +
+	if (time_after_eq(now, tg_last_low_overflow_time(tg) +
 					td->throtl_slice) &&
 	    (!throtl_tg_is_idle(tg) ||
 	     !list_empty(&tg_to_blkg(tg)->blkcg->css.children)))
@@ -1943,6 +1942,9 @@  static bool throtl_tg_can_downgrade(struct throtl_grp *tg)
 
 static bool throtl_hierarchy_can_downgrade(struct throtl_grp *tg)
 {
+	if (time_before(now, tg->td->low_upgrade_time + td->throtl_slice))
+		return false;
+
 	while (true) {
 		if (!throtl_tg_can_downgrade(tg))
 			return false;