У меня есть программа, которая должна записывать большое количество файлов на внешний диск USB-3 с файловой системой NTFS. Кажется, с этим есть некоторая проблема: сначала он периодически зависает на несколько минут, а затем постоянно зависает.

Процесс становится бесперебойным. Смотрите скриншот: системный монитор ,

Канал ожидания "read_descriptor". Все эти процессы (пытались запустить его несколько раз) открыли файл /sys/.../usb4/descriptors.

В этом состоянии все команды, которые обращаются к USB-устройству, зависают. В том числе:

  • lsusb
  • cat /sys/kernel/debug/usb/devices
  • Сценарии сброса USB, которые вызывают /sys/..../unbind

После того, как я попытался размонтировать раздел, после использования umount --force (возможно, также других команд, точно не уверенных больше), он размонтировался и больше не появляется при вызове mount . Однако в приложении Disks оно по-прежнему отображается как "Размонтирование файловой системы".

Также на диске много плохих секторов (уже 984). Это совершенно новый диск. Кажется, что при записи в Linux из-за этого появляются плохие сектора.

Диски приложения

Есть ли способ перезапустить подсистему USB / принудительно отключить устройство, не перезагружая систему? (update-grub также блокирует, и настройка по умолчанию меню загрузчика установлена неправильно, поэтому я не могу удаленно подключиться после перезагрузки).

И что может вызвать эту проблему с USB-накопителем?

Система также, похоже, имела аналогичные проблемы с другим внешним USB-накопителем (замедление чтения до менее 1 МБ / с).

Система Ubuntu Linux, 16.04.2 LTS, Xenial на 64-битной машине

Обновление:

Утилита lspci:

00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM Controller (rev 06)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06)
00:14.0 USB controller: Intel Corporation 9 Series Chipset Family USB xHCI Controller
00:16.0 Communication controller: Intel Corporation 9 Series Chipset Family ME Interface #1
00:19.0 Ethernet controller: Intel Corporation Ethernet Connection (2) I218-V
00:1a.0 USB controller: Intel Corporation 9 Series Chipset Family USB EHCI Controller #2
00:1b.0 Audio device: Intel Corporation 9 Series Chipset Family HD Audio Controller
00:1c.0 PCI bridge: Intel Corporation 9 Series Chipset Family PCI Express Root Port 1 (rev d0)
00:1c.3 PCI bridge: Intel Corporation 82801 PCI Bridge (rev d0)
00:1d.0 USB controller: Intel Corporation 9 Series Chipset Family USB EHCI Controller #1
00:1f.0 ISA bridge: Intel Corporation 9 Series Chipset Family H97 Controller
00:1f.2 SATA controller: Intel Corporation 9 Series Chipset Family SATA Controller [AHCI Mode]
00:1f.3 SMBus: Intel Corporation 9 Series Chipset Family SMBus Controller
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GT 740] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GK107 HDMI Audio Controller (rev a1)
03:00.0 PCI bridge: ASMedia Technology Inc. ASM1083/1085 PCIe to PCI Bridge (rev 04)

lsmod:

Module                  Size  Used by
btrfs                 987136  0
xor                    24576  1 btrfs
raid6_pq              102400  1 btrfs
ufs                    73728  0
qnx4                   16384  0
hfsplus               106496  0
hfs                    57344  0
minix                  36864  0
ntfs                   98304  0
msdos                  20480  0
jfs                   180224  0
xfs                   970752  0
libcrc32c              16384  1 xfs
pci_stub               16384  1
vboxpci                24576  0
vboxnetadp             28672  0
vboxnetflt             28672  0
vboxdrv               454656  3 vboxnetadp,vboxnetflt,vboxpci
binfmt_misc            20480  1
snd_hda_codec_hdmi     53248  1
eeepc_wmi              16384  0
nvidia_uvm            745472  0
asus_wmi               28672  1 eeepc_wmi
mxm_wmi                16384  0
sparse_keymap          16384  1 asus_wmi
intel_rapl             20480  0
x86_pkg_temp_thermal    16384  0
intel_powerclamp       16384  0
coretemp               16384  0
kvm_intel             172032  0
kvm                   544768  1 kvm_intel
irqbypass              16384  1 kvm
snd_hda_codec_realtek    86016  1
crct10dif_pclmul       16384  0
snd_hda_codec_generic    77824  1 snd_hda_codec_realtek
crc32_pclmul           16384  0
ghash_clmulni_intel    16384  0
snd_hda_intel          40960  5
aesni_intel           167936  0
snd_hda_codec         135168  4 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_intel
snd_seq_midi           16384  0
aes_x86_64             20480  1 aesni_intel
snd_seq_midi_event     16384  1 snd_seq_midi
snd_hda_core           73728  5 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel
lrw                    16384  1 aesni_intel
snd_hwdep              16384  1 snd_hda_codec
gf128mul               16384  1 lrw
snd_rawmidi            32768  1 snd_seq_midi
glue_helper            16384  1 aesni_intel
snd_seq                69632  2 snd_seq_midi_event,snd_seq_midi
snd_pcm               106496  4 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel,snd_hda_core
ablk_helper            16384  1 aesni_intel
snd_seq_device         16384  3 snd_seq,snd_rawmidi,snd_seq_midi
cryptd                 20480  3 ghash_clmulni_intel,aesni_intel,ablk_helper
snd_timer              32768  2 snd_pcm,snd_seq
snd                    81920  21 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel,snd_seq_device
mei_me                 36864  0
soundcore              16384  1 snd
input_leds             16384  0
mei                    98304  1 mei_me
lpc_ich                24576  0
shpchp                 36864  0
serio_raw              16384  0
tpm_infineon           20480  0
8250_fintek            16384  0
wmi                    20480  2 mxm_wmi,asus_wmi
acpi_pad               24576  0
mac_hid                16384  0
parport_pc             32768  1
ppdev                  20480  0
lp                     20480  0
parport                49152  3 lp,ppdev,parport_pc
autofs4                40960  2
hid_generic            16384  0
usbhid                 49152  0
hid                   118784  2 hid_generic,usbhid
uas                    24576  8
usb_storage            69632  1 uas
nvidia_drm             53248  1
nvidia_modeset        778240  4 nvidia_drm
drm_kms_helper        155648  1 nvidia_drm
syscopyarea            16384  1 drm_kms_helper
sysfillrect            16384  1 drm_kms_helper
sysimgblt              16384  1 drm_kms_helper
fb_sys_fops            16384  1 drm_kms_helper
drm                   364544  4 drm_kms_helper,nvidia_drm
nvidia              11931648  63 nvidia_modeset,nvidia_uvm
ahci                   36864  3
e1000e                237568  0
libahci                32768  1 ahci
ptp                    20480  1 e1000e
pps_core               20480  1 ptp
fjes                   28672  0
video                  40960  1 asus_wmi

1 ответ1

1

Если "ожидающий канал" находится в состоянии "read_descriptor", это означает, что USB-канал начал интенсивное восстановление после довольно серьезной аппаратной проблемы, поскольку "этап дескриптора" происходит только при сбросе порта, а сброс порта происходит только в случае неисправимого Произошла ошибка транзакции.

Тот факт, что он работает под Windows, означает лишь то, что программное обеспечение ОС, вероятно, использует некоторые другие аппаратные конфигурации и параметры контроллера /PHY.

Я сильно подозреваю, что Link Power Management (LPM) виноват здесь. Дистрибутив Linux, вероятно, включает все навороты и новейшие версии, в то время как Windows может использовать так называемый "драйвер фильтра", разработанный Intel для устранения некоторых недостатков контроллера.

Состояния LPM U1 и U2 возникают на аппаратном уровне, поэтому они, вероятно, невидимы со стороны программного обеспечения. Чтобы определить, переходит ли канал назад и вперед в состояния LPM, вам понадобится суперскоростной анализатор протокола USB, Ellisys 280 или Teledyne LeCroy Advisor T3, или какой-либо другой инструмент, который обнаруживает состояния LPM на суперскоростном канале, например, это намного меньше дорогой инструмент.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .