lkml.org 
[lkml]   [2004]   [May]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: RCU scaling on large systems
    On Fri, May 07, 2004 at 07:04:36PM -0500, Jack Steiner wrote:
    > On Fri, May 07, 2004 at 04:32:35PM -0700, Andrew Morton wrote:
    > > Jack Steiner <steiner@sgi.com> wrote:
    > > >
    > > > The calls to RCU are coming from here:
    > > >
    > > > [11]kdb> bt
    > > > Stack traceback for pid 3553
    > > > 0xe00002b007230000 3553 3139 1 11 R 0xe00002b0072304f0 *ls
    > > > 0xa0000001000feee0 call_rcu
    > > > 0xa0000001001a3b20 d_free+0x80
    > > > 0xa0000001001a3ec0 dput+0x340
    > > > 0xa00000010016bcd0 __fput+0x210
    > > > 0xa00000010016baa0 fput+0x40
    > > > 0xa000000100168760 filp_close+0xc0
    > > > 0xa000000100168960 sys_close+0x180
    > > > 0xa000000100011be0 ia64_ret_from_syscall
    > > >
    > > > I see this same backtrace from numerous processes.
    > >
    > > eh? Why is dput freeing the dentry? It should just be leaving it in cache.
    > >
    > > What filesystem is being used? procfs?
    >
    > Good possibility. I verified that /proc DOES cause a call to call_rcu.
    >
    > I also did an strace on "ls". I see the following. Does
    > this make sense??? Note open of /proc/meminfo...
    >
    > [root@piton tmp]# strace -o zzz ls
    > espdbd.sock jd_sockV4 ProPack-installer s.eventmond zz zzz
    >
    > [root@piton tmp]# egrep 'open|close|fork|exec' zzz
    > execve("/bin/ls", ["ls"], [/* 26 vars */]) = 0
    > open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or
    > directory)
    > open("/etc/ld.so.cache", O_RDONLY) = 3
    > close(3) = 0
    > open("/lib/libacl.so.1", O_RDONLY) = 3
    > close(3) = 0
    > open("/lib/libtermcap.so.2", O_RDONLY) = 3
    > close(3) = 0
    > open("/lib/tls/libc.so.6.1", O_RDONLY) = 3
    > close(3) = 0
    > open("/usr/src/redhat/xfs-cmds/attr/libattr/.libs/tls/libattr.so.1",
    > O_RDONLY) = -1 ENOENT (No such file or directory)
    > open("/usr/src/redhat/xfs-cmds/attr/libattr/.libs/libattr.so.1",
    > O_RDONLY) = -1 ENOENT (No such file or directory)
    > open("/lib/libattr.so.1", O_RDONLY) = 3
    > close(3) = 0
    > open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
    > close(3) = 0
    > open(".", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = 3
    > close(3) = 0
    > open("/etc/mtab", O_RDONLY) = 3
    > close(3) = 0
    > >>>> open("/proc/meminfo", O_RDONLY) = 3
    > close(3) = 0
    >
    > Full output of strace:
    > [root@piton tmp]# cat zzz
    > execve("/bin/ls", ["ls"], [/* 26 vars */]) = 0
    > uname({sys="Linux", node="piton.americas.sgi.com", ...}) = 0
    > brk(0) = 0x6000000000004000
    > open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such
    > file or directory)
    > open("/etc/ld.so.cache", O_RDONLY) = 3
    > fstat(3, {st_mode=S_IFREG|0644, st_size=82621, ...}) = 0
    > mmap(NULL, 82621, PROT_READ, MAP_PRIVATE, 3, 0) =
    > 0x2000000000040000
    > close(3) = 0
    > open("/lib/libacl.so.1", O_RDONLY) = 3
    > read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0
    > \'\0\0"..., 640) = 640
    > fstat(3, {st_mode=S_IFREG|0644, st_size=187607, ...}) = 0
    > mmap(NULL, 160576, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
    > 0x2000000000058000
    > mprotect(0x2000000000070000, 62272, PROT_NONE) = 0
    > mmap(0x2000000000078000, 32768, PROT_READ|PROT_WRITE,
    > MAP_PRIVATE|MAP_FIXED, 3, 0x10000) = 0x2000000000078000
    > close(3) = 0
    > open("/lib/libtermcap.so.2", O_RDONLY) = 3
    > read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0
    > \31\0"..., 640) = 640
    > fstat(3, {st_mode=S_IFREG|0755, st_size=26088, ...}) = 0
    > mmap(NULL, 16384, PROT_READ|PROT_WRITE,
    > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000000080000
    > mmap(NULL, 89656, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
    > 0x2000000000084000
    > mprotect(0x200000000008c000, 56888, PROT_NONE) = 0
    > mmap(0x2000000000094000, 32768, PROT_READ|PROT_WRITE,
    > MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2000000000094000
    > close(3) = 0
    > open("/lib/tls/libc.so.6.1", O_RDONLY) = 3
    > read(3,
    > "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0\320\252"...,
    > 640) = 640
    > fstat(3, {st_mode=S_IFREG|0755, st_size=9329267, ...}) = 0
    > mmap(NULL, 2519264, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
    > 0x200000000009c000
    > mmap(0x20000000002ec000, 81920, PROT_READ|PROT_WRITE,
    > MAP_PRIVATE|MAP_FIXED, 3, 0x240000) = 0x20000000002ec000
    > mmap(0x2000000000300000, 12512, PROT_READ|PROT_WRITE,
    > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2000000000300000
    > close(3) = 0
    > open("/usr/src/redhat/xfs-cmds/attr/libattr/.libs/tls/libattr.so.1",
    > O_RDONLY) = -1 ENOENT (No such file or directory)
    > stat("/usr/src/redhat/xfs-cmds/attr/libattr/.libs/tls",
    > 0x60000fffffffad00) = -1 ENOENT (No such file or directory)
    > open("/usr/src/redhat/xfs-cmds/attr/libattr/.libs/libattr.so.1",
    > O_RDONLY) = -1 ENOENT (No such file or directory)
    > stat("/usr/src/redhat/xfs-cmds/attr/libattr/.libs",
    > 0x60000fffffffad00) = -1 ENOENT (No such file or directory)
    > open("/lib/libattr.so.1", O_RDONLY) = 3
    > read(3,
    > "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0002\0\1\0\0\0\240\31"...,
    > 640) = 640
    > fstat(3, {st_mode=S_IFREG|0644, st_size=55577, ...}) = 0
    > mmap(NULL, 102360, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
    > 0x2000000000304000
    > mprotect(0x2000000000310000, 53208, PROT_NONE) = 0
    > mmap(0x2000000000314000, 49152, PROT_READ|PROT_WRITE,
    > MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2000000000314000
    > close(3) = 0
    > mmap(NULL, 16384, PROT_READ|PROT_WRITE,
    > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000000320000
    > mmap(NULL, 32768, PROT_READ|PROT_WRITE,
    > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000000324000
    > mmap(NULL, 16384, PROT_READ|PROT_WRITE,
    > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x200000000032c000
    > mmap(NULL, 16384, PROT_READ|PROT_WRITE,
    > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000000330000
    > munmap(0x2000000000040000, 82621) = 0
    > brk(0) = 0x6000000000004000
    > brk(0x6000000000028000) = 0x6000000000028000
    > brk(0) = 0x6000000000028000
    > open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
    > fstat(3, {st_mode=S_IFREG|0644, st_size=34848240, ...}) = 0
    > mmap(NULL, 34848240, PROT_READ, MAP_PRIVATE, 3, 0) =
    > 0x2000000000334000
    > close(3) = 0
    > rt_sigaction(SIGTERM, {0x400000000001e9a0, [], SA_RESTART},
    > {SIG_DFL}, 8) = 0
    > rt_sigaction(SIGKILL, {0x400000000001e9a0, [], SA_RESTART},
    > {SIG_DFL}, 8) = -1 EINVAL (Invalid argument)
    > rt_sigaction(SIGSTOP, {0x400000000001e9a0, [], SA_RESTART},
    > {SIG_DFL}, 8) = -1 EINVAL (Invalid argument)
    > ioctl(1, TCGETS or SNDCTL_TMR_TIMEBASE, {B9600 opost isig icanon
    > echo ...}) = 0
    > ioctl(1, TIOCGWINSZ, {ws_row=38, ws_col=137, ws_xpixel=0,
    > ws_ypixel=0}) = 0
    > open(".", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = 3
    > fstat(3, {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
    > fcntl(3, F_SETFD, FD_CLOEXEC) = 0
    > getdents64(0x3, 0x60000000000095d8, 0x4000) = 432
    > getdents64(0x3, 0x60000000000095d8, 0x4000) = 0
    > close(3) = 0
    > open("/etc/mtab", O_RDONLY) = 3
    > fstat(3, {st_mode=S_IFREG|0644, st_size=1533, ...}) = 0
    > mmap(NULL, 65536, PROT_READ|PROT_WRITE,
    > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000002470000
    > read(3, "/dev/xscsi/pci01.03.0-1/target1/"..., 16384) = 1533
    > close(3) = 0
    > munmap(0x2000000002470000, 65536) = 0
    > >>>> open("/proc/meminfo", O_RDONLY) = 3
    > fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
    > mmap(NULL, 65536, PROT_READ|PROT_WRITE,
    > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000002470000
    > read(3, "MemTotal: 22874016 kB\nMemFre"..., 1024) = 653
    > close(3) = 0
    > munmap(0x2000000002470000, 65536) = 0
    > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) =
    > 0
    > mmap(NULL, 65536, PROT_READ|PROT_WRITE,
    > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000000002470000
    > write(1, "espdbd.sock jd_sockV4\tProPack-i"..., 62) = 62
    > munmap(0x2000000002470000, 65536) = 0
    > exit_group(0) = ?
    >
    > --
    > Thanks
    >
    > Jack Steiner (steiner@sgi.com) 651-683-5302
    > Principal Engineer SGI - Silicon Graphics, Inc.
    >
    >

    --
    Thanks

    Jack Steiner (steiner@sgi.com) 651-683-5302
    Principal Engineer SGI - Silicon Graphics, Inc.


    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 14:03    [W:0.039 / U:1.396 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site