* [gentoo-user-ru] отключение флешки без umount
@ 2012-05-27 16:33 Alex Efros
2012-05-27 20:19 ` [gentoo-user-ru] " Aleksandr Dezhin
` (3 more replies)
0 siblings, 4 replies; 16+ messages in thread
From: Alex Efros @ 2012-05-27 16:33 UTC (permalink / raw
To: gentoo-user-ru
Hi!
Возникла идея сделать авто-подключение и отключение флешки через udev.
Но чтобы её можно было безопасно выдёргивать без ручного отмонтирования,
её нужно монтировать с опцией sync. Я сейчас это немного потестировал,
и получается, что скорость копирования на флешку подключенную с sync
чуть ли не в 70 раз медленнее - т.е. тормозит до состояния неюзабельности.
Это не баг, так всё и должно быть? Если да, то делать автомонтирование
флешки при том, что отмонтировать всё-равно нужно будет ручками смысла нет.
--
WBR, Alex.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [gentoo-user-ru] Re: [gentoo-user-ru] отключение флешки без umount
2012-05-27 16:33 [gentoo-user-ru] отключение флешки без umount Alex Efros
@ 2012-05-27 20:19 ` Aleksandr Dezhin
2012-05-27 21:22 ` Alex Efros
2012-05-27 21:13 ` Nikolay Ostanen
` (2 subsequent siblings)
3 siblings, 1 reply; 16+ messages in thread
From: Aleksandr Dezhin @ 2012-05-27 20:19 UTC (permalink / raw
To: gentoo-user-ru
[-- Attachment #1: Type: text/plain, Size: 1353 bytes --]
27 мая 2012 г., 20:33 пользователь Alex Efros <powerman@powerman.name>написал:
> Возникла идея сделать авто-подключение и отключение флешки через udev.
> Но чтобы её можно было безопасно выдёргивать без ручного отмонтирования,
> её нужно монтировать с опцией sync. Я сейчас это немного потестировал,
> и получается, что скорость копирования на флешку подключенную с sync
> чуть ли не в 70 раз медленнее - т.е. тормозит до состояния неюзабельности.
>
Какие получились абсолютные значения скоростей? Насколько я помню,
копирование на флешку без sync по началу происходит со скоростью
существенно превышающей скорость самой флешки, то есть в некий буфер. Потом
скорость сильно падает. Если сравнивать со скоростью копирования в этот
буфер, то вполне нормален и 70 кратный выигрыш.
[-- Attachment #2: Type: text/html, Size: 1620 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-user-ru] отключение флешки без umount
2012-05-27 16:33 [gentoo-user-ru] отключение флешки без umount Alex Efros
2012-05-27 20:19 ` [gentoo-user-ru] " Aleksandr Dezhin
@ 2012-05-27 21:13 ` Nikolay Ostanen
2012-05-27 21:31 ` Alex Efros
2012-05-28 0:18 ` Mad Deer
2012-05-28 17:07 ` Alex Efros
3 siblings, 1 reply; 16+ messages in thread
From: Nikolay Ostanen @ 2012-05-27 21:13 UTC (permalink / raw
To: gentoo-user-ru
> Hi!
>
> Возникла идея сделать авто-подключение и отключение флешки через udev.
> Но чтобы её можно было безопасно выдёргивать без ручного
> отмонтирования, её нужно монтировать с опцией sync. Я сейчас это
> немного потестировал, и получается, что скорость копирования на
> флешку подключенную с sync чуть ли не в 70 раз медленнее - т.е.
> тормозит до состояния неюзабельности.
>
> Это не баг, так всё и должно быть? Если да, то делать автомонтирование
> флешки при том, что отмонтировать всё-равно нужно будет ручками
> смысла нет.
>
Монтирую-размонтирую так: http://daath.tk/conf/udev
Пишу sync перед тем, как выдернуть флешку (вполне можно на хоткей
повесить). Проблем не обнаружено.
--
# Nikolay Ostanen
# http://daath.tk
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-user-ru] Re: [gentoo-user-ru] отключение флешки без umount
2012-05-27 20:19 ` [gentoo-user-ru] " Aleksandr Dezhin
@ 2012-05-27 21:22 ` Alex Efros
2012-05-28 14:15 ` Vanush Misha Paturyan
0 siblings, 1 reply; 16+ messages in thread
From: Alex Efros @ 2012-05-27 21:22 UTC (permalink / raw
To: gentoo-user-ru
Hi!
On Mon, May 28, 2012 at 12:19:07AM +0400, Aleksandr Dezhin wrote:
> Какие получились абсолютные значения скоростей? Насколько я помню,
> копирование на флешку без sync по началу происходит со скоростью
> существенно превышающей скорость самой флешки, то есть в некий буфер. Потом
> скорость сильно падает. Если сравнивать со скоростью копирования в этот
> буфер, то вполне нормален и 70 кратный выигрыш.
Вот так:
# time cp ubuntu-11.10-desktop-i386.iso /mnt/usb/tmp1.iso; time umount /mnt/usb/
real 0m6.632s
user 0m0.005s
sys 0m0.819s
real 1m14.152s
user 0m0.000s
sys 0m0.160s
# time cp ubuntu-11.10-desktop-i386.iso /mnt/usb/tmp2.iso; time umount /mnt/usb/
real 83m13.344s
user 0m0.028s
sys 0m11.239s
real 0m0.177s
user 0m0.000s
sys 0m0.166s
Первая попытка без sync - время в основном ушло на umount - вторая с sync -
время ушло на cp. Размер образа 729067520 байт делю на суммарное cp+umount
время и получаю скорость. Примерно 9MB/sec в первом случае, и 150KB/sec во
втором. Это разница в 60 раз!
Более того, даже при использовании dd с большим значением bs= вместо cp
скорость при sync остаётся равной 150KB/sec вне зависимости от размера
буфера dd - хотя теоретически при большом размере буфера с sync скорость
должна быть не намного медленнее чем без sync (если предполагать, что при
sync вызов write(2) блокируется пока данные не будут физически записаны,
и никаких других эффектов от него нет, то использование больших буферов
при вызове write(2) должно для производительности давать схожий эффект с
отложенной записью, используемой без sync).
--
WBR, Alex.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-user-ru] отключение флешки без umount
2012-05-27 21:13 ` Nikolay Ostanen
@ 2012-05-27 21:31 ` Alex Efros
0 siblings, 0 replies; 16+ messages in thread
From: Alex Efros @ 2012-05-27 21:31 UTC (permalink / raw
To: gentoo-user-ru
Hi!
On Mon, May 28, 2012 at 01:13:52AM +0400, Nikolay Ostanen wrote:
> Монтирую-размонтирую так: http://daath.tk/conf/udev
> Пишу sync перед тем, как выдернуть флешку (вполне можно на хоткей
> повесить). Проблем не обнаружено.
А с чего им взяться? При таком подходе никакой разницы делать sync или umount.
Точнее, umount делать правильнее - во-первых при umount будут сброшены
только относящиеся к флешке буфера, а не вообще все, а во-вторых выход
umount даёт гарантию, что никто не начнёт писать на флешку между выходом
sync и её вытаскиванием.
Мне просто хочется воткнуть флешку, скопировать файл, и как только команда
cp или окно копирования в mc завершатся - безопасно вытащить флешку, не
делая никаких дополнительных команд вроде sync или umount. А для этого
нужен mount -o sync.
--
WBR, Alex.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-user-ru] отключение флешки без umount
2012-05-28 0:18 ` Mad Deer
@ 2012-05-27 21:33 ` Alex Efros
2012-05-27 21:54 ` Alex Efros
0 siblings, 1 reply; 16+ messages in thread
From: Alex Efros @ 2012-05-27 21:33 UTC (permalink / raw
To: gentoo-user-ru
Hi!
On Mon, May 28, 2012 at 12:18:31AM +0000, Mad Deer wrote:
> для vfat есть опция flush
> man mount
> flush If set, the filesystem will try to flush to disk more early than
> normal. Not set by default.
> и отслеживать по лампочке на флешке :)
Спасибо, надо будет попробовать. Но flush всё-таки не sync, он не даёт
никаких гарантий что лампочка погасла потому, что всё записалось, а не
потому, что система очень занята другими задачами.
--
WBR, Alex.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-user-ru] отключение флешки без umount
2012-05-27 21:33 ` Alex Efros
@ 2012-05-27 21:54 ` Alex Efros
0 siblings, 0 replies; 16+ messages in thread
From: Alex Efros @ 2012-05-27 21:54 UTC (permalink / raw
To: gentoo-user-ru
Hi!
On Mon, May 28, 2012 at 12:33:11AM +0300, Alex Efros wrote:
> > для vfat есть опция flush
> > man mount
> > flush If set, the filesystem will try to flush to disk more early than
> > normal. Not set by default.
> > и отслеживать по лампочке на флешке :)
> Спасибо, надо будет попробовать. Но flush всё-таки не sync, он не даёт
> никаких гарантий что лампочка погасла потому, что всё записалось, а не
> потому, что система очень занята другими задачами.
Кстати, действительно, работает весьма неплохо. Скорость 6MB/sec вместо 9MB/sec,
с этим уже можно жить.
# time cp ubuntu-11.10-desktop-i386.iso /mnt/usb/tmp1.iso; sleep 3; time umount /mnt/usb/
real 1m54.737s
user 0m0.002s
sys 0m0.539s
real 0m0.170s
user 0m0.000s
sys 0m0.158s
Жаль, что эта опция поддерживается только для FAT.
--
WBR, Alex.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-user-ru] отключение флешки без umount
2012-05-27 16:33 [gentoo-user-ru] отключение флешки без umount Alex Efros
2012-05-27 20:19 ` [gentoo-user-ru] " Aleksandr Dezhin
2012-05-27 21:13 ` Nikolay Ostanen
@ 2012-05-28 0:18 ` Mad Deer
2012-05-27 21:33 ` Alex Efros
2012-05-28 17:07 ` Alex Efros
3 siblings, 1 reply; 16+ messages in thread
From: Mad Deer @ 2012-05-28 0:18 UTC (permalink / raw
To: gentoo-user-ru
On 27.05.2012 16:33, Alex Efros wrote:
> Hi!
>
> Возникла идея сделать авто-подключение и отключение флешки через udev.
> Но чтобы её можно было безопасно выдёргивать без ручного отмонтирования,
> её нужно монтировать с опцией sync. Я сейчас это немного потестировал,
> и получается, что скорость копирования на флешку подключенную с sync
> чуть ли не в 70 раз медленнее - т.е. тормозит до состояния неюзабельности.
>
> Это не баг, так всё и должно быть? Если да, то делать автомонтирование
> флешки при том, что отмонтировать всё-равно нужно будет ручками смысла нет.
>
для vfat есть опция flush
man mount
flush If set, the filesystem will try to flush to disk more early than
normal. Not set by default.
и отслеживать по лампочке на флешке :)
--
Да здравствует то, благодаря чему мы, несмотря ни на что.(c) Задорнов
Registered Linux User #317544
Linux 3.2.12-gentoo i686 AMD Phenom(tm) II X4 810 Processor
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-user-ru] отключение флешки без umount
2012-05-27 21:22 ` Alex Efros
@ 2012-05-28 14:15 ` Vanush Misha Paturyan
2012-05-28 18:30 ` Alex Efros
0 siblings, 1 reply; 16+ messages in thread
From: Vanush Misha Paturyan @ 2012-05-28 14:15 UTC (permalink / raw
To: gentoo-user-ru
On Mon, 28 May 2012 00:22:07 +0300 Alex Efros <powerman@powerman.name>
wrote:
> Hi!
>
> On Mon, May 28, 2012 at 12:19:07AM +0400, Aleksandr Dezhin wrote:
> > Какие получились абсолютные значения скоростей? Насколько я помню,
> > копирование на флешку без sync по началу происходит со скоростью
> > существенно превышающей скорость самой флешки, то есть в некий
> > буфер. Потом скорость сильно падает. Если сравнивать со скоростью
> > копирования в этот буфер, то вполне нормален и 70 кратный выигрыш.
>
> Вот так:
>
> # time cp ubuntu-11.10-desktop-i386.iso /mnt/usb/tmp1.iso; time
> umount /mnt/usb/
>
> real 0m6.632s
> user 0m0.005s
> sys 0m0.819s
>
> real 1m14.152s
> user 0m0.000s
> sys 0m0.160s
>
> # time cp ubuntu-11.10-desktop-i386.iso /mnt/usb/tmp2.iso; time
> umount /mnt/usb/
>
> real 83m13.344s
> user 0m0.028s
> sys 0m11.239s
>
> real 0m0.177s
> user 0m0.000s
> sys 0m0.166s
>
> Первая попытка без sync - время в основном ушло на umount - вторая с
> sync - время ушло на cp. Размер образа 729067520 байт делю на
> суммарное cp+umount время и получаю скорость. Примерно 9MB/sec в
> первом случае, и 150KB/sec во втором. Это разница в 60 раз!
А можно поопросить при всем при этом в другом окне запустить "iostat
1" (из app-admin/sysstat) и проследить за avg-cpu, где CPU дольше всего
"живет?" Если в обоих случаях в %iowait - значит все работает "как
задуманно" (хотя странно что при sync все настолько тормозится, по
логике не должно вроде как). Если в случае с sync-ом %idle подпрыгивает
значит где-то что-то не совсем правильно работает.
Миша.
--
Vanush "Misha" Paturyan
Senior Technical Officer
Room 1.37
Computer Science Department
NUI Maynooth
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-user-ru] отключение флешки без umount
2012-05-27 16:33 [gentoo-user-ru] отключение флешки без umount Alex Efros
` (2 preceding siblings ...)
2012-05-28 0:18 ` Mad Deer
@ 2012-05-28 17:07 ` Alex Efros
2012-05-30 21:01 ` Ray Dudu
3 siblings, 1 reply; 16+ messages in thread
From: Alex Efros @ 2012-05-28 17:07 UTC (permalink / raw
To: gentoo-user-ru
Hi!
Всем спасибо за помощь. Вот, что получилось в результате:
--- /etc/udev/rules.d/99-usb-automount.rules ---
# Allow user mount/umount (set device owner and use 'owner' option in fstab).
# Create mount point directories for vfat/ext2/ext3/ext4/ntfs partitions.
# Create symlinks using partition label (overwrite duplicates).
# Auto-mount vfat with 'flush' option.
# No auto-mount for other filesystems (because there is NO SAFE auto-unmount).
# Auto-unmount vfat/ext2/ext3/ext4/ntfs and cleanup directories/symlinks.
ENV{mount_user}="powerman"
ENV{mount_path}="/mnt"
KERNEL=="sd*", DRIVERS=="usb-storage", ENV{ID_FS_TYPE}!="", \
OWNER="%E{mount_user}", \
ENV{mount_point}="usb.%k"
ACTION=="add", ENV{mount_point}!="", ENV{ID_FS_TYPE}=="vfat", \
ENV{mount_fs}="vfat", \
ENV{mount_opts}="flush,owner,umask=007,showexec,quiet"
ACTION=="add", ENV{mount_point}!="", ENV{ID_FS_TYPE}=="ext2|ext3|ext4", \
ENV{mount_fs}="%E{ID_FS_TYPE}", \
ENV{mount_opts}="owner"
ACTION=="add", ENV{mount_point}!="", ENV{ID_FS_TYPE}=="ntfs", \
ENV{mount_fs}="ntfs-3g", \
ENV{mount_opts}="owner,umask=007,fmask=111"
ACTION=="add", ENV{mount_point}!="", \
RUN+="/bin/mkdir -p %E{mount_path}/%E{mount_point}", \
RUN+="/bin/sed -i.bak '$a/dev/%k %E{mount_path}/%E{mount_point} %E{mount_fs} %E{mount_opts} 0 0' /etc/fstab"
ACTION=="add", ENV{mount_point}!="", ENV{ID_FS_TYPE}=="vfat", \
RUN+="/usr/bin/sudo -u %E{mount_user} /bin/mount %E{mount_path}/%E{mount_point}", \
RUN+="/usr/bin/sudo -u %E{mount_user} /usr/bin/env DISPLAY=:0 /usr/bin/notify-send -t 2500 -u normal -i /usr/share/icons/oxygen/48x48/devices/drive-removable-media-usb-pendrive.png 'USB Flash automounted' '%E{mount_point}\n%E{ID_FS_LABEL}'"
ACTION=="remove", ENV{mount_point}!="", \
RUN+="/bin/umount -l %E{mount_path}/%E{mount_point}", \
RUN+="/bin/sed -i.bak '/^\/dev\/%k \S\+\/%E{mount_point} /d' /etc/fstab", \
RUN+="/bin/rmdir %E{mount_path}/%E{mount_point}", \
RUN+="/usr/bin/sudo -u %E{mount_user} /usr/bin/env DISPLAY=:0 /usr/bin/notify-send -t 1000 -u normal -i /usr/share/icons/oxygen/48x48/devices/drive-removable-media-usb-pendrive.png 'USB Flash disconnected' '%E{mount_point}\n%E{ID_FS_LABEL}'"
ACTION=="add", ENV{mount_point}!="", ENV{ID_FS_LABEL}!="", \
RUN+="/bin/ln -nsf %E{mount_point} %E{mount_path}/%E{ID_FS_LABEL}"
ACTION=="remove", ENV{mount_point}!="", ENV{ID_FS_LABEL}!="", \
RUN+="/bin/rm %E{mount_path}/%E{ID_FS_LABEL}"
--- /etc/udev/rules.d/99-usb-automount.rules ---
P.S. В процессе отладки после частого подключения/отключения разных флешек
два раза что-то ломалось в ядре и оно переставало реагировать на
подключение/отключение флешек, приходилось перегружаться. Не думаю, что
это вызвано моими правилами udev, скорее это просто баг в ядре. "Умирало"
оно оба раза в момент подключения флешки, и последние сообщения в логе
касающиеся usb были примерно такие:
2012-05-28_11:33:15.40111 kern.info: usb 2-1.1: new high-speed USB device number 118 using ehci_hcd
2012-05-28_11:33:15.48422 kern.err: ehci_hcd 0000:00:1d.0: fatal error
2012-05-28_11:33:15.48423 kern.err: ehci_hcd 0000:00:1d.0: HC died; cleaning up
2012-05-28_11:33:15.48423 kern.err: ehci_hcd 0000:00:1d.0: force halt; handshake ffffc9000002e024 00004000 00004000 -> -110
2012-05-28_11:33:15.48423 kern.err: ehci_hcd 0000:00:1d.0: HC died; cleaning up
2012-05-28_11:33:15.49011 kern.err: usb 2-1.1: device descriptor read/all, error -108
2012-05-28_11:33:15.49013 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
2012-05-28_11:33:15.49013 kern.err: hub 2-1:1.0: cannot reset port 1 (err = -19)
2012-05-28_11:33:15.49014 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
2012-05-28_11:33:15.49014 kern.err: hub 2-1:1.0: cannot reset port 1 (err = -19)
2012-05-28_11:33:15.49014 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: cannot reset port 1 (err = -19)
2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: unable to enumerate USB device on port 1
2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
2012-05-28_11:33:15.49016 kern.info: usb 2-1: USB disconnect, device number 2
Не знаю, куда можно этот баг отправить, т.к. по желанию его воспроизвести
не получается. Да и ядро 3.2.11-hardened - далеко не последняя версия,
может в более новых это уже пофиксили.
--
WBR, Alex.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-user-ru] отключение флешки без umount
2012-05-28 14:15 ` Vanush Misha Paturyan
@ 2012-05-28 18:30 ` Alex Efros
2012-05-28 19:28 ` Alex Efros
2012-05-28 20:29 ` Vanush Paturyan
0 siblings, 2 replies; 16+ messages in thread
From: Alex Efros @ 2012-05-28 18:30 UTC (permalink / raw
To: gentoo-user-ru
Hi!
On Mon, May 28, 2012 at 03:15:42PM +0100, Vanush Misha Paturyan wrote:
> > # time cp ubuntu-11.10-desktop-i386.iso /mnt/usb/tmp1.iso; time
> > umount /mnt/usb/
> >
> > real 0m6.632s
> > user 0m0.005s
> > sys 0m0.819s
> >
> > real 1m14.152s
> > user 0m0.000s
> > sys 0m0.160s
> А можно поопросить при всем при этом в другом окне запустить "iostat
> 1" (из app-admin/sysstat) и проследить за avg-cpu, где CPU дольше всего
> "живет?" Если в обоих случаях в %iowait - значит все работает "как
> задуманно" (хотя странно что при sync все настолько тормозится, по
> логике не должно вроде как). Если в случае с sync-ом %idle подпрыгивает
> значит где-то что-то не совсем правильно работает.
Учитывая отсталость FAT, я решил проверить sync с другими файловыми
системами.
EXT4: скорость записи 4.5MB/sec!
# time cp /mnt/storage/iso/ubuntu-11.10-desktop-i386.iso /mnt/usb.sdb1/; time umount /mnt/usb.sdb1/
real 2m42.545s
user 0m0.029s
sys 0m1.326s
real 0m0.510s
user 0m0.000s
sys 0m0.066s
Вывод iostat в среднем такой:
avg-cpu: %user %nice %system %iowait %steal %idle
0.37 0.00 0.37 12.23 0.00 87.02
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 36.00 4608.00 0.00 4608 0
scd1 0.00 0.00 0.00 0 0
sdb 435.00 0.00 8120.00 0 8120
Значение iowait ~12.5% - это фактически 100% одного ядра (у меня 8 ядер).
Не понятно, почему он показывает запись на sdb порядка 8MB/sec, это явно
некорректная цифра.
Что странно: после монтирования каждые несколько секунд мигает лампочка на
флешке, хотя никто ничего с флешкой не делает. Это какие-то внутренние
дела ext4, типа онлайн дефрагментации? Для флешки это не очень хорошо,
наверное.
EXT3: скорость записи 2.8MB/sec.
# time cp /mnt/storage/iso/ubuntu-11.10-desktop-i386.iso /mnt/usb.sdb1/; time umount /mnt/usb.sdb1/
real 4m6.232s
user 0m0.025s
sys 0m1.155s
real 0m11.337s
user 0m0.000s
sys 0m0.068s
Вывод iowait примерно как для ext4, но если на ext4 в поле kB_wrtn/s всё
время выдавало примерно 8MB, то на ext3 наблюдаются постоянные колебания
между 700KB-2MB-3MB-4MB-5MB-6MB.
Что странно: очень долго отрабатывает umount. Даже в режиме flush на vfat
это занимает 2-3 секунды, а в режиме sync вообще не должно занимать время.
EXT2: скорость записи 600KB/sec.
Вывод iowait как на ext3, только колеблется между 600KB и 1.8MB.
NTFS-3G: скорость записи 225KB/sec.
Вывод iowait как на ext3, только колеблется между 600KB и 2MB.
VFAT: скорость записи 150KB/sec.
Вывод iowait как на ext3, только колеблется между 100KB и 280KB.
Резюмируя:
- sync на ext4 использовать можно, но смущает постоянная активность флешки
(впрочем, активность есть и без sync)
- sync на ext3 вероятно поломан (судя по времени на umount)
- sync на ext2/ntfs/vfat не юзабелен из-за тормозов
P.S. И, кстати, максимальная скорость флешки оказалась не 9MB/sec, как я
раньше писал, а 11MB/sec (на ext4 без sync).
--
WBR, Alex.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-user-ru] отключение флешки без umount
2012-05-28 18:30 ` Alex Efros
@ 2012-05-28 19:28 ` Alex Efros
2012-05-28 20:29 ` Vanush Paturyan
1 sibling, 0 replies; 16+ messages in thread
From: Alex Efros @ 2012-05-28 19:28 UTC (permalink / raw
To: gentoo-user-ru
Hi!
Ещё одну странность обнаружил. Если скорость копирования файла cp и mc на
vfat+flush одинаковая (6MB/sec), то скорость копирования на ext4+sync
сильно отличается (4.5MB/sec у cp и 1.5MB/sec у mc).
Что навело на мысль поиграться с размером буфера с помощью dd.
И точно, при размере буфера 2MB мы получаем скорость копирования 11.5MB/sec!
--
WBR, Alex.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-user-ru] отключение флешки без umount
2012-05-28 18:30 ` Alex Efros
2012-05-28 19:28 ` Alex Efros
@ 2012-05-28 20:29 ` Vanush Paturyan
2012-05-28 21:25 ` Alex Efros
1 sibling, 1 reply; 16+ messages in thread
From: Vanush Paturyan @ 2012-05-28 20:29 UTC (permalink / raw
To: gentoo-user-ru
On 28 May 2012, at 19:30, Alex Efros wrote:
> Hi!
>
> On Mon, May 28, 2012 at 03:15:42PM +0100, Vanush Misha Paturyan wrote:
>>> # time cp ubuntu-11.10-desktop-i386.iso /mnt/usb/tmp1.iso; time
>>> umount /mnt/usb/
>>>
>>> real 0m6.632s
>>> user 0m0.005s
>>> sys 0m0.819s
>>>
>>> real 1m14.152s
>>> user 0m0.000s
>>> sys 0m0.160s
>> А можно поопросить при всем при этом в другом окне запустить "iostat
>> 1" (из app-admin/sysstat) и проследить за avg-cpu, где CPU дольше всего
>> "живет?" Если в обоих случаях в %iowait - значит все работает "как
>> задуманно" (хотя странно что при sync все настолько тормозится, по
>> логике не должно вроде как). Если в случае с sync-ом %idle подпрыгивает
>> значит где-то что-то не совсем правильно работает.
>
> Учитывая отсталость FAT, я решил проверить sync с другими файловыми
> системами.
>
>
> EXT4: скорость записи 4.5MB/sec!
>
> # time cp /mnt/storage/iso/ubuntu-11.10-desktop-i386.iso /mnt/usb.sdb1/; time umount /mnt/usb.sdb1/
>
> real 2m42.545s
> user 0m0.029s
> sys 0m1.326s
>
> real 0m0.510s
> user 0m0.000s
> sys 0m0.066s
>
> Вывод iostat в среднем такой:
>
> avg-cpu: %user %nice %system %iowait %steal %idle
> 0.37 0.00 0.37 12.23 0.00 87.02
>
> Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
> sda 36.00 4608.00 0.00 4608 0
> scd1 0.00 0.00 0.00 0 0
> sdb 435.00 0.00 8120.00 0 8120
>
> Значение iowait ~12.5% - это фактически 100% одного ядра (у меня 8 ядер).
> Не понятно, почему он показывает запись на sdb порядка 8MB/sec, это явно
> некорректная цифра.
>
> Что странно: после монтирования каждые несколько секунд мигает лампочка на
> флешке, хотя никто ничего с флешкой не делает. Это какие-то внутренние
> дела ext4, типа онлайн дефрагментации? Для флешки это не очень хорошо,
> наверное.
>
Насколько я помню если это только чтение - то не страшно. Флешкам плохо когда
на них пишут (или стирают). Я всегда использую iostat когда мне надо проверить
активность на дисках, если кто нибудь знает альтернативы интересно было бы проверить
совпадает ли активность с миганием лампочки?
>
> EXT3: скорость записи 2.8MB/sec.
>
> # time cp /mnt/storage/iso/ubuntu-11.10-desktop-i386.iso /mnt/usb.sdb1/; time umount /mnt/usb.sdb1/
>
> real 4m6.232s
> user 0m0.025s
> sys 0m1.155s
>
> real 0m11.337s
> user 0m0.000s
> sys 0m0.068s
>
> Вывод iowait примерно как для ext4, но если на ext4 в поле kB_wrtn/s всё
> время выдавало примерно 8MB, то на ext3 наблюдаются постоянные колебания
> между 700KB-2MB-3MB-4MB-5MB-6MB.
>
Похоже ext4 лучше всего работает с буферами в памяти?
с VFAT+sync возможно тормоза из-за необходимости обновлять две FAT таблицы
при записи каждого кластера информации. Если интересно то можно дальше
экспериментировать, меняя размер кластера файловой системы и/или размер сектора
(тогда в FAT будет меньше записей).
> Ещё одну странность обнаружил. Если скорость копирования файла cp и mc на
> vfat+flush одинаковая (6MB/sec), то скорость копирования на ext4+sync
> сильно отличается (4.5MB/sec у cp и 1.5MB/sec у mc).
> Что навело на мысль поиграться с размером буфера с помощью dd.
> И точно, при размере буфера 2MB мы получаем скорость копирования 11.5MB/sec!
А вот это уже баг в mc!
Миша.
---
Vanush "Misha" Paturyan
Senior Technical Officer
Computer Science Department
NUI Maynooth
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-user-ru] отключение флешки без umount
2012-05-28 20:29 ` Vanush Paturyan
@ 2012-05-28 21:25 ` Alex Efros
0 siblings, 0 replies; 16+ messages in thread
From: Alex Efros @ 2012-05-28 21:25 UTC (permalink / raw
To: gentoo-user-ru
Hi!
On Mon, May 28, 2012 at 09:29:18PM +0100, Vanush Paturyan wrote:
> Насколько я помню если это только чтение - то не страшно. Флешкам плохо когда
> на них пишут (или стирают). Я всегда использую iostat когда мне надо проверить
> активность на дисках, если кто нибудь знает альтернативы интересно было бы проверить
> совпадает ли активность с миганием лампочки?
Было бы это чтение - оно бы давно закешировалось и не мигало. Так что это
точно запись. Впрочем, вот iostat, подряд 3 секунды:
avg-cpu: %user %nice %system %iowait %steal %idle
0.25 0.00 0.00 0.00 0.00 99.75
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.00 0.00 0.00 0 0
scd1 0.00 0.00 0.00 0 0
sdb 0.00 0.00 0.00 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
0.12 0.00 0.37 0.00 0.00 99.50
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.00 0.00 0.00 0 0
scd1 0.00 0.00 0.00 0 0
sdb 1.00 0.00 4.00 0 4
--------------------------------------------^^^^
avg-cpu: %user %nice %system %iowait %steal %idle
0.25 0.00 0.12 0.00 0.00 99.62
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.00 0.00 0.00 0 0
scd1 0.00 0.00 0.00 0 0
sdb 0.00 0.00 0.00 0 0
Впрочем, сейчас вроде бы это значительно реже происходит. Не знаю, что
изменилось. Тогда я просто отформатировал sdb1 в ext4, подключил, и увидел
регулярное (раз в 2-4 секунды) мигание. Несколько раз
отмонтировал/подмонтировал - убедился что оно не проходит. С тех пор эта
флешка многократно форматировалась во все возможные fs, в том числе
забивалась нулями. Сейчас в ext4 мигает крайне редко, можно сказать почти
вообще не мигает. Так что панику поднимать, наверное, смысла нет. Чем-то
оно занималось, а потом перестало. Настораживает, конечно, но не
смертельно. ;-)
> А вот это уже баг в mc!
Скорее, отсутствие фичи. Но тикет на увеличение размера буферов уже 2 года
висит.
--
WBR, Alex.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-user-ru] отключение флешки без umount
2012-05-28 17:07 ` Alex Efros
@ 2012-05-30 21:01 ` Ray Dudu
2012-05-31 6:50 ` Alex Efros
0 siblings, 1 reply; 16+ messages in thread
From: Ray Dudu @ 2012-05-30 21:01 UTC (permalink / raw
To: gentoo-user-ru
28.05.12 20:07, Alex Efros написав(ла):
> Hi!
>
> Всем спасибо за помощь. Вот, что получилось в результате:
>
>
> --- /etc/udev/rules.d/99-usb-automount.rules ---
>
> # Allow user mount/umount (set device owner and use 'owner' option in fstab).
> # Create mount point directories for vfat/ext2/ext3/ext4/ntfs partitions.
> # Create symlinks using partition label (overwrite duplicates).
> # Auto-mount vfat with 'flush' option.
> # No auto-mount for other filesystems (because there is NO SAFE auto-unmount).
> # Auto-unmount vfat/ext2/ext3/ext4/ntfs and cleanup directories/symlinks.
>
> ENV{mount_user}="powerman"
> ENV{mount_path}="/mnt"
>
> KERNEL=="sd*", DRIVERS=="usb-storage", ENV{ID_FS_TYPE}!="", \
> OWNER="%E{mount_user}", \
> ENV{mount_point}="usb.%k"
>
> ACTION=="add", ENV{mount_point}!="", ENV{ID_FS_TYPE}=="vfat", \
> ENV{mount_fs}="vfat", \
> ENV{mount_opts}="flush,owner,umask=007,showexec,quiet"
> ACTION=="add", ENV{mount_point}!="", ENV{ID_FS_TYPE}=="ext2|ext3|ext4", \
> ENV{mount_fs}="%E{ID_FS_TYPE}", \
> ENV{mount_opts}="owner"
> ACTION=="add", ENV{mount_point}!="", ENV{ID_FS_TYPE}=="ntfs", \
> ENV{mount_fs}="ntfs-3g", \
> ENV{mount_opts}="owner,umask=007,fmask=111"
>
> ACTION=="add", ENV{mount_point}!="", \
> RUN+="/bin/mkdir -p %E{mount_path}/%E{mount_point}", \
> RUN+="/bin/sed -i.bak '$a/dev/%k %E{mount_path}/%E{mount_point} %E{mount_fs} %E{mount_opts} 0 0' /etc/fstab"
> ACTION=="add", ENV{mount_point}!="", ENV{ID_FS_TYPE}=="vfat", \
> RUN+="/usr/bin/sudo -u %E{mount_user} /bin/mount %E{mount_path}/%E{mount_point}", \
> RUN+="/usr/bin/sudo -u %E{mount_user} /usr/bin/env DISPLAY=:0 /usr/bin/notify-send -t 2500 -u normal -i /usr/share/icons/oxygen/48x48/devices/drive-removable-media-usb-pendrive.png 'USB Flash automounted' '%E{mount_point}\n%E{ID_FS_LABEL}'"
> ACTION=="remove", ENV{mount_point}!="", \
> RUN+="/bin/umount -l %E{mount_path}/%E{mount_point}", \
> RUN+="/bin/sed -i.bak '/^\/dev\/%k \S\+\/%E{mount_point} /d' /etc/fstab", \
> RUN+="/bin/rmdir %E{mount_path}/%E{mount_point}", \
> RUN+="/usr/bin/sudo -u %E{mount_user} /usr/bin/env DISPLAY=:0 /usr/bin/notify-send -t 1000 -u normal -i /usr/share/icons/oxygen/48x48/devices/drive-removable-media-usb-pendrive.png 'USB Flash disconnected' '%E{mount_point}\n%E{ID_FS_LABEL}'"
>
> ACTION=="add", ENV{mount_point}!="", ENV{ID_FS_LABEL}!="", \
> RUN+="/bin/ln -nsf %E{mount_point} %E{mount_path}/%E{ID_FS_LABEL}"
> ACTION=="remove", ENV{mount_point}!="", ENV{ID_FS_LABEL}!="", \
> RUN+="/bin/rm %E{mount_path}/%E{ID_FS_LABEL}"
>
> --- /etc/udev/rules.d/99-usb-automount.rules ---
>
>
> P.S. В процессе отладки после частого подключения/отключения разных флешек
> два раза что-то ломалось в ядре и оно переставало реагировать на
> подключение/отключение флешек, приходилось перегружаться. Не думаю, что
> это вызвано моими правилами udev, скорее это просто баг в ядре. "Умирало"
> оно оба раза в момент подключения флешки, и последние сообщения в логе
> касающиеся usb были примерно такие:
>
> 2012-05-28_11:33:15.40111 kern.info: usb 2-1.1: new high-speed USB device number 118 using ehci_hcd
> 2012-05-28_11:33:15.48422 kern.err: ehci_hcd 0000:00:1d.0: fatal error
> 2012-05-28_11:33:15.48423 kern.err: ehci_hcd 0000:00:1d.0: HC died; cleaning up
> 2012-05-28_11:33:15.48423 kern.err: ehci_hcd 0000:00:1d.0: force halt; handshake ffffc9000002e024 00004000 00004000 -> -110
> 2012-05-28_11:33:15.48423 kern.err: ehci_hcd 0000:00:1d.0: HC died; cleaning up
> 2012-05-28_11:33:15.49011 kern.err: usb 2-1.1: device descriptor read/all, error -108
> 2012-05-28_11:33:15.49013 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
> 2012-05-28_11:33:15.49013 kern.err: hub 2-1:1.0: cannot reset port 1 (err = -19)
> 2012-05-28_11:33:15.49014 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
> 2012-05-28_11:33:15.49014 kern.err: hub 2-1:1.0: cannot reset port 1 (err = -19)
> 2012-05-28_11:33:15.49014 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
> 2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: cannot reset port 1 (err = -19)
> 2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
> 2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: unable to enumerate USB device on port 1
> 2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
> 2012-05-28_11:33:15.49016 kern.info: usb 2-1: USB disconnect, device number 2
>
> Не знаю, куда можно этот баг отправить, т.к. по желанию его воспроизвести
> не получается. Да и ядро 3.2.11-hardened - далеко не последняя версия,
> может в более новых это уже пофиксили.
>
Натыкались на такую же проблему на работе. Это баг в ядре. Нашли и
сделали патч. Если интерестно, могу поискать и выслать.
--
Kind regards,
RD18-UANIC
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-user-ru] отключение флешки без umount
2012-05-30 21:01 ` Ray Dudu
@ 2012-05-31 6:50 ` Alex Efros
0 siblings, 0 replies; 16+ messages in thread
From: Alex Efros @ 2012-05-31 6:50 UTC (permalink / raw
To: gentoo-user-ru
Hi!
On Thu, May 31, 2012 at 12:01:31AM +0300, Ray Dudu wrote:
> > Не знаю, куда можно этот баг отправить, т.к. по желанию его воспроизвести
> > не получается. Да и ядро 3.2.11-hardened - далеко не последняя версия,
> > может в более новых это уже пофиксили.
> Натыкались на такую же проблему на работе. Это баг в ядре. Нашли и
> сделали патч. Если интерестно, могу поискать и выслать.
Да, конечно, интересно. Лучше всего ссылку на багтрекер генту/ядра/куда вы
его отправили, чтобы отслеживать прогресс.
--
WBR, Alex.
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2012-05-31 6:51 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-27 16:33 [gentoo-user-ru] отключение флешки без umount Alex Efros
2012-05-27 20:19 ` [gentoo-user-ru] " Aleksandr Dezhin
2012-05-27 21:22 ` Alex Efros
2012-05-28 14:15 ` Vanush Misha Paturyan
2012-05-28 18:30 ` Alex Efros
2012-05-28 19:28 ` Alex Efros
2012-05-28 20:29 ` Vanush Paturyan
2012-05-28 21:25 ` Alex Efros
2012-05-27 21:13 ` Nikolay Ostanen
2012-05-27 21:31 ` Alex Efros
2012-05-28 0:18 ` Mad Deer
2012-05-27 21:33 ` Alex Efros
2012-05-27 21:54 ` Alex Efros
2012-05-28 17:07 ` Alex Efros
2012-05-30 21:01 ` Ray Dudu
2012-05-31 6:50 ` Alex Efros
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox