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?
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?
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?