Questions about ULT Schedule


段世博
 

Hello, Everyone!

Now all update/fetch requests of pools are in sched_info->si_fifo_list. If a pool request exceeds req_kick_limit, will it also block other pool requests?

thanks!


Niu, Yawei
 

Hi,

 

The design is to ensure that all IO requests from different pools are processed in FIFO order, and space pressure from one pool doesn’t interfere request processing for other pools, but the implementation of policy_fifo_process() (as you pointed out) does have a defect which makes the latter requests (in FIFO queue) are impeded by the former request for a different pool with space pressure.

 

I’ll  cook a quick fix soon, thanks a lot for spotting this!

 

Thanks

-Niu  

 

From: daos@daos.groups.io <daos@daos.groups.io> on behalf of 段世博 <duanshibo.d@...>
Date: Sunday, December 26, 2021 at 10:01 PM
To: daos@daos.groups.io <daos@daos.groups.io>
Subject: [daos] Questions about ULT Schedule

Hello, Everyone!

Now all update/fetch requests of pools are in sched_info->si_fifo_list. If a pool request exceeds req_kick_limit, will it also block other pool requests?

thanks!


Niu, Yawei
 

Hi,

 

In your example, the ULT will be tracked in the wait list from “ABT_future” on waiting, once it’s waked up, it’ll be pushed back to a runnable ULT FIFO list (per ABT pool, maintained by Argobots internally), and being executed once server scheduler picked it again.

 

Thanks

-Niu

 

From: daos@daos.groups.io <daos@daos.groups.io> on behalf of 段世博 <duanshibo.d@...>
Date: Sunday, January 2, 2022 at 9:00 PM
To: daos@daos.groups.io <daos@daos.groups.io>
Subject: Re: [daos] Questions about ULT Schedule

I have one more question A ULT is suspended during execution, where it is when it was awakened. For example, dtx_leader_exec_ops_ult hangs while waiting for ABT_future,

When the future meets the conditions, the ULT is awakened. Where is the awakened ULT stored (fifo_list or other list), and when will the ULT continue to execute?