Re: [PATCH 2/2] xfs: mark the xfs-alloc workqueue as high priority

Eric Sandeen
2015-01-13T19:08:53Z

On 1/12/15 5:37 PM, Tejun Heo wrote:
> Hello, Eric.
>
> On Mon, Jan 12, 2015 at 05:12:34PM -0600, Eric Sandeen wrote:
>> The only tasks in RU state are the one I mentioned, and swapper/X.
>>
>> crash> ps -m | grep RU
>> [0 00:00:00.159] [RU] PID: 17056 TASK: c000000111cc0000 CPU: 8 COMMAND: "kworker/u112:1"
>> [4 19:11:44.360] [RU] PID: 0 TASK: c0000000010416f0 CPU: 0 COMMAND: "swapper/0"
>> [4 19:11:44.192] [RU] PID: 0 TASK: c000000633280000 CPU: 1 COMMAND: "swapper/1"
>> [4 19:11:44.192] [RU] PID: 0 TASK: c0000006332c0000 CPU: 2 COMMAND: "swapper/2"
>> ...
>>
>> and I don't see anything interesting in those. :)
>
> Heh, I don't get it. Can you please print out worker_pool->nr_running
> of the pool that the hung work item is queued on?

crash> struct worker_pool c000000001cd7b00
struct worker_pool {
lock = {
{
rlock = {
raw_lock = {
slock = 0
}
}
}
},
cpu = 27,
node = 0,
id = 54,
flags = 0,
worklist = {
next = 0xc0000006182ceee0,
prev = 0xc000000000fe0470 <release_agent_work+8>
},
nr_workers = 15,
nr_idle = 0,
...

And that worklist is the one w/ my stuck aio-stress btree split
worker:

crash> list -H 0xc000000001cd7b18 -o work_struct.entry -s work_struct
...
c00000003ad030a0
struct work_struct {
data = {
counter = -4611686018397087739
},
entry = {
next = 0xc0000006182c5e08,
prev = 0xc0000006182c0750
},
func = 0xd000000005c58ef0 <xfs_btree_split_worker>
}
...

-Eric