LINUX.ORG.RU

Почему прогрессбар копирования на флешку так яростно врет?


0

1

Давно заметил, но все ленился поинтересоваться.

При копировании на флешку чего либо прогрессбар сначала сразу же мгновенно показывает, что уже скопировано все на 100% (ну или пробегает эти 100% за пять секунд, показывая скорость копирования в 50Мбс), а потом еще долго на этих 100% висит, копируя с реальной скоростью.

Отчего так происходит?

Замечено на разных компах, и на линуксе, и в винде.

//ЕМНИП раньше на ХР такого не было...

★★★★★

Потому что прогрессбары нынче показывают скорость с учётом кэша. Ты попробуй скопировать один и тот же файл с одного HDD на другой несколько раз подряд при наличии хорошего дискового кэша в оперативке. Как правило второй раз копирование будет ну слииишком быстры(у меня бывает кажет и 2Гб/сек и больше). И да, именно HDD, а не SSD, десктопные винты, так что таких скоростей там в принципе быть не может.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Потому что прогрессбары нынче показывают скорость с учётом кэша.

Печалька же.

Zhbert ★★★★★
() автор топика

Да чего прогрессбары, у меня даже dd так врёт. Пишет на флешку за секунду, а флешка ещё 5 минут огоньками мерцает (и отсоединить низзя - ибо запись)

evilmanul
()
Ответ на: комментарий от r0ck3r

а шиндошс снести

К сожалению, под линуксы еще пока нет адекватного аналога солидворкса или компаса.

Zhbert ★★★★★
() автор топика

Сейчас принято монтировать съемные накопители с опцией flush

Это промежуточный вариант между sync и async

flush --- If set, the filesystem will try to flush to disk more early than normal. Not set by default.

sdio ★★★★★
()

пять звиозд.

anonymous
()

Странный ты какой-то. Если замонтировано без sync, то копируется сначала в кэш, а потом сбрасывается. Всегда так было. И под масдаем то же самое. Там если зайти в свойства устройства, можно поставить флажок, чтобы подключалось в синхронном режиме. Кстати, тогда можно и в нтфс форматировать (в режиме кэша нельзя).

panter_dsd ★★★★
()

Раньше тоже было, и прогрессбар копирования на флопик тоже яростно врал. Я всегда думал, что эта шняга показывает чтение, а не запись, а чтение-то с винта происходит быстрого. Потому что при копировании с флопика все было четко и размеренно.

amomymous ★★★
()
Ответ на: комментарий от unt1tled

ТОЛЬКО в макоси

там есть какие-то колбеки для получения информации по файловому кешу?

в POSIX aio, к сожалению, aio_error и aio_return не сообщают подробностей в состоянии выполнения операции, только «in progress» или «completed».

Можно для прогрессбаров реализовывать кеширование руками, использовать O_DIRECT и O_SYNC, и иметь наиболее полную информацию о состоянии io.

Deleted
()
Ответ на: комментарий от Deleted

про колбеки макоси не знаю, знаю что там прогресбары очень точные, в отличии от

unt1tled ★★★★
()

Тупые мышевозюкалки должны страдать. А у tar, rsync и cp никаких «прогрессбаров» нет.

anonymous
()

Я вижу несколько путей решения (не включая монтирование с sync). Можно реализовать ограничение на число грязных страниц для каждого устройства. Тогда введя новую опцию монтирования можно будет ограничивать кеш записи на флешку, скажем, пятью мегабайтами. Сброс такого кеша будет длиться меньше секунды, что не так заметно для человека. Ну подвисло на секунду, с кем не бывает.

Другой вариант — не решение проблемы, как таковой: сделать доступной информацию о том, сколько ещё не записанных данных висит в памяти. Тогда флешки можно будет монтировать без flush, а при извлечении файловый менеджер сможет в реальном времени показывать пользователю, что процесс идёт записи идёт, и давать ему оценку времени завершения.

i-rinat ★★★★★
()
Ответ на: комментарий от Zhbert

Вот я и ною - раньше такого не было =)

Было, просто ты за столько лет не узнал про sync, судя по всему.

А в шиндовс? =)

И там сто лет как было. http://www.azpc.info/sites/default/files/wrcachedisk.gif

http://az623152.vo.msecnd.net/library/images/2674170.png

xtraeft ★★☆☆
()
Последнее исправление: xtraeft (всего исправлений: 1)
Ответ на: комментарий от anonymous

А у tar, rsync и cp никаких «прогрессбаров» нет.

rsync --progress

anonymous
()
Ответ на: комментарий от xtraeft

Было, просто ты за столько лет не узнал про sync, судя по всему.

Нет, просто раньше, наверное, внимания не обращал. И как-то пофиг было. А сейчас вот решил узнать, вдоволь насмотревшись на 100% прогрессбар.

Zhbert ★★★★★
() автор топика

Флэшка — это современная дискета. А на дискете, как известно, помещается 1.44 МБ. Отсюда и скорость... :)

iZEN ★★★★★
()
Ответ на: комментарий от Zhbert

В шиндовс - пара (десятков) кликов мышки и всё.
В управлении устройствами, политика тома.

Suigintou ★★★★★
()
6 июня 2015 г.

кеширование

anonymous
()
Ответ на: комментарий от unt1tled

адекватные прогрессбары ТОЛЬКО в макоси

Точно так же врут. Скопируешь файл, потом тыкаешь извлечь диск и он ещё может несколько минут его синкать.

Ещё и какая-нибудь гадость системная залипнет на этом диске и вообще не отмонтировать его, пока через lsof не найдёшь и не прибьёшь процесс. Вот почему ни в одной оболочке нет такого функционала — при отмонтировании устройства сообщить, кто его держить и предложить его прибить? Так же как при выключении компьютера. Это же базовый функционал. А потом удивляются, что юзеры дёргают флешки без отмонтирования. Как же их не дёргать, если ОС сама всячески мешает этому, а чтобы понять, кто его держит, надо обкуриться бсдюшными манами.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

вот и я думаю, почему невесты сами не догадываются, что у меня женилка большая, а может и не большая, а человек я хороший, а может и не хороший, а олкаш, но получка у меня в 3 раза больше чем у любого другого доступного ей самца, а что тут думать, я пойду к девочкам, которые хорошие и мне больше ничего не надо а все остальные, от кого что-то там зависит пусть дальше дергают ниточки на которые всем насрать, не?

unt1tled ★★★★
()

Почему прогрессбар копирования на флешку так яростно врет?

вообще-то он не врёт.

тот факт что прогресс бар показывает НЕ равномерное расходывание процентов — совсем не свидетельствует о том что прогресс-бар якобы врёт :) ..

да, файл копируется не равномерно.. и что тут такого особенного?

так устроена файловая система!

а уж кэши и прочая лабуда — это вообще лишь детали файловой системы.

не стоит так сосредотачивать своё пристальное внимание на этих кэшах... достаточно понять лишь что: файл копируется не равномерно из-за нюансов реализации.. а прогресс бар не врёт :) , он правду показывает, самую что ни на есть сокровенную!

и файл ты копируешь — НЕ на флешку, а на файловую систему флешки! :) а файловая система это понимаешь ли сложная штука, которая вообще находится главным образом в ядре :-) а не на флешке !

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 8)

Можешь монтировать с -o sync, будет сразу на флешку синкать. Только так ещё дольше, но без «вранья».

Ещё можно сделать echo 2097152 > /proc/sys/vm/dirty_bytes && echo 2097152 >/proc/sys/vm/dirty_background_bytes, тогда буфер будет маленький и часто скидываться на носитель, в итоге прогрессбар не будет врать. Но тут тоже некоторая засада — это задаёт буфер записи не только для флешки, но для всего. Но можно сделать, скопировать на флешку что надо, а потом вернуть как было.

Если кто знает, есть ли возможность сказать ОС, чтобы буфер только для флешки был такого-то размера, а для всего остального — другого, дайте знать. Пробовал ещё echo 1 > /sys/block/sde/bdi/max_ratio, но что-то никакого эффекта (флешка 16 Гб, оперативы тоже 16 Гб).

И за одно, раз уж про флешки. Можно ли как-то отключить журналирование у NTFS? Сменить ФС не предлагать — телевизор читает только её и FAT32, но в последней ни один фильм не укладывается в 4-гигабайтный лимит.

Psych218 ★★★★★
()
Последнее исправление: Psych218 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.