Видео смотреть бесплатно

Смотреть красивое видео

Официальный сайт bok-o-bok 24/7/365

Смотреть видео бесплатно

18.01.10 10:51 Shtsh

Есть вопрос!Медленная запись на USB-flash [решено]

Собственно, сабж. Есть два компа, на которых установлены debian sid (ядра 30 и 32), одно время стоял на одном из них арч с 30м ядром, поэтому не думаю, что в этом дело.

Проблема в том, что когда идёт запись на флешку, скорость очень низкая (сначала, когда пишет в кэш, всё хорошо, но потом она падает до ~500-700 кбайт/с и система начинает довольно сильно тормозить. Причем тормоза настолько сильные, что иногда иксы виснут намертво на несколько минут.

Что забавно, проверял на серваке с 26м ядром, там всё нормально (тоже debian).

Кстати, внятного ответа в интернетах не нашлось :( Вроде компьютеры не особо древние (оба Athlon 64 X2 с сата-винтами)

Это /var/log/dmesg

Наболело :( Хотел запостить в пятиминутке ненависти. Но, может, это просто у меня руки кривые.


Решено by evgenyl

Ты поставл маски на обработку прерываний 21,22,23 чтобы они обрабатывались только на 0ом процессоре
выше ты мне присылал
1
2
3
4
5
cat /proc/interrupts

  21:      45801    9374917   IO-APIC-fasteoi   ehci_hcd:usb2, HDA Intel
  22:          1         28   IO-APIC-fasteoi   ohci_hcd:usb4
  23:       1827     188061   IO-APIC-fasteoi   ehci_hcd:usb1, ohci_hcd:usb3



видишь, они отвечают за USB, когда копируешь, прерывания балансируются между процессорами, скорее всего блок памяти при передачи прерывания один и процессоры поочередности к нему обращаются, тем самым вызывая глобальную блокировку

На других машинах нужно посмотреть какие прерывания обслуживают USB и зафиксировать их, а не 21,22,23

в данном случае зафиксировать так
echo 1 > /proc/irq/21/smp_affinity
echo 1 > /proc/irq/22/smp_affinity
echo 1 > /proc/irq/23/smp_affinity
зафиксируй и попробуй снова по копировать


Для автоматизации наваял скрипт, который детектит прерывания, на которых висят usb и указывает, какой процессор выполняет работу с ними, скопировал его в /usr/local/bin и засунул его в загрузку системы (прописал /usr/local/bin/setusbwrite в /etc/init.d/rc.local)
1
2
3
4
5
6
#!/bin/sh

for interruption in `cat /proc/interrupts | grep usb | awk '{print $1}'| sed -e 's/\://g'` ; do  
    echo "Setting 1 in /proc/irq/${interruption}/smp_affinity";
    echo 1 > /proc/irq/${interruption}/smp_affinity;
done



ner_uto 18.01.10 12:11 # +2
но потом она падает до ~500-700 кбайт/с и система начинает довольно сильно тормозить. Причем тормоза настолько сильные, что иногда иксы виснут намертво на несколько минут.

Кстати, в ubuntu часто тоже бывала такая фигня. Не уверен, что причина та же, но факт есть факт - при копировании начинала дергаться рывками мышь и даже виснуть иксы...
digiwhite 18.01.10 14:28 # +0
известная ерунда-надо использовать другой IO планировщик, проблема обсуждалась на многих форумах.
evgenyl 18.01.10 12:37 # +3
Видел 2 причины, плохой кабель либо слишком длинный.

И вторая копируеш объем больше чем кол-во опертивки смотриш htop и там увидиш что почемуто буфер вытесняет иксы и всесь софт в своп :(

имхо у тебя 2я причина
evgenyl 18.01.10 13:35 # +0
Написал внятный ответ и получил минус :), спасибо, отбивает желание вообще комунибуть чем нибуть помогать :\
exelens 18.01.10 14:33 # +2
Не нужно обижаться, возможно просто не туда ткнули.
Это бывает.
Shtsh 18.01.10 14:01 # +0
Глюки возникают при подключении в любой usb-разъём. К тому же под виндами глюков не наблюдалось. Проблема не аппаратная
У меня 4 гига оперативки. Файлы гиг-полтора
evgenyl 18.01.10 14:11 # +0
всетаки проверь если не трудно, растет ли своп когда копируеш
еще попробуй примонтировать флэшку с опцией sync и будут ли тормоза в таком режиме ?
Shtsh 18.01.10 14:35 # +0
с опцией sync скорость сразу низкая и интерфейс тормозит.
Насчет свопа чуть попозже проверю.
Но на одном компе, где 4 гига ОЗУ, свопа нету, и памяти дофига свободной, а тормоза есть
evgenyl 18.01.10 14:46 # +0
Если с sync тормозит интерфейс своп можеш не проверять дело не в нем.

digiwhite написал про планировщик попробуй поменяй

Если не поможет, проверь, возможно стоит управление питанием, проц меняет частоту налету, это мешает работе usb, можно просто посмотреть cat /proc/cpuinfo если не максимальная значить меняется

Еще бывает так что флэшки форматированны без таблицы разделов прям сразу /dev/sda
а вообще попробуй переворматировать ее под линуксом сделать новую таблицу разделов и заного отформатировать раздел. Бывает такое тоже помогает.
У меня 2 transcend флэшки, если под виндой форматировать, под линуксом страшно глючат, почему хз :\
Shtsh 18.01.10 15:00 # +0
мои флешки монтируется через pmount руками
разделы как полагается /dev/sdb1 и т. п.
форматировал и под виндой, и чере mkfs.vfat - не помогает
На домашнем компе не стоит никаких демонов, меняющих частоту. Я так понимаю, что-то вроде cpufrecutils или fanspeed.
В том-то и дело, что, вроде, причины и нету :(
evgenyl 18.01.10 15:11 # +1
не демонов не нужно никаких, ядро само умеет без демонов, это если говернер userspace стоит тогда демон будет менять
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

еще покажи свой cat /proc/interrupts
Shtsh 18.01.10 15:28 # +0
oni ~ $ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
cat: /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor: Нет такого файла или каталога
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

oni ~ $  cat /proc/interrupts
            CPU0       CPU1      
   0:         44          0   IO-APIC-edge      timer
   1:       1990     160359   IO-APIC-edge      i8042
   4:          0          2   IO-APIC-edge    
   6:          0          4   IO-APIC-edge      floppy
   7:          1          0   IO-APIC-edge      parport0
   8:          0          0   IO-APIC-edge      rtc0
   9:          0          0   IO-APIC-fasteoi   acpi
  14:       2974     283760   IO-APIC-edge      ide0
  20:       9023    1109893   IO-APIC-fasteoi   ahci, nvidia
  21:      45801    9374917   IO-APIC-fasteoi   ehci_hcd:usb2, HDA Intel
  22:          1         28   IO-APIC-fasteoi   ohci_hcd:usb4
  23:       1827     188061   IO-APIC-fasteoi   ehci_hcd:usb1, ohci_hcd:usb3
  31:       5093     506109   PCI-MSI-edge      eth0
 NMI:          0          0   Non-maskable interrupts
 LOC:   11215761    9488630   Local timer interrupts
 SPU:          0          0   Spurious interrupts
 PMI:          0          0   Performance monitoring interrupts
 PND:          0          0   Performance pending work
 RES:   12108215   10930624   Rescheduling interrupts
 CAL:       3167      18261   Function call interrupts
 TLB:      26722      25399   TLB shootdowns
 TRM:          0          0   Thermal event interrupts
 THR:          0          0   Threshold APIC interrupts
 MCE:          0          0   Machine check exceptions
 MCP:         55         55   Machine check polls
 ERR:          1
 MIS:          0
 

evgenyl 18.01.10 15:33 # +0
Если нет файла значить не меняет частоту
Планировщик IO менял ? или незнаеш как ?
можно попробовать привязать прерывания 21,22,23 на 0й проц

нужно отлучится попозже напишу как.
Shtsh 18.01.10 15:37 # +0
все ядра, на которых проверялись - дефолтные от дистрибутивов. То есть там планировщик по-умолчанию
evgenyl 18.01.10 17:22 # +2
так прерывания зафиксировать так
echo 1 > /proc/irq/21/smp_affinity
echo 1 > /proc/irq/22/smp_affinity
echo 1 > /proc/irq/23/smp_affinity
зафиксируй и попробуй снова по копировать

по поводу планировщика
cat /sys/block/sda/queue/scheduler
будет чтото вроде
noop deadline [cfq]
это значить есть noop, deadline, а сейчас активен cfq
можно поменять для sda например
echo noop > /sys/block/sda/queue/scheduler
Shtsh 18.01.10 17:40 # +0
Вроде первое помогло. большое спасибо.
А где поподробнее можно почитать, что было сделано?
evgenyl 18.01.10 17:47 # +2
Ты поставл маски на обработку прерываний 21,22,23 чтобы они обрабатывались только на 0ом процессоре
выше ты мне присылал
cat /proc/interrupts
1
2
3
  21:      45801    9374917   IO-APIC-fasteoi   ehci_hcd:usb2, HDA Intel
  22:          1         28   IO-APIC-fasteoi   ohci_hcd:usb4
  23:       1827     188061   IO-APIC-fasteoi   ehci_hcd:usb1, ohci_hcd:usb3


видиш они отвечают за USB, когда копируеш, прерывания балансируются между процессорами, скорее всего блок памяти при передачи прерывания один и процессоры поочередности к нему обращаются, тем самым вызывая глобальную блокировку

почитать какуюнибуть книгу о ядре тут вроде ктото недавно давал ссылку на подобную
evgenyl 18.01.10 17:51 # +0
Только смотри, на других машинах нужно посмотреть какие прерывания обслуживают USB и зафиксировать их, а не 21,22,23
digiwhite 18.01.10 17:53 # +1
Вы могли бы более точно и полнее описать решение, которое вам помогло и убрать его под кат?

Так вы и для себя более четко уясните что и как и остальным будет потом проще понять, что произшло.
drujebober 18.01.10 12:56 # +0
Но, может, это просто у меня руки кривые.

нет, это у девелоперов ядра они кривые, и такое ощущение что с каждым ядром их выкручивает все больше и больше, я сам подумываю поставить какое нибудь 2.16 ядро, с ним у меня самые положительные ассоциации
Shtsh 18.01.10 14:02 # +0
Как вариант, возможно на дефолтных ядрах что-то отключено. Вопрос тогда в том, что же нужно включить при перекомпилляции
digiwhite 18.01.10 14:24 # +0
Тормоза интерфейса могут быть обусловлены испольщуемым планировщиком ввода/вывода. Но т.к. еще и скорость записи низкая....
xT 18.01.10 14:38 # +0
на любой флешке или только на какой-то одной?
Shtsh 18.01.10 14:40 # +0
пробовал штуках на пяти. На всех грустно. На некоторых чуть быстрее, на некоторых медленее. Но везде всё плохо
xT 18.01.10 14:45 # +0
они точно как усб2.0 работают в линухе? )
Shtsh 18.01.10 15:05 # +0
читает с них как полагается > 10 мбайт/с
Есть подозрение, что копать нужно в сторону чипсета
galaxyman 18.01.10 15:54 # +0
подтверждаю, испытано на десктопе и 2-ух ноутах (сейчас везде стоит Ubuntu 9.10): был acer 5315, сейчас HP2140 и на разных флешках, при записи больших файлов по 300-1400 Мб скорость сначала в несколько Мбит, потом скатывается на сотни кбит, и началось это дело еще в Ubuntu 8.10
а вот запись на USBhdd с ntfs идет с нормальной более менее стабильной скоростью...
Shtsh 18.01.10 16:04 # +0
Угу, жесткий диск внешний работает хорошо. Хотя при копировании двух фильмов по 6 гигов, к концу скорость тоже упала. Но тормозов не было. И это было написано в оффициальном факе ntfs-3g. Так что это можно считать нормальным и виной была старая версия драйвера.
gen1s 18.01.10 21:07 # +0
А мне что-то данное решение (с фиксацией прерываний) не помогло. Блин, на флешку из Linux даже трёхгигабайтный файл не передашь. Только у меня не X-ы падают, а отрубается wi-fi.
Что-то мне кажется, что на 2.6.31 такой проблемы не было. Я не помню, чтобы я мучался с записью файла.
exelens 19.01.10 09:45 # +0
Блин, на флешку из Linux даже трёхгигабайтный файл не передашь.

файловая система флешки?
evgenyl 19.01.10 10:43 # +0
вниз пробуй все что я писал
и по каждому пункту симптомы плюс немного больше информации что за машина сколько процов оперативки ?
Murz 19.01.10 09:20 # +0
У меня под Ubuntu была такая же проблема, но решилась (вроде бы) по-другому, по инфе из длинного бага http://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/197762?comments=all
Добавил в загрузку ядра параметр "elevator=noop" - после этого пока что проблемы не замечал, скорость записи на флешки стабильная.
Shtsh 19.01.10 10:16 # +2
Для автоматизации наваял скрипт, который детектит прерывания и указывает, какой процессор выполняет работу с прерываниями, на которых "висят" usb и засунул его в загрузку системы
1
2
3
4
5
6
#!/bin/sh

for interruption in `cat /proc/interrupts | grep usb | awk '{print $1}'| sed -e 's/\://g'` ; do  
    echo "Setting 1 in /proc/irq/${interruption}/smp_affinity";
    echo 1 > /proc/irq/${interruption}/smp_affinity;
done


Лучшие блоги (все 98)
Топ пользователей Топ блогов
Топ пользователей Топ блогов
Элита (все 2016 из 153 городов)
Топ пользователей Топ блогов

Новенькие: proton13, straton13, chipps, Dmitry.Minsky, zloyby
welinux.ru

Смотреть онлайн бесплатно

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн