On 10 November, 2006 - Sanjeev Bagewadi sent me these 3,5K bytes: > Comments in line... > > Neil Perrin wrote: > > >>>>1. DNLC-through-ZFS doesn't seem to listen to ncsize. > >>>> > >>>>The filesystem currently has ~550k inodes and large portions of it is > >>>>frequently looked over with rsync (over nfs). mdb said ncsize was > >>>>about > >>>>68k and vmstat -s said we had a hitrate of ~30%, so I set ncsize to > >>>>600k and rebooted.. Didn't seem to change much, still seeing > >>>>hitrates at > >>>>about the same and manual find(1) doesn't seem to be that cached > >>>>(according to vmstat and dnlcsnoop.d). > >>>>When booting, the following message came up, not sure if it matters > >>>>or not: > >>>>NOTICE: setting nrnode to max value of 351642 > >>>>NOTICE: setting nrnode to max value of 235577 > >>>> > >>>>Is there a separate ZFS-DNLC knob to adjust for this? Wild guess is > >>>>that > >>>>it has its own implementation which is integrated with the rest of the > >>>>ZFS cache which throws out metadata cache in favour of data cache.. or > >>>>something.. > >>> > >>Current memory usage (for some values of usage ;): > >># echo ::memstat|mdb -k > >>Page Summary Pages MB %Tot > >>------------ ---------------- ---------------- ---- > >>Kernel 95584 746 75% > >>Anon 20868 163 16% > >>Exec and libs 1703 13 1% > >>Page cache 1007 7 1% > >>Free (cachelist) 97 0 0% > >>Free (freelist) 7745 60 6% > >> > >>Total 127004 992 > >>Physical 125192 978 > >> > >> > >>/Tomas > >> > >> > >This memory usage shows nearly all of memory consumed by the kernel > >and probably by ZFS. ZFS can't add any more DNLC entries due to lack of > >memory without purging others. This can be seen from the number of > >dnlc_nentries being way less than ncsize. > >I don't know if there's a DMU or ARC bug to reduce the memory footprint > >of their internal structures for situations like this, but we are > >aware of the > >issue. > > Can you please check the zio buffers and the arc status ? > > Here is how you can do it : > - Start mdb : ie. mdb -k > > > ::kmem_cache > > - In the output generated above check the amount consumed by the > zio_buf_*, arc_buf_t and > arc_buf_hdr_t.
ADDR NAME FLAG CFLAG BUFSIZE BUFTOTL 0000030002640a08 zio_buf_512 0000 020000 512 102675 0000030002640c88 zio_buf_1024 0200 020000 1024 48 0000030002640f08 zio_buf_1536 0200 020000 1536 70 0000030002641188 zio_buf_2048 0200 020000 2048 16 0000030002641408 zio_buf_2560 0200 020000 2560 9 0000030002641688 zio_buf_3072 0200 020000 3072 16 0000030002641908 zio_buf_3584 0200 020000 3584 18 0000030002641b88 zio_buf_4096 0200 020000 4096 12 0000030002668008 zio_buf_5120 0200 020000 5120 32 0000030002668288 zio_buf_6144 0200 020000 6144 8 0000030002668508 zio_buf_7168 0200 020000 7168 1032 0000030002668788 zio_buf_8192 0200 020000 8192 8 0000030002668a08 zio_buf_10240 0200 020000 10240 8 0000030002668c88 zio_buf_12288 0200 020000 12288 4 0000030002668f08 zio_buf_14336 0200 020000 14336 468 0000030002669188 zio_buf_16384 0200 020000 16384 3326 0000030002669408 zio_buf_20480 0200 020000 20480 16 0000030002669688 zio_buf_24576 0200 020000 24576 3 0000030002669908 zio_buf_28672 0200 020000 28672 12 0000030002669b88 zio_buf_32768 0200 020000 32768 1935 000003000266c008 zio_buf_40960 0200 020000 40960 13 000003000266c288 zio_buf_49152 0200 020000 49152 9 000003000266c508 zio_buf_57344 0200 020000 57344 7 000003000266c788 zio_buf_65536 0200 020000 65536 3272 000003000266ca08 zio_buf_73728 0200 020000 73728 10 000003000266cc88 zio_buf_81920 0200 020000 81920 7 000003000266cf08 zio_buf_90112 0200 020000 90112 5 000003000266d188 zio_buf_98304 0200 020000 98304 7 000003000266d408 zio_buf_106496 0200 020000 106496 12 000003000266d688 zio_buf_114688 0200 020000 114688 6 000003000266d908 zio_buf_122880 0200 020000 122880 5 000003000266db88 zio_buf_131072 0200 020000 131072 92 0000030002670508 arc_buf_hdr_t 0000 000000 128 11970 0000030002670788 arc_buf_t 0000 000000 40 7308 > - Dump the values of arc > > > arc::print struct arc > arc::print struct arc { anon = ARC_anon mru = ARC_mru mru_ghost = ARC_mru_ghost mfu = ARC_mfu mfu_ghost = ARC_mfu_ghost size = 0x6f7a400 p = 0x5d9bd5a c = 0x5f6375a c_min = 0x4000000 c_max = 0x2e82a000 hits = 0x40e0a15 misses = 0x1cec4a4 deleted = 0x1b0ba0d skipped = 0x24ea64e13 hash_elements = 0x179d hash_elements_max = 0x60bb hash_collisions = 0x8dca3a hash_chains = 0x391 hash_chain_max = 0x8 no_grow = 0x1 } So, about 100MB and a memory crunch.. > size = 0x3e20000 <-- tells you the current memory > consumed by ARC buffer (including the > the memory consumed > for the data cached ie. zio_buff_* > no_grow = 0 <-- This would be set to 1 if we have a > memory crunch > And as Niel pointed out we would probably need some way of limiting the > ARC consumption. /Tomas -- Tomas Ögren, [EMAIL PROTECTED], http://www.acc.umu.se/~stric/ |- Student at Computing Science, University of Umeå `- Sysadmin at {cs,acc}.umu.se _______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss