comment below... On Jan 11, 2010, at 10:00 AM, Lutz Schumann wrote:
> Ok, tested this myself ... > > (same hardware used for both tests) > > OpenSolaris svn_104 (actually Nexenta Core 2): > > 100 Snaps > ------------ > r...@nexenta:/volumes# time for i in $(seq 1 100); do zfs snapshot > ssd/v...@test1_$i; done > > > real 0m24.991s > user 0m0.297s > sys 0m0.679s > > Import: > r...@nexenta:/volumes# time zpool import ssd > > real 0m25.053s > user 0m0.031s > sys 0m0.216s > > 2) 500 snaps (400 Created, 500 imported) > ------------------------------------------------- > > r...@nexenta:/volumes# time for i in $(seq 101 500); do zfs snapshot > ssd/v...@test1_$i; done > > real 3m6.257s > user 0m1.190s > sys 0m2.896s > > r...@nexenta:/volumes# time zpool import ssd > > real 3m59.206s > user 0m0.091s > sys 0m0.956s > > 3) 1500 Snaps (1000 created, 1500 imported) > ----------------------------------------------------- > > r...@nexenta:/volumes# time for i in $(seq 501 1500); do zfs snapshot > ssd/v...@test1_$i; done > > real 22m23.206s > user 0m3.041s > sys 0m8.785s > > r...@nexenta:/volumes# time zpool import ssd > > real 36m26.765s > user 0m0.233s > sys 0m4.545s > > .... you see where this goes - its expotential !! > > Now with svn_130 (same pool, still 1500 snaps on it) > > .. not we are booting OpenSolaris svn_130. > Sun Microsystems Inc. SunOS 5.11 snv_130 November 2008 > > r...@osol_dev130:~# zpool import > pool: ssd > id: 16128137881522033167 > state: ONLINE > status: The pool is formatted using an older on-disk version. > action: The pool can be imported using its name or numeric identifier, though > some features will not be available without an explicit 'zpool > upgrade'. > config: > > ssd ONLINE > c9d1 ONLINE > > r...@osol_dev130:~# time zpool import ssd > > real 0m0.756s > user 0m0.014s > sys 0m0.056s > > r...@osol_dev130:~# zfs list -t snapshot | wc -l > 1502 > > r...@osol_dev130:~# time zpool export ssd > > real 0m0.425s > user 0m0.003s > sys 0m0.029s > > I like this one :) > > ... just for fun ... (5K Snaps) > > r...@osol_dev130:~# time for i in $(seq 1501 5000); do zfs snapshot > ssd/v...@test1_$i; done > > real 1m18.977s > user 0m9.889s > sys 0m19.969s > > r...@osol_dev130:~# zpool export ssd > r...@osol_dev130:~# time zpool import ssd > > real 0m0.421s > user 0m0.014s > sys 0m0.055s > > ... just for fun ... (10K Snaps) > > r...@osol_dev130:~# time for i in $(seq 5001 10000); do zfs snapshot > ssd/v...@test1_$i; done > > real 2m6.242s > user 0m14.107s > sys 0m28.573s > > r...@osol_dev130:~# time zpool import ssd > > real 0m0.405s > user 0m0.014s > sys 0m0.057s > > Very nice, so volume import is solved. cool > > .. however ... a lot of snaps still have a impact on system performance. > After the import of the 10000 snaps volume, I saw "devfsadm" eating up all > CPU: If you are snapshotting ZFS volumes, then each will create an entry in the device tree. In other words, if these were file systems instead of volumes, you would not see devfsadm so busy. > > load averages: 5.00, 3.32, 1.58; up 0+00:18:12 > 18:50:05 > 99 processes: 95 sleeping, 2 running, 2 on cpu > CPU states: 0.0% idle, 4.6% user, 95.4% kernel, 0.0% iowait, 0.0% swap > Kernel: 409 ctxsw, 14 trap, 47665 intr, 1223 syscall > Memory: 8190M phys mem, 5285M free mem, 4087M total swap, 4087M free swap > > PID USERNAME NLWP PRI NICE SIZE RES STATE TIME CPU COMMAND > 167 root 6 22 0 25M 13M run 3:14 49.41% devfsadm > > ... a truss showed that it is the device node allocation eating up the CPU: > > /5: 0.0010 xstat(2, "/devices/pseudo/z...@0:8941,raw", 0xFE32FCE0) = 0 > /5: 0.0005 fcntl(7, F_SETLK, 0xFE32FED0) = 0 > /5: 0.0000 close(7) = 0 > /5: 0.0001 lwp_unpark(3) = 0 > /3: 0.0200 lwp_park(0xFE61EF58, 0) = 0 > /3: 0.0000 time() = 1263232337 > /5: 0.0001 open("/etc/dev/.devfsadm_dev.lock", O_RDWR|O_CREAT, 0644) = 7 > /5: 0.0001 fcntl(7, F_SETLK, 0xFE32FEF0) = 0 > /5: 0.0000 read(7, "A7\0\0\0", 4) = 4 > /5: 0.0001 getpid() = 167 [1] > /5: 0.0000 getpid() = 167 [1] > /5: 0.0001 open("/devices/pseudo/devi...@0:devinfo", O_RDONLY) = 10 > /5: 0.0000 ioctl(10, DINFOIDENT, 0x00000000) = 57311 > /5: 0.0138 ioctl(10, 0xDF06, 0xFE32FA60) = 2258109 > /5: 0.0027 ioctl(10, DINFOUSRLD, 0x086CD000) = 2260992 > /5: 0.0001 close(10) = 0 > /5: 0.0015 modctl(MODGETNAME, 0xFE32F060, 0x00000401, 0xFE32F05C, > 0xFD1E0008) = 0 > /5: 0.0010 xstat(2, "/devices/pseudo/z...@0:8941", 0xFE32FCE0) = 0 > /5: 0.0005 fcntl(7, F_SETLK, 0xFE32FED0) = 0 > /5: 0.0000 close(7) = 0 > /5: 0.0001 lwp_unpark(3) = 0 > /3: 0.0201 lwp_park(0xFE61EF58, 0) = 0 > /3: 0.0001 time() = 1263232337 > /5: 0.0001 open("/etc/dev/.devfsadm_dev.lock", O_RDWR|O_CREAT, 0644) = 7 > /5: 0.0001 fcntl(7, F_SETLK, 0xFE32FEF0) = 0 > /5: 0.0000 read(7, "A7\0\0\0", 4) = 4 > /5: 0.0001 getpid() = 167 [1] > /5: 0.0000 getpid() = 167 [1] > /5: 0.0001 open("/devices/pseudo/devi...@0:devinfo", O_RDONLY) = 10 > /5: 0.0000 ioctl(10, DINFOIDENT, 0x00000000) = 57311 > /5: 0.0138 ioctl(10, 0xDF06, 0xFE32FA60) = 2258109 > /5: 0.0027 ioctl(10, DINFOUSRLD, 0x086CD000) = 2260992 > /5: 0.0001 close(10) = 0 > /5: 0.0015 modctl(MODGETNAME, 0xFE32F060, 0x00000401, 0xFE32F05C, > 0xFD1E0008) = 0 > > After 5 minutes all devices were created. > > .. another strange issue: > r...@osol_dev130:/dev/zvol/dsk/ssd# ls -al > > load averages: 1.16, 2.17, 1.50; up 0+00:22:07 > 18:54:00 > 99 processes: 97 sleeping, 2 on cpu > CPU states: 49.1% idle, 0.1% user, 50.8% kernel, 0.0% iowait, 0.0% swap > Kernel: 257 ctxsw, 1 trap, 607 intr, 282 syscall > Memory: 8190M phys mem, 5280M free mem, 4087M total swap, 4087M free swap > > PID USERNAME NLWP PRI NICE SIZE RES STATE TIME CPU COMMAND > 860 rah 2 59 0 41M 14M sleep 0:01 0.05% gnome-netstatus > 866 root 1 59 0 1656K 1080K sleep 0:00 0.02% gnome-netstatus > > .. it seems to be a issue related to /dev ... I don't see the issue, could you elaborate? > .. so having a 10000 snaps of a single zvol is not nice :) AIUI, devfsadm creates a database. Could you try the last experiment again, since the database should now be updated. CR6903071 seems to offer some insight in the comments related to the device tree and COMSTART, though it is closed as a dupe (perhaps unfortunate?) http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6903071 There may be some improvement in devfsadm that would help. -- richard _______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss