Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Apr 2008 22:52:15 -0600
From:      Scott Long <scottl@samsco.org>
To:        Julian Elischer <julian@elischer.org>
Cc:        FreeBSD Current <current@freebsd.org>
Subject:   Re: stack hogs in kernel
Message-ID:  <48003FFF.3040403@samsco.org>
In-Reply-To: <48003E47.4090006@samsco.org>
References:  <48002444.4030505@elischer.org> <48003E47.4090006@samsco.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Scott Long wrote:
> Julian Elischer wrote:
>>
>> A few years ago I took a profile of stack hogs in the kernel.
>> I just redid the exercise...
>>
>>   http://people.freebsd.org/~julian/stack-hogs.txt
>>
>>
>> the worst offenders in MY (2 month old) kernel are:
>>
>> 0xc05667e3 kldstat [kernel]:                2100
>> 0xc07214f8 sendsig [kernel]:                1416
>> 0xc04fb426 ugenread [kernel]:                1200
>> 0xc070616b ipmi_smbios_identify [kernel]:        1136
>> 0xc050bd26 usbd_new_device [kernel]:            1128
>> 0xc0525a83 pfs_readlink [kernel]:            1092
>> 0xc04fb407 ugenwrite [kernel]:                1056
>> 0xc055ea33 prison_enforce_statfs [kernel]:        1044
>> 0xc0686e8a nfsrv_rename [kernel]:            984
>> 0xc05d0886 m_copymdata [kernel]:            956
>> 0xc06605a3 nfs4_mount [kernel]:                884
>> 0xc0561e25 kse_switchin [kernel]:            848
>> 0xc0680ac6 nfsrv_statfs [kernel]:            828
>> 0xc0439473 cam_periph_error [kernel]:            820
>> 0xc071ff36 sigreturn [kernel]:                812
>> 0xc067e876 nfsrv_fsinfo [kernel]:            804
>> 0xc05fe7b3 freebsd4_fhstatfs [kernel]:            804
>> 0xc0571272 sysctl_out_proc [kernel]:            804
>> 0xc067ebf7 nfsrv_fsinfo [kernel]:            804
>> 0xc0571006 sysctl_out_proc [kernel]:            804
>> 0xc044b743 cddone [kernel]:                800
>> 0xc06862cf nfsrv_link [kernel]:                796
> 
> I'll take a look at cddone().  I see where the problem is, but it's hard
> to fix correctly.  However, the call chain leading to and from cddone is
> pretty small and unlikely to recurse; I seriously doubt that it will
> cause problems.
> 

Forgot to say that the stat for cam_periph_error() is due to gcc 
auto-inlining camperiphscsistatuserror(), which in turn auto-inlines
camperiphscsisenseerror().  I wonder how many other functions on your
hit-list are victimized by similar bogus gcc optimizations?

Scott




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?48003FFF.3040403>