stack hogs in kernel

Scott Long scottl at samsco.org
Sat Apr 12 05:06:49 UTC 2008


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



More information about the freebsd-current mailing list