Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Оптимальный размер блока при записи файла на флэшку  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14124
Что-то слабо гуглится. Все, что нагулилось - в разбросе от 80 КБ до 2 МБ.
Кто-нибудь уже решал подобный вопрос? Что выбрать, если времени на тестирование нет? Или на что надо посмотреть перед копированием?

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

Речь идет о копировании файлов по 50 - 300 МБ количеством от 10 до 100. Цель - максимальная скорость.
6 янв 19, 20:32    [21779223]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Dima T
Member

Откуда:
Сообщений: 13032
Поток сознания какой-то. Ты подумал так и так, сделал выводы, выжимки из них привел, ... а мы тут при чем?

Пытаюсь ванговать: писать лучше последовательно, т.к. канал один и распараллеливание будет тормозом.
6 янв 19, 20:43    [21779232]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14124
Dima T
Поток сознания какой-то. Ты подумал так и так, сделал выводы, выжимки из них привел, ... а мы тут при чем?

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


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

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

По потокам: понятно, что писать надо одним потоком. Я подумал, не попытаться ли сделать упреждающее чтение с помощью потоков. Наверное, его можно и по-другому сделать.
Зачем это делать: если блоки будут достаточно большими и делать все последовательно, то сразу после записи очередного блока будет возникать потеря времени на чтение следующего блока.
6 янв 19, 21:48    [21779253]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14124
Наверное, можно весь файл в оперативку загружать оттуда уже записывать.
6 янв 19, 21:52    [21779254]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
mayton
Member

Откуда: loopback
Сообщений: 38359
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 точно пишут. Обычно этот
класс и определяет предельную скорость. Если ты уперся в него то уже никакие многопоточки не помогу.
6 янв 19, 22:12    [21779261]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14124
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 точно пишут. Обычно этот
класс и определяет предельную скорость. Если ты уперся в него то уже никакие многопоточки не помогу.

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

В первом приближении это давно реализовано в Тотал коммандере. У него в настройках есть варианты копирования "по хорошему" и "как в проводнике".
7 янв 19, 05:33    [21779321]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
mayton
Member

Откуда: loopback
Сообщений: 38359
Ну за 10 экспериментов с разным размером блока ты можешь найти оптимальный.

А мы тебе чем тут поможем?
7 янв 19, 10:56    [21779339]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14124
mayton
Ну за 10 экспериментов с разным размером блока ты можешь найти оптимальный.

А мы тебе чем тут поможем?

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

Может, кто-то уже решал подобную задачу?
7 янв 19, 13:22    [21779377]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
mayton
Member

Откуда: loopback
Сообщений: 38359
Flying-home
mayton
Ну за 10 экспериментов с разным размером блока ты можешь найти оптимальный.

А мы тебе чем тут поможем?

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

Может, кто-то уже решал подобную задачу?

Покажи свой сорц.
7 янв 19, 13:24    [21779379]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
miksoft
Member

Откуда:
Сообщений: 37248
mayton
Ну за 10 экспериментов с разным размером блока ты можешь найти оптимальный.
Даже если этот оптимум существует (в чем я сомневаюсь), то это будет оптимум конкретной модели флешки. Для другой модели/ревизии/firmware он может быть другим.
7 янв 19, 13:57    [21779401]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
vikkiv
Member

Откуда: London
Сообщений: 1733
есть и другие критерии - физический размер блока на чипе памяти например (которые между делом имеют ограниченное число циклов записи, поэтому переписывать блоки которуе не обязательно переписывать - черевато преждевременным износом)
размер блока смотреть надо кратный размеру блока чипа (через целый множитель), хотя здесь стандарт - так что не промазать

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

с другой стороны - ставь USB 3.2 (ту которая 2x2 , т.е. 2.5 GB/sec) или 3.1 (1.25 GB/sec) и забудь об этих мелочах.
7 янв 19, 14:16    [21779410]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
mayton
Member

Откуда: loopback
Сообщений: 38359
С точки зрения бизнеса. Как звучит постановка. Если надо просто скопировать файл - то это фигня.
Потому что финал этой операции находится не здесь. А после отмонтирования флешки.

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

Тоесть мы имеем дело со сложным стеком технологий Операционка+софт+драйвер флешки
и просто так угадать какой нужен размер блока практически невозможно.
7 янв 19, 14:41    [21779420]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46770
Flying-home
Зачем это делать: если блоки будут достаточно большими и делать все последовательно, то сразу после записи очередного блока будет возникать потеря времени на чтение следующего блока.

Так это не зависит от размера блока. Используй overlapped I/O или читай и пиши разными потоками. Двух буферов по мегабайту хватит наверняка. Ну и экстремальные виды оптимизации типа FILE_FLAG_NO_BUFFERING (O_DIRECT) не забудь.
7 янв 19, 15:09    [21779449]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14124
Спасибо всем.

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

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

Думаю вот, насколько такие буферы применимы к флэшкам? Если у нее свободное пространство фрагментировано, что будет?
9 янв 19, 22:10    [21781065]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14124
Dimitry Sibiryakov
Flying-home
Зачем это делать: если блоки будут достаточно большими и делать все последовательно, то сразу после записи очередного блока будет возникать потеря времени на чтение следующего блока.

Так это не зависит от размера блока. Используй overlapped I/O или читай и пиши разными потоками. Двух буферов по мегабайту хватит наверняка. Ну и экстремальные виды оптимизации типа FILE_FLAG_NO_BUFFERING (O_DIRECT) не забудь.

Я пока думаю о двух потоках.
9 янв 19, 22:12    [21781067]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
mayton
Member

Откуда: loopback
Сообщений: 38359
Ну... сорцов мы не дождались. Так ште... good luck.
9 янв 19, 22:13    [21781068]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Dima T
Member

Откуда:
Сообщений: 13032
Если речь о простом копировании файлов в виндовсе, то есть штатные средства CopyFile() и CopyFileEx()
10 янв 19, 07:22    [21781198]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46770
Flying-home
При копировании с одного сата-диска на другой по моей (пока недостаточной) статистике оптимальным представляется буфер 40 или 80 МБ.

Совершенно избыточны такие буфера. Скорость копирования перестаёт расти уже на 64 кб.
10 янв 19, 15:05    [21781714]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14124
mayton
Ну... сорцов мы не дождались. Так ште... good luck.

Дык, их еще просто нет. Я обычно сперва вопросы задаю, а потом уже что-то пишу.
ЗЫ А зачем тебе сорцы?
10 янв 19, 20:02    [21782144]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
mayton
Member

Откуда: loopback
Сообщений: 38359
Flying-home
mayton
Ну... сорцов мы не дождались. Так ште... good luck.

Дык, их еще просто нет. Я обычно сперва вопросы задаю, а потом уже что-то пишу.
ЗЫ А зачем тебе сорцы?

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

Читайте Джефа Рихтера. У него был пример быстрого копирования.
10 янв 19, 20:19    [21782155]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14124
Dimitry Sibiryakov
Flying-home
При копировании с одного сата-диска на другой по моей (пока недостаточной) статистике оптимальным представляется буфер 40 или 80 МБ.

Совершенно избыточны такие буфера. Скорость копирования перестаёт расти уже на 64 кб.

У меня на 40 МБ перестала расти. Может, у меня какой-то не общий случай, может с размерами файлов какая-то коллизия произошла, надо будет еще посмотреть.

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

Кстати, можно еще выиграть время на начальном чтении. Начинать копировать маленькими буферами и постепенно увеличивать размер до рабочего.

К сообщению приложен файл (статистика.xls - 48Kb) cкачать
10 янв 19, 20:20    [21782156]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14124
mayton
Flying-home
пропущено...

Дык, их еще просто нет. Я обычно сперва вопросы задаю, а потом уже что-то пишу.
ЗЫ А зачем тебе сорцы?

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

Читайте Джефа Рихтера. У него был пример быстрого копирования.

Ну, я сейчас обдумываю именно алгоритм. Потому и зашел в общий топик. Если бы были вопросы по Дельфе, пошел бы туда.
10 янв 19, 20:24    [21782160]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
mayton
Member

Откуда: loopback
Сообщений: 38359
Flying-home
mayton
пропущено...

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

Читайте Джефа Рихтера. У него был пример быстрого копирования.

Ну, я сейчас обдумываю именно алгоритм. Потому и зашел в общий топик. Если бы были вопросы по Дельфе, пошел бы туда.

И какой у вас сейчас алгоритм?
10 янв 19, 20:25    [21782162]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14124
Во стыдоба...
Перепутал все, что можно было перепутать. Большее с меньшим, размеры буфера...
Праздники удались.
11 янв 19, 00:54    [21782336]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 3797
Flying-home,

наверное надо прыгать от самой распространённой FS на флэш-накопителях: Fat32
вики
Размер кластера по умолчанию для файловой системы FAT32 составляет от 512 байт до 32 КБ в зависимости от размера тома и конкретной версии ОС[2].При использовании размера кластера, равного 32768 байт, максимальный размер тома составит чуть менее 8 ТБ[3]. Хотя размер сектора может быть любым, традиционно он считается равным 1 сектору диска и равен 512 байт и т.к. эта величина не менялась с момента создания — она может считаться некоторым ПО как константа.
11 янв 19, 12:39    [21782677]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46770
Flying-home
У меня на 40 МБ перестала расти. Может, у меня какой-то не общий случай, может с размерами файлов какая-то коллизия произошла, надо будет еще посмотреть.

С алгоритмом у тебя коллизия скорее всего произошла. На 40 мегабайтах разница по времени между логической записью в кэш и физическим обменом с флэшкой стала достаточной для того, чтобы следующий блок успел прочитаться с винта.
11 янв 19, 15:05    [21782916]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14124
Dimitry Sibiryakov
Flying-home
У меня на 40 МБ перестала расти. Может, у меня какой-то не общий случай, может с размерами файлов какая-то коллизия произошла, надо будет еще посмотреть.

С алгоритмом у тебя коллизия скорее всего произошла. На 40 мегабайтах разница по времени между логической записью в кэш и физическим обменом с флэшкой стала достаточной для того, чтобы следующий блок успел прочитаться с винта.

Я еще до флэшки не дошел, пока только с сата винчестерами балуюсь. И до FILE_FLAG_NO_BUFFERING тоже еще не добрался. Рихтера уже начал читать. Очень доходчиво пишет, респект ему.

Чтобы было с чем сравнивать, я сделал эталон:
Использую виндовый буфер, применяю FILE_FLAG_SEQUENTIAL_SCAN, принудительно сбрасываю буфера по очереди после того, как вся группа файлов формально скопируется. Недостаток этого метода в том, что винда сбрасывает буфера когда захочет и делает это параллельно, это заметно снижает скорость записи на диск. Тут я ничего поделать не могу. Алгоритм копирования тут особого значения не имеет, поскольку запись идет всегда в память и начинает задерживаться только когда буфер переполняется.

С этим эталоном я сравниваю свой алгоритм:
Чтение с использованием буфера, запись - "через буфер" (FILE_FLAG_WRITE_THROUGH) алгоритм для одного жесткого диска - один поток, один блок, для разных дисков - два потока, два блока. Играю размерами блоков, вижу, что чем больше, тем лучше. 64 МБ - самое то. У эталона выигрываю 8% на одном диске и 15% на разных дисках.
Это я сделал, потому что думал, что винда правильно и качественно сбрасывает буфера. Кто ей мешает, например, использовать для этого тот же алгоритм, что и в FILE_FLAG_NO_BUFFERING, и делать все последовательно? Но нет.

Пока еще у меня все сырое, но буду держать вас в курсе.
:)
вчера, 14:22    [21789636]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный размер блока при записи файла на флэшку  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14124
Набросал тут мысли по поводу:

Что зависит от программиста:

Алгоритм копирования:

  • один поток, один блок (полезно для копирования на тот же диск)
  • два потока, несколько блоков (для копирования на другой диск)

    Соответственно, можно играть с размерками блоков и их количеством. Можно копировать файлы с помощью соответствующего виндового диалога

    Способы открытия файлов:

  • для чтения: с буфером, без буфера
  • для записи: с буфером, "через буфер", без буфера

    Для вариантов с буфером полезен флаг FILE_FLAG_SEQUENTIAL_SCAN, при использовании буфера можно принудительно сбрасывать буфера на диск, можно не сбрасывать.


    Специфика окружения, от которой может зависеть выбор алгоритма и способа открытия файлов:

    Источник и целевой файлы могут находиться

  • на одном физическом носителе
  • на разных носителях


    Источник и целевой файлы могут находиться

  • на жестком диске
  • на твердотельном накопителе
  • на RAID массиве
  • на компакт, DVD диске
  • на съемном флэш-накопителе (для которого винда либо включила буферизацию, либо нет)
  • в локальной сети
  • на подключенном к компьютеру смартфоне (носители которого либо распознаются системой как диски, либо нет)

    Носители могут иметь различные

  • файловые системы
  • размеры сектора
  • размеры кластера

    Про сектора наверное, можно забыть и оперировать только размерами кластера (подгонять под них размеры блоков)

    Продвинутость пользователя
    Одного пользователя можно ненавязчиво спросить, расположены ли C:\ и D:\ на одном HDD, другого - нельзя.

    Ограничения операционной системы
    Еще не пробовал, но кажется, програмная попытка получить ответ на предыдущий вопрос под ограниченным в правах пользователем с включенным УАКом может потерпеть крах и / или испугать пользователя.
    Тоже самое с попыткой выяснить размер кластера и количество свободного места на диске (предполагаю)
  • вчера, 14:32    [21789639]     Ответить | Цитировать Сообщить модератору
     Re: Оптимальный размер блока при записи файла на флэшку  [new]
    Flying-home
    Member

    Откуда: nas.vrostove.net
    Сообщений: 14124
    Забыл сказать, что при копировании двумя потоками у меня упреждающее чтение работает и между файлами.
    То есть, когда записывающий поток заканчивает с одним файлом, читающий уже начинает со следующим.
    вчера, 14:46    [21789648]     Ответить | Цитировать Сообщить модератору
     Re: Оптимальный размер блока при записи файла на флэшку  [new]
    Flying-home
    Member

    Откуда: nas.vrostove.net
    Сообщений: 14124
    И еще я пока не вижу преимуществ overlapped I/O. Если у меня и так все длительные операции в отдельных потоках и у пользователя ГУИ не тормозит, зачем он может быть нужен?
    вчера, 14:54    [21789652]     Ответить | Цитировать Сообщить модератору
     Re: Оптимальный размер блока при записи файла на флэшку  [new]
    Leonid Kudryavtsev
    Member

    Откуда:
    Сообщений: 7299
    Flying-home
    И еще я пока не вижу преимуществ overlapped I/O. Если у меня и так все длительные операции в отдельных потоках и у пользователя ГУИ не тормозит, зачем он может быть нужен?

    AFAIK & IMHO overlapped IO позволяет уменьшить кол-во потоков. Если у тебя 2-3 потока - то все нормально, а если 200-300 потоков, то тогда уже на переключении потоков будет overhead.

    AFAIK & IMHO для обычных дисков, до 1 Mb рост скорости от увеличения буфера вполне чувствуется без всяких замеров, до 8 Mb уже не столь существеннено. Больше (для обычных дисков) может потребоваться только если чтение и запись идет одновременно с одного и того же диска (уменьшаем перемешение головок), но тут приделов нету. И до 512 Mb можно выгоду почувствовать

    На SSD-флешке головок нет, мне кажется 64 Mb тут сильно лишнее.
    вчера, 16:54    [21789723]     Ответить | Цитировать Сообщить модератору
     Re: Оптимальный размер блока при записи файла на флэшку  [new]
    Flying-home
    Member

    Откуда: nas.vrostove.net
    Сообщений: 14124
    Leonid Kudryavtsev
    мне кажется 64 Mb тут сильно лишнее.

    А чем плохо? Только тем, что перед копированием надо узнать, сколько некэшируемой оперативки может выделить система приложению? Может, действительно, три блока по 64 МБ будет тяжело?


    Leonid Kudryavtsev
    Если у тебя 2-3 потока - то все нормально, а если 200-300 потоков, то тогда уже на переключении потоков будет overhead.

    У меня всего 2 потока. Зачем больше? Для упреждающего чтения достаточно количество блоков увеличить.
    вчера, 18:36    [21789776]     Ответить | Цитировать Сообщить модератору
     Re: Оптимальный размер блока при записи файла на флэшку  [new]
    Flying-home
    Member

    Откуда: nas.vrostove.net
    Сообщений: 14124
    А, кстати.
    Рихтер пишет, что для выделения блоков использует VirtualAlloc, потому что так данные выравниваются в памяти правильно. А что, обычный GetMem не будет выравнивать?
    вчера, 18:39    [21789778]     Ответить | Цитировать Сообщить модератору
     Re: Оптимальный размер блока при записи файла на флэшку  [new]
    Flying-home
    Member

    Откуда: nas.vrostove.net
    Сообщений: 14124
    Flying-home
    на компакт, DVD диске

    Интерсно, как лучше с них читать? Думаю, с обычной буферизацией.

    Flying-home
    на подключенном к компьютеру смартфоне (носители которого либо распознаются системой как диски, либо нет)

    А кто-нибудь сталкивался с подобной задачей? Последние Андроиды как правило, не дают системе нормально примонтировать свои носители. Но в проводнике они видны (не как диски) и копировать файлы туда-сюда все-таки можно.
    вчера, 18:46    [21789780]     Ответить | Цитировать Сообщить модератору
     Re: Оптимальный размер блока при записи файла на флэшку  [new]
    Flying-home
    Member

    Откуда: nas.vrostove.net
    Сообщений: 14124
    Что самое смешное, что большинству пользователей вся эта оптимизация нафиг не нужна.

    Я, например, много лет назад заглянул в настройки Тоталкоммандера, увидел там разные размеры блока для одного и двух дисков, сказал "Ого", оставил все как есть и больше эти настройки не открывал. А теперь я копирую быстрее него. Как мне кажется, у Джислера во всех случаях однопоточное копирование. По крайней мере в шестой версии.
    вчера, 18:58    [21789785]     Ответить | Цитировать Сообщить модератору
     Re: Оптимальный размер блока при записи файла на флэшку  [new]
    mayton
    Member

    Откуда: loopback
    Сообщений: 38359
    Эту тему можно переносить в Windows.
    вчера, 21:35    [21789837]     Ответить | Цитировать Сообщить модератору
     Re: Оптимальный размер блока при записи файла на флэшку  [new]
    Dimitry Sibiryakov
    Member

    Откуда:
    Сообщений: 46770
    Flying-home
    И еще я пока не вижу преимуществ overlapped I/O. Если у меня и так все длительные операции в отдельных потоках и у пользователя ГУИ не тормозит, зачем он может быть нужен?

    Overlapped I/O нужна для того чтобы НЕ использовать потоки. Это древняя технология, появившаяся ещё до многопоточности.
    сегодня, 15:13    [21790330]     Ответить | Цитировать Сообщить модератору
     Re: Оптимальный размер блока при записи файла на флэшку  [new]
    Dima T
    Member

    Откуда:
    Сообщений: 13032
    Flying-home, почитай про "Порт завершения ввода/вывода" IO Completion Port
    сегодня, 15:32    [21790353]     Ответить | Цитировать Сообщить модератору
     Re: Оптимальный размер блока при записи файла на флэшку  [new]
    kealon(Ruslan)
    Member

    Откуда: Нижневартовск
    Сообщений: 3797
    Dimitry Sibiryakov
    Flying-home
    И еще я пока не вижу преимуществ overlapped I/O. Если у меня и так все длительные операции в отдельных потоках и у пользователя ГУИ не тормозит, зачем он может быть нужен?

    Overlapped I/O нужна для того чтобы НЕ использовать потоки. Это древняя технология, появившаяся ещё до многопоточности.
    да вроде одинаково они появились, иначе было просто нельзя мультимедиа и прочее фоновое поддерживать
    сегодня, 16:07    [21790386]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: 1 2      [все]
    Все форумы / Программирование Ответить