Re: init's children list is long and slows reaping children.

Jeff Garzik
2007-04-10T07:09:20Z

Torsten Kaiser wrote:
> One thread per port, not per device.
>
> 796 ? S 0:00 \_ [scsi_eh_0]
> 797 ? S 0:00 \_ [scsi_eh_1]
> 798 ? S 0:00 \_ [scsi_eh_2]
> 819 ? S 0:00 \_ [scsi_eh_3]
> 820 ? S 0:00 \_ [scsi_eh_4]
> 824 ? S 0:00 \_ [scsi_eh_5]
> 825 ? S 0:14 \_ [scsi_eh_6]
>
> bardioc ~ # lsscsi -d
> [0:0:0:0] disk ATA ST3160827AS 3.42 /dev/sda[8:0]
> [1:0:0:0] disk ATA ST3160827AS 3.42 /dev/sdb[8:16]
> [5:0:0:0] disk ATA IBM-DHEA-36480 HE8O /dev/sdc[8:32]
> [5:0:1:0] disk ATA Maxtor 6L160P0 BAH4 /dev/sdd[8:48]
> [6:0:0:0] cd/dvd HL-DT-ST DVDRAM GSA-4081B A100 /dev/sr0[11:0]
> bardioc ~ # lsscsi -H
> [0] sata_promise
> [1] sata_promise
> [2] sata_promise
> [3] sata_via
> [4] sata_via
> [5] pata_via
> [6] pata_via
>
> The bad is, that there is always a thread, even if the hardware is not
> even hotplug capable.
> Don't know if the thread is even needed for hotplug...

Nope, it's not. At least for SATA (your chosen examples), hotplug is
handled by a libata-specific thread.

The SCSI EH threads are there purely for SCSI exception handling. For
the majority of SAS and SATA, we replace the entire SCSI EH handling
code with our own, making those threads less useful than on older (read:
majority) of SCSI drivers.

Jeff