GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué se tarda tanto en detectar una memoria USB?

Resulta que hay un tiempo de espera de 1 segundo int drivers/usb/storage/usb.c. Habilité más registros de depuración escribiendo los siguientes dos comandos:

echo 8 > /proc/sys/kernel/printk
echo "module usb_storage +p" > /sys/kernel/debug/dynamic_debug/control
echo 0xFFFFFF > /proc/sys/dev/scsi/logging_level

El subsistema scsi tiene una forma extraña (en comparación con el resto de las facilidades de registro de Linux) de especificar los niveles de registro; son bits desplazados un paso para cada nivel, consulte drivers/scsi/scsi_logging.h

Ver la línea starting scan abajo. El kernel espera 1 segundo antes de realizar el escaneo.

[21960.837879 <   23.040778>] usb 2-1.2: USB disconnect, device number 18
[21960.838263 <    0.000384>] sd 20:0:0:0: [sg2] sg_remove_device
[21960.838888 <    0.000625>] sd 20:0:0:0: [sg2] sg_device_destroy
[21966.157918 <    5.319030>] usb 2-1.2: new high-speed USB device number 19 using ehci-pci
[21966.251625 <    0.093707>] usb 2-1.2: New USB device found, idVendor=0781, idProduct=5530
[21966.251634 <    0.000009>] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[21966.251638 <    0.000004>] usb 2-1.2: Product: Firebird USB Flash Drive
[21966.251641 <    0.000003>] usb 2-1.2: Manufacturer: SanDisk
[21966.251644 <    0.000003>] usb 2-1.2: SerialNumber: 4C532000001215110130
[21966.252184 <    0.000540>] usb-storage 2-1.2:1.0: USB Mass Storage device detected
[21966.252307 <    0.000123>] scsi host21: usb-storage 2-1.2:1.0
[21966.252439 <    0.000132>] usb-storage 2-1.2:1.0: waiting for device to settle before scanning
[21967.250018 <    0.997579>] usb-storage 2-1.2:1.0: starting scan
[21967.250242 <    0.000224>] usb-storage 2-1.2:1.0: scan complete
[21967.250295 <    0.000053>] scsi host21: scsi_scan_host_selected: <4294967295:4294967295:18446744073709551615>
[21967.250354 <    0.000059>] scsi 21:0:0:0: scsi scan: INQUIRY pass 1 length 36
[21967.251717 <    0.001363>] scsi 21:0:0:0: scsi scan: INQUIRY successful with code 0x0
[21967.251738 <    0.000021>] scsi 21:0:0:0: Direct-Access     SanDisk  Cruzer           1.26 PQ: 0 ANSI: 5
[21967.251745 <    0.000007>] scsi target21:0:0: scsi scan: Sequential scan
[21967.251776 <    0.000031>] scsi 21:0:0:1: scsi scan: INQUIRY pass 1 length 36
[21967.251907 <    0.000131>] scsi 21:0:0:1: scsi scan: INQUIRY failed with code 0x40000
[21967.252282 <    0.000375>] sd 21:0:0:0: sg_alloc: dev=2 
[21967.252366 <    0.000084>] sd 21:0:0:0: Attached scsi generic sg2 type 0
[21967.253703 <    0.001337>] sd 21:0:0:0: [sdb] 7821312 512-byte logical blocks: (4.00 GB/3.72 GiB)
[21967.255324 <    0.001621>] sd 21:0:0:0: [sdb] Write Protect is off
[21967.255334 <    0.000010>] sd 21:0:0:0: [sdb] Mode Sense: 43 00 00 00
[21967.258145 <    0.002811>] sd 21:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[21967.272208 <    0.014063>]  sdb: sdb1
[21967.276433 <    0.004225>] sd 21:0:0:0: [sdb] Attached SCSI removable disk

Linus Torvalds cambió el retraso predeterminado de 5 a 1 segundo en el retraso de establecimiento del almacenamiento USB inferior a algo más razonable. No proporciona ningún contexto sobre las razones técnicas por las que el retraso se estableció tan alto, pero insinúa que puede haber enmascarado algunos errores del kernel.


Puede cambiar el tiempo de espera escribiendo a /sys/module/usb_storage/parameters/delay_use .

Para discos USB más antiguos, es posible que se necesite un retraso de asentamiento de 5 segundos o incluso más (y 5 era el valor predeterminado hasta que se redujo a 1 segundo en 2010), presumiblemente porque el controlador no tiene energía mientras los motores del disco se están inicializando. O posiblemente porque el firmware SCSI interno tarda en iniciarse antes de que responda (¿se da cuenta de que solo estoy especulando aquí?).

Para el almacenamiento de estado sólido moderno, probablemente no sea necesario en absoluto, y muchas personas lo configuran en 0. Desafortunadamente, es un parámetro global que se aplica a todos los dispositivos, por lo que si tiene algún dispositivo lento, debe soportar la demora. para cada dispositivo USB de almacenamiento masivo que utilice. Sería bueno si udev pudiera configurarlo por dispositivo, pero ese no es el caso.


Linux
  1. ¿Por qué [a-z] coincide con letras minúsculas en Bash?

  2. ¿Por qué Sudo ignora los alias?

  3. ¿Por qué `find . -type F` ¿Toma más tiempo que `find .`?

  4. Linux:¿por qué no funciona Setuid?

  5. Linux:¿por qué se tarda tanto en detectar una memoria USB?

¿Cuánto tarda en arrancar su sistema Linux?

Averigüe cuánto tiempo se tarda en iniciar su sistema Linux

¿Cuánto tarda en arrancar su sistema Linux? Una útil guía ilustrada

¿Por qué la opción Ssh -t agrega Cr y Lf en la salida redirigida?

¿Por qué `exit &` no funciona?

¿Por qué 'dd' no funciona para crear un USB de arranque?