LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* udiskd high CPU usage with 4.0 git
@ 2015-03-08 17:14 Prakash Punnoor
  2015-03-08 23:30 ` NeilBrown
  0 siblings, 1 reply; 7+ messages in thread
From: Prakash Punnoor @ 2015-03-08 17:14 UTC (permalink / raw)
  To: neilb, LKML

[-- Attachment #1: Type: text/plain, Size: 816 bytes --]

Hi,

I noticed the udisks daemon (version 2.1.4) suddenly started using high
cpu (one core at 100%) with linux 4.0 git kernel. I bisected it to:

750f199ee8b578062341e6ddfe36c59ac8ff2dcb

And reverting it from current master (at
2cf3afcd4cbe0e32b8722fc291e9255de1b4d6c6) fixes my problem indeed.

I attached dmesg and config from
2cf3afcd4cbe0e32b8722fc291e9255de1b4d6c6 with
750f199ee8b578062341e6ddfe36c59ac8ff2dcb reverted. Any more infos
needed? I am actually using a raid5 array, if that matters:

Personalities : [raid6] [raid5] [raid4]
md127 : active raid5 sdd1[1] sdb1[3] sdc1[0]
      3907023872 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3]
[UUU]

unused devices: <none>


The array uses systemd automount feature (x-systemd.automount).

Please CC me, as I am not subscribed.


Regards,

Prakash

[-- Attachment #2: config_2cf3afcd4cbe0e32b8722fc291e9255de1b4d6c6.xz --]
[-- Type: application/x-xz, Size: 15684 bytes --]

[-- Attachment #3: dmesg_2cf3afcd4cbe0e32b8722fc291e9255de1b4d6c6.xz --]
[-- Type: application/x-xz, Size: 13944 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: udiskd high CPU usage with 4.0 git
  2015-03-08 17:14 udiskd high CPU usage with 4.0 git Prakash Punnoor
@ 2015-03-08 23:30 ` NeilBrown
  2015-03-09 15:46   ` Prakash Punnoor
  2015-03-14 20:16   ` Torsten Kaiser
  0 siblings, 2 replies; 7+ messages in thread
From: NeilBrown @ 2015-03-08 23:30 UTC (permalink / raw)
  To: Prakash Punnoor; +Cc: LKML

[-- Attachment #1: Type: text/plain, Size: 1281 bytes --]

On Sun, 08 Mar 2015 18:14:39 +0100 Prakash Punnoor <prakash@punnoor.de> wrote:

> Hi,
> 
> I noticed the udisks daemon (version 2.1.4) suddenly started using high
> cpu (one core at 100%) with linux 4.0 git kernel. I bisected it to:
> 
> 750f199ee8b578062341e6ddfe36c59ac8ff2dcb
> 
> And reverting it from current master (at
> 2cf3afcd4cbe0e32b8722fc291e9255de1b4d6c6) fixes my problem indeed.
> 
> I attached dmesg and config from
> 2cf3afcd4cbe0e32b8722fc291e9255de1b4d6c6 with
> 750f199ee8b578062341e6ddfe36c59ac8ff2dcb reverted. Any more infos
> needed? I am actually using a raid5 array, if that matters:
> 
> Personalities : [raid6] [raid5] [raid4]
> md127 : active raid5 sdd1[1] sdb1[3] sdc1[0]
>       3907023872 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3]
> [UUU]
> 
> unused devices: <none>
> 
> 
> The array uses systemd automount feature (x-systemd.automount).
> 
> Please CC me, as I am not subscribed.
> 
> 
> Regards,
> 
> Prakash

Thanks for the report.
I can't reproduce this, or see what would cause it.

Can you please reproduce the problem and then run

  strace -o /tmp/udisks.trace -f -p `pidof udisksd`

for a few seconds, then interrupt and post the resulting '/tmp/udisks.trace'.

Thanks,
NeilBrown

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 811 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: udiskd high CPU usage with 4.0 git
  2015-03-08 23:30 ` NeilBrown
@ 2015-03-09 15:46   ` Prakash Punnoor
  2015-03-15 23:43     ` NeilBrown
  2015-03-14 20:16   ` Torsten Kaiser
  1 sibling, 1 reply; 7+ messages in thread
From: Prakash Punnoor @ 2015-03-09 15:46 UTC (permalink / raw)
  To: NeilBrown; +Cc: LKML

[-- Attachment #1: Type: text/plain, Size: 1342 bytes --]

On 09.03.2015 00:30, NeilBrown wrote:
> On Sun, 08 Mar 2015 18:14:39 +0100 Prakash Punnoor <prakash@punnoor.de> wrote:
> 
>> Hi,
>>
>> I noticed the udisks daemon (version 2.1.4) suddenly started using high
>> cpu (one core at 100%) with linux 4.0 git kernel. I bisected it to:
>>
>> 750f199ee8b578062341e6ddfe36c59ac8ff2dcb
>>
>> And reverting it from current master (at
>> 2cf3afcd4cbe0e32b8722fc291e9255de1b4d6c6) fixes my problem indeed.
>>
>> I attached dmesg and config from
>> 2cf3afcd4cbe0e32b8722fc291e9255de1b4d6c6 with
>> 750f199ee8b578062341e6ddfe36c59ac8ff2dcb reverted. Any more infos
>> needed? I am actually using a raid5 array, if that matters:
>>
>> Personalities : [raid6] [raid5] [raid4]
>> md127 : active raid5 sdd1[1] sdb1[3] sdc1[0]
>>       3907023872 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3]
>> [UUU]
>>
>> unused devices: <none>
>>
>>
>> The array uses systemd automount feature (x-systemd.automount).
>>
>> Please CC me, as I am not subscribed.
>>
>>
>> Regards,
>>
>> Prakash
> 
> Thanks for the report.
> I can't reproduce this, or see what would cause it.
> 
> Can you please reproduce the problem and then run
> 
>   strace -o /tmp/udisks.trace -f -p `pidof udisksd`
> 
> for a few seconds, then interrupt and post the resulting '/tmp/udisks.trace'.

Hi, attached the trace.

Regards,

Prakash



[-- Attachment #2: udisks.trace.xz --]
[-- Type: application/x-xz, Size: 7464 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: udiskd high CPU usage with 4.0 git
  2015-03-08 23:30 ` NeilBrown
  2015-03-09 15:46   ` Prakash Punnoor
@ 2015-03-14 20:16   ` Torsten Kaiser
  2015-03-15 23:44     ` NeilBrown
  1 sibling, 1 reply; 7+ messages in thread
From: Torsten Kaiser @ 2015-03-14 20:16 UTC (permalink / raw)
  To: NeilBrown; +Cc: Prakash Punnoor, LKML

On Mon, Mar 9, 2015 at 12:30 AM, NeilBrown <neilb@suse.de> wrote:
> On Sun, 08 Mar 2015 18:14:39 +0100 Prakash Punnoor <prakash@punnoor.de> wrote:
>
>> Hi,
>>
>> I noticed the udisks daemon (version 2.1.4) suddenly started using high
>> cpu (one core at 100%) with linux 4.0 git kernel. I bisected it to:
>>
>> 750f199ee8b578062341e6ddfe36c59ac8ff2dcb

I had the same problem upgrading from 4.0-rc1 to 4.0-rc3.
I have just finished bisecting and "fixing" it.

My bisect points to the same commit.

Looking at udisksd with strace sees a loop of polling and then
accessing several md related sysfs files.
The only file that udisksd monitors and was changes by that commit was
"sync_action".

If I revert this part of the commit, my system works normal again:

 static struct md_sysfs_entry md_scan_mode =
- __ATTR_PREALLOC(sync_action, S_IRUGO|S_IWUSR, action_show, action_store);
+ __ATTR(sync_action, S_IRUGO|S_IWUSR, action_show, action_store);

It seems that polling is broken for peralloc files.

The cause seems to be that kernfs_seq_show() updates ->event, while
the new sysfs_kf_read() does not.
So the polling will always trigger and udisksd goes into an inifinite
loop looking for changes that are not there.

I fixed my local system by copying the line "of->event =
atomic_read(&of->kn->attr.open->event);" from kernfs_seq_show() into
sysfs_kf_read(). (I also needed to move the definition of struct
kernfs_open_node from kernfs/file.c to kefs-internal.h)

udisksd now again behaves normal, but I'm not sending this change as a
patch, because I do not know about the locking and livetime of these
objects to evaluate, if that is really the correct fix.


Thanks,

Torsten

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: udiskd high CPU usage with 4.0 git
  2015-03-09 15:46   ` Prakash Punnoor
@ 2015-03-15 23:43     ` NeilBrown
  0 siblings, 0 replies; 7+ messages in thread
From: NeilBrown @ 2015-03-15 23:43 UTC (permalink / raw)
  To: Prakash Punnoor; +Cc: LKML

[-- Attachment #1: Type: text/plain, Size: 2125 bytes --]

On Mon, 09 Mar 2015 16:46:41 +0100 Prakash Punnoor <prakash@punnoor.de> wrote:

> On 09.03.2015 00:30, NeilBrown wrote:
> > On Sun, 08 Mar 2015 18:14:39 +0100 Prakash Punnoor <prakash@punnoor.de> wrote:
> > 
> >> Hi,
> >>
> >> I noticed the udisks daemon (version 2.1.4) suddenly started using high
> >> cpu (one core at 100%) with linux 4.0 git kernel. I bisected it to:
> >>
> >> 750f199ee8b578062341e6ddfe36c59ac8ff2dcb
> >>
> >> And reverting it from current master (at
> >> 2cf3afcd4cbe0e32b8722fc291e9255de1b4d6c6) fixes my problem indeed.
> >>
> >> I attached dmesg and config from
> >> 2cf3afcd4cbe0e32b8722fc291e9255de1b4d6c6 with
> >> 750f199ee8b578062341e6ddfe36c59ac8ff2dcb reverted. Any more infos
> >> needed? I am actually using a raid5 array, if that matters:
> >>
> >> Personalities : [raid6] [raid5] [raid4]
> >> md127 : active raid5 sdd1[1] sdb1[3] sdc1[0]
> >>       3907023872 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3]
> >> [UUU]
> >>
> >> unused devices: <none>
> >>
> >>
> >> The array uses systemd automount feature (x-systemd.automount).
> >>
> >> Please CC me, as I am not subscribed.
> >>
> >>
> >> Regards,
> >>
> >> Prakash
> > 
> > Thanks for the report.
> > I can't reproduce this, or see what would cause it.
> > 
> > Can you please reproduce the problem and then run
> > 
> >   strace -o /tmp/udisks.trace -f -p `pidof udisksd`
> > 
> > for a few seconds, then interrupt and post the resulting '/tmp/udisks.trace'.
> 
> Hi, attached the trace.
> 
>

Thanks. 
The significant part is:

329   poll([{fd=4, events=POLLIN}, {fd=8, events=0}, {fd=9, events=0}, {fd=11, events=POLLIN}, {fd=13, events=0}, {fd=12, events=0}], 6, 513377) = 2 ([{fd=4, revents=POLLIN}, {fd=12, revents=POLLERR}])

repeating frequently, so fd4 and fd12 are always ready.
I don't know about fd4, but fd12 is:

329   read(12, "idle\n", 1024)          = 5


so that is .../md/sync_action
It is simply always readable.  I thought I had checked that, but it seems not.

Anyway I have a fix which I will post shortly.

thanks again,
NeilBrown

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 811 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: udiskd high CPU usage with 4.0 git
  2015-03-14 20:16   ` Torsten Kaiser
@ 2015-03-15 23:44     ` NeilBrown
  2015-03-16  7:16       ` Torsten Kaiser
  0 siblings, 1 reply; 7+ messages in thread
From: NeilBrown @ 2015-03-15 23:44 UTC (permalink / raw)
  To: Torsten Kaiser; +Cc: Prakash Punnoor, LKML

[-- Attachment #1: Type: text/plain, Size: 2087 bytes --]

On Sat, 14 Mar 2015 21:16:51 +0100 Torsten Kaiser
<just.for.lkml@googlemail.com> wrote:

> On Mon, Mar 9, 2015 at 12:30 AM, NeilBrown <neilb@suse.de> wrote:
> > On Sun, 08 Mar 2015 18:14:39 +0100 Prakash Punnoor <prakash@punnoor.de> wrote:
> >
> >> Hi,
> >>
> >> I noticed the udisks daemon (version 2.1.4) suddenly started using high
> >> cpu (one core at 100%) with linux 4.0 git kernel. I bisected it to:
> >>
> >> 750f199ee8b578062341e6ddfe36c59ac8ff2dcb
> 
> I had the same problem upgrading from 4.0-rc1 to 4.0-rc3.
> I have just finished bisecting and "fixing" it.
> 
> My bisect points to the same commit.
> 
> Looking at udisksd with strace sees a loop of polling and then
> accessing several md related sysfs files.
> The only file that udisksd monitors and was changes by that commit was
> "sync_action".
> 
> If I revert this part of the commit, my system works normal again:
> 
>  static struct md_sysfs_entry md_scan_mode =
> - __ATTR_PREALLOC(sync_action, S_IRUGO|S_IWUSR, action_show, action_store);
> + __ATTR(sync_action, S_IRUGO|S_IWUSR, action_show, action_store);
> 
> It seems that polling is broken for peralloc files.
> 
> The cause seems to be that kernfs_seq_show() updates ->event, while
> the new sysfs_kf_read() does not.
> So the polling will always trigger and udisksd goes into an inifinite
> loop looking for changes that are not there.
> 
> I fixed my local system by copying the line "of->event =
> atomic_read(&of->kn->attr.open->event);" from kernfs_seq_show() into
> sysfs_kf_read(). (I also needed to move the definition of struct
> kernfs_open_node from kernfs/file.c to kefs-internal.h)
> 
> udisksd now again behaves normal, but I'm not sending this change as a
> patch, because I do not know about the locking and livetime of these
> objects to evaluate, if that is really the correct fix.

Thanks for the bisection and analysis!  Always easier when someone else does
the hard work :-)

There is a much simpler patch (as you probably suspected).  I'll post it in a
moment.

Thank,
NeilBrown

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 811 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: udiskd high CPU usage with 4.0 git
  2015-03-15 23:44     ` NeilBrown
@ 2015-03-16  7:16       ` Torsten Kaiser
  0 siblings, 0 replies; 7+ messages in thread
From: Torsten Kaiser @ 2015-03-16  7:16 UTC (permalink / raw)
  To: NeilBrown; +Cc: Prakash Punnoor, LKML

On Mon, Mar 16, 2015 at 12:44 AM, NeilBrown <neilb@suse.de> wrote:
> On Sat, 14 Mar 2015 21:16:51 +0100 Torsten Kaiser
> <just.for.lkml@googlemail.com> wrote:
>> udisksd now again behaves normal, but I'm not sending this change as a
>> patch, because I do not know about the locking and livetime of these
>> objects to evaluate, if that is really the correct fix.
>
> Thanks for the bisection and analysis!  Always easier when someone else does
> the hard work :-)
>
> There is a much simpler patch (as you probably suspected).  I'll post it in a
> moment.

Linux-4.0-rc4 is still broken as expected, but after applying your
patch from "[PATCH] kernfs: handle poll correctly on 'direct_read'
files" my udisksd process behaves normal again.

Thanks for the quick answer + fix!

Torsten

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-03-16  7:16 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-08 17:14 udiskd high CPU usage with 4.0 git Prakash Punnoor
2015-03-08 23:30 ` NeilBrown
2015-03-09 15:46   ` Prakash Punnoor
2015-03-15 23:43     ` NeilBrown
2015-03-14 20:16   ` Torsten Kaiser
2015-03-15 23:44     ` NeilBrown
2015-03-16  7:16       ` Torsten Kaiser

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).