powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Оптимальный размер блока при записи файла на флэшку
25 сообщений из 155, страница 1 из 7
Оптимальный размер блока при записи файла на флэшку
    #39756395
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то слабо гуглится. Все, что нагулилось - в разбросе от 80 КБ до 2 МБ.
Кто-нибудь уже решал подобный вопрос? Что выбрать, если времени на тестирование нет? Или на что надо посмотреть перед копированием?

И еще. Подумал, что надо бы создать пару-тройку потоков, чтобы стояли в очереди с уже прочитанными данными и ждали, пока первый поток не запишет свои. Разумно?

Речь идет о копировании файлов по 50 - 300 МБ количеством от 10 до 100. Цель - максимальная скорость.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39756402
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поток сознания какой-то. Ты подумал так и так, сделал выводы, выжимки из них привел, ... а мы тут при чем?

Пытаюсь ванговать: писать лучше последовательно, т.к. канал один и распараллеливание будет тормозом.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39756413
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T Поток сознания какой-то . Ты подумал так и так, сделал выводы, выжимки из них привел, ... а мы тут при чем?

Пытаюсь ванговать: писать лучше последовательно, т.к. канал один и распараллеливание будет тормозом.

Ну может быть. Выходные все-таки.

Основной вопрос по размеру блоков. Какими блоками лучше копировать?

По потокам: понятно, что писать надо одним потоком. Я подумал, не попытаться ли сделать упреждающее чтение с помощью потоков. Наверное, его можно и по-другому сделать.
Зачем это делать: если блоки будут достаточно большими и делать все последовательно, то сразу после записи очередного блока будет возникать потеря времени на чтение следующего блока.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39756414
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное, можно весь файл в оперативку загружать оттуда уже записывать.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39756418
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homeЧто-то слабо гуглится. Все, что нагулилось - в разбросе от 80 КБ до 2 МБ.
Кто-нибудь уже решал подобный вопрос? Что выбрать, если времени на тестирование нет? Или на что надо посмотреть перед копированием?

И еще. Подумал, что надо бы создать пару-тройку потоков, чтобы стояли в очереди с уже прочитанными данными и ждали, пока первый поток не запишет свои. Разумно?

Речь идет о копировании файлов по 50 - 300 МБ количеством от 10 до 100. Цель - максимальная скорость.
Технологии меняются. И то что мы знали о флешках лет 10 назад сегодня может быть уже не совсем актуально.

По теме несколько мыслей.

1) Посмотри как ты ее форматируешь. extFS? NTFS? Можно попробовать варианты.
Для россыпи мелких файлов - можно попробовать сархивировать 7zip-ом
без сжатия и просто указать destination а флешку. Или TAR-ом.

2) Посмотри https://en.wikipedia.org/wiki/Flash_file_system может какие-то мысли будут.

3) Посмотри как ты ее включаешь? USB2.0 и USB3.0 это разные стандарты скоростей. Для тройки слот покрашен в синий.

4) Посмотри ... в магазинах комп-техники обычно пишут класс памяти. Ну.. для SD точно пишут. Обычно этот
класс и определяет предельную скорость. Если ты уперся в него то уже никакие многопоточки не помогу.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39756453
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonFlying-homeЧто-то слабо гуглится. Все, что нагулилось - в разбросе от 80 КБ до 2 МБ.
Кто-нибудь уже решал подобный вопрос? Что выбрать, если времени на тестирование нет? Или на что надо посмотреть перед копированием?

И еще. Подумал, что надо бы создать пару-тройку потоков, чтобы стояли в очереди с уже прочитанными данными и ждали, пока первый поток не запишет свои. Разумно?

Речь идет о копировании файлов по 50 - 300 МБ количеством от 10 до 100. Цель - максимальная скорость.
Технологии меняются. И то что мы знали о флешках лет 10 назад сегодня может быть уже не совсем актуально.

По теме несколько мыслей.

1) Посмотри как ты ее форматируешь. extFS? NTFS? Можно попробовать варианты.
Для россыпи мелких файлов - можно попробовать сархивировать 7zip-ом
без сжатия и просто указать destination а флешку. Или TAR-ом.

2) Посмотри https://en.wikipedia.org/wiki/Flash_file_system может какие-то мысли будут.

3) Посмотри как ты ее включаешь? USB2.0 и USB3.0 это разные стандарты скоростей. Для тройки слот покрашен в синий.

4) Посмотри ... в магазинах комп-техники обычно пишут класс памяти. Ну.. для SD точно пишут. Обычно этот
класс и определяет предельную скорость. Если ты уперся в него то уже никакие многопоточки не помогу.
Не, нужно решение под "просто какую-то флэшку".
То есть, сделать программную оптимизацию под неизвестно что. Неизвестно, что будет за комп, будет ли у него USB 3.0, неизвестно, что будет за ось, неизвестно, что будет за флэшка.
Все, на чем можно сыграть - то, с чего я начал топик. Размер блока и упреждающее чтение.
А комп может оказаться и хрюшей с 512 МБ, и десятка с 16 ГБ оперативки.

В первом приближении это давно реализовано в Тотал коммандере. У него в настройках есть варианты копирования "по хорошему" и "как в проводнике".
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39756463
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну за 10 экспериментов с разным размером блока ты можешь найти оптимальный.

А мы тебе чем тут поможем?
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39756479
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНу за 10 экспериментов с разным размером блока ты можешь найти оптимальный.

А мы тебе чем тут поможем?
А зачем форумы вообще нужны?
Любому вопрошающему можно сказать, что потрудившись и почитав справку он сам найдет нужное решение.

Может, кто-то уже решал подобную задачу?
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39756481
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homemaytonНу за 10 экспериментов с разным размером блока ты можешь найти оптимальный.

А мы тебе чем тут поможем?
А зачем форумы вообще нужны?
Любому вопрошающему можно сказать, что потрудившись и почитав справку он сам найдет нужное решение.

Может, кто-то уже решал подобную задачу?
Покажи свой сорц.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39756496
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНу за 10 экспериментов с разным размером блока ты можешь найти оптимальный.Даже если этот оптимум существует (в чем я сомневаюсь), то это будет оптимум конкретной модели флешки. Для другой модели/ревизии/firmware он может быть другим.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39756501
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть и другие критерии - физический размер блока на чипе памяти например (которые между делом имеют ограниченное число циклов записи, поэтому переписывать блоки которуе не обязательно переписывать - черевато преждевременным износом)
размер блока смотреть надо кратный размеру блока чипа (через целый множитель), хотя здесь стандарт - так что не промазать

на современных чипах flash памяти размер блока начинается от 512Кб+ (смотришь сколько страниц на чипе, делишь объём)
дальше нюансы, к примеру по файлам - если файлы по 2кб - то писать их (если каждый отдельно, последовательно, потом переход к следующему, а не группой) блоками по 64Кб может быть дороговато.

с другой стороны - ставь USB 3.2 (ту которая 2x2 , т.е. 2.5 GB/sec) или 3.1 (1.25 GB/sec) и забудь об этих мелочах.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39756503
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С точки зрения бизнеса. Как звучит постановка. Если надо просто скопировать файл - то это фигня.
Потому что финал этой операции находится не здесь. А после отмонтирования флешки.

Тоесть мне как конечному пользователю системы неинтересно быстро или медленно копирует
процесс. Мне интересно чтобы я смог быстро нажать мышкой Unmount. И сброс буферов
произошёл-бы максимально быстро.

Тоесть мы имеем дело со сложным стеком технологий Операционка+софт+драйвер флешки
и просто так угадать какой нужен размер блока практически невозможно.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39756512
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homeЗачем это делать: если блоки будут достаточно большими и делать все последовательно, то сразу после записи очередного блока будет возникать потеря времени на чтение следующего блока.
Так это не зависит от размера блока. Используй overlapped I/O или читай и пиши разными потоками. Двух буферов по мегабайту хватит наверняка. Ну и экстремальные виды оптимизации типа FILE_FLAG_NO_BUFFERING (O_DIRECT) не забудь.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39757523
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем.

Я маленькие файлы пока не рассматриваю. Размер - от 50 МБ. Соответственно, и буферы рассматриваю большие (кратные 4КБ).

При копировании с одного сата-диска на другой по моей (пока недостаточной) статистике оптимальным представляется буфер 40 или 80 МБ. Может, и больше.

Думаю вот, насколько такие буферы применимы к флэшкам? Если у нее свободное пространство фрагментировано, что будет?
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39757525
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovFlying-homeЗачем это делать: если блоки будут достаточно большими и делать все последовательно, то сразу после записи очередного блока будет возникать потеря времени на чтение следующего блока.
Так это не зависит от размера блока. Используй overlapped I/O или читай и пиши разными потоками. Двух буферов по мегабайту хватит наверняка. Ну и экстремальные виды оптимизации типа FILE_FLAG_NO_BUFFERING (O_DIRECT) не забудь.
Я пока думаю о двух потоках.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39757526
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну... сорцов мы не дождались. Так ште... good luck.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39757607
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если речь о простом копировании файлов в виндовсе, то есть штатные средства CopyFile() и CopyFileEx()
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39757940
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homeПри копировании с одного сата-диска на другой по моей (пока недостаточной) статистике оптимальным представляется буфер 40 или 80 МБ.
Совершенно избыточны такие буфера. Скорость копирования перестаёт расти уже на 64 кб.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39758120
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНу... сорцов мы не дождались. Так ште... good luck.
Дык, их еще просто нет. Я обычно сперва вопросы задаю, а потом уже что-то пишу.
ЗЫ А зачем тебе сорцы?
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39758125
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homemaytonНу... сорцов мы не дождались. Так ште... good luck.
Дык, их еще просто нет. Я обычно сперва вопросы задаю, а потом уже что-то пишу.
ЗЫ А зачем тебе сорцы?
В этом форуме обычно обсуждают предмет программирвоания. А он как ни странно
связан с сорцами. Тем более что в вашем случае мы имеем дело даже не с алгоритмом
которого здесь нет. А с кодингом под Windows.

Читайте Джефа Рихтера. У него был пример быстрого копирования.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39758126
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovFlying-homeПри копировании с одного сата-диска на другой по моей (пока недостаточной) статистике оптимальным представляется буфер 40 или 80 МБ.
Совершенно избыточны такие буфера. Скорость копирования перестаёт расти уже на 64 кб.
У меня на 40 МБ перестала расти. Может, у меня какой-то не общий случай, может с размерами файлов какая-то коллизия произошла, надо будет еще посмотреть.

С одной стороны, чем больше буфер, тем больше можно выиграть на "бесшовном" копировании группы файлов, с другой - в задаче файлы от 50 МБ, и если их два, то смысла в бОльших буферах действительно нет.

Кстати, можно еще выиграть время на начальном чтении. Начинать копировать маленькими буферами и постепенно увеличивать размер до рабочего.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39758128
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonFlying-homeпропущено...

Дык, их еще просто нет. Я обычно сперва вопросы задаю, а потом уже что-то пишу.
ЗЫ А зачем тебе сорцы?
В этом форуме обычно обсуждают предмет программирвоания. А он как ни странно
связан с сорцами. Тем более что в вашем случае мы имеем дело даже не с алгоритмом
которого здесь нет. А с кодингом под Windows.

Читайте Джефа Рихтера. У него был пример быстрого копирования.
Ну, я сейчас обдумываю именно алгоритм. Потому и зашел в общий топик. Если бы были вопросы по Дельфе, пошел бы туда.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39758129
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homemaytonпропущено...

В этом форуме обычно обсуждают предмет программирвоания. А он как ни странно
связан с сорцами. Тем более что в вашем случае мы имеем дело даже не с алгоритмом
которого здесь нет. А с кодингом под Windows.

Читайте Джефа Рихтера. У него был пример быстрого копирования.
Ну, я сейчас обдумываю именно алгоритм. Потому и зашел в общий топик. Если бы были вопросы по Дельфе, пошел бы туда.
И какой у вас сейчас алгоритм?
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39758192
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во стыдоба...
Перепутал все, что можно было перепутать. Большее с меньшим, размеры буфера...
Праздники удались.
...
Рейтинг: 0 / 0
Оптимальный размер блока при записи файла на флэшку
    #39758386
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-home,

наверное надо прыгать от самой распространённой FS на флэш-накопителях: Fat32
викиРазмер кластера по умолчанию для файловой системы FAT32 составляет от 512 байт до 32 КБ в зависимости от размера тома и конкретной версии ОС[2].При использовании размера кластера, равного 32768 байт, максимальный размер тома составит чуть менее 8 ТБ[3]. Хотя размер сектора может быть любым, традиционно он считается равным 1 сектору диска и равен 512 байт и т.к. эта величина не менялась с момента создания — она может считаться некоторым ПО как константа.
...
Рейтинг: 0 / 0
25 сообщений из 155, страница 1 из 7
Форумы / Windows [игнор отключен] [закрыт для гостей] / Оптимальный размер блока при записи файла на флэшку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]