<div dir="ltr"><div><div><div><div><div><div><div>Hello,<br><br></div>I'm trying to understand this behavior, which I see on servers connected to an external disk enclosure. (I cannot reproduce it on a simple 1 disk VM)<br>
<br># kstat -c taskq | grep metaslab_group_tasksq| wc -l<br>1112<br><br># zpool import >/dev/null<br><br># kstat -c taskq | grep metaslab_group_tasksq| wc -l<br>1160<br><br><br>we are accumulating 'metaslab_group_taskqs'<br>
<br>module: unix instance: 513 <br>name: metaslab_group_tasksq class: taskq<br> crtime 842173.739164514<br> executed 0<br>
maxtasks 0<br> nactive 0<br> nalloc 0<br> pid 0<br> priority 60<br>
snaptime 842774.7092530ok 06<br> tasks 0<br> threads 3<br> totaltime 0<br><br></div><div><br></div>
The "zpool import" command itself runs fine. I get the same behavior whether there are pools to import or not.<br><br></div>but kernel threads are piling up, for each CV there are 3 threads :<br>> ffffff05844fe080::wchaninfo -v<br>
ADDR TYPE NWAITERS THREAD PROC<br>ffffff05844fe080 cond 3: ffffff0021c58c40 sched<br> ffffff0021c5ec40 sched<br> ffffff0021c64c40 sched<br>
<br></div>and they're all blocking, with a similar stack :<br>> ffffff0021c58c40::findstack -v<br>stack pointer for thread ffffff0021c58c40: ffffff0021c58a80<br>[ ffffff0021c58a80 _resume_from_idle+0xf4() ]<br> ffffff0021c58ab0 swtch+0x141()<br>
ffffff0021c58af0 cv_wait+0x70(ffffff05844fe080, ffffff05844fe070)<br> ffffff0021c58b60 taskq_thread_wait+0xbe(ffffff05844fe050, ffffff05844fe070, ffffff05844fe080, ffffff0021c58bc0, ffffffffffffffff)<br> ffffff0021c58c20 taskq_thread+0x37c(ffffff05844fe050)<br>
ffffff0021c58c30 thread_start+8()<br><br><br></div><div>the taskq seems to be created by a call to metaslab_group_create(), here :<br> zfs`vdev_alloc+0x54a<br> zfs`spa_config_parse+0x48<br> zfs`spa_config_parse+0xda<br>
zfs`spa_config_valid+0x78<br> zfs`spa_load_impl+0xa81<br> zfs`spa_load+0x14e<br> zfs`spa_tryimport+0xaa<br> zfs`zfs_ioc_pool_tryimport+0x51<br> zfs`zfsdev_ioctl+0x4a7<br>
genunix`cdev_ioctl+0x39<br> specfs`spec_ioctl+0x60<br> genunix`fop_ioctl+0x55<br> genunix`ioctl+0x9b<br> unix`sys_syscall32+0xff<br><br></div><div><br></div>
I'm out of my depth here, any pointer to investigate further would be much appreciated !<br><br></div>cheers,<br></div>alex<br></div>