Вопрос о копировании файлов Topic is solved
Вопрос о копировании файлов
Дано:
FAR 3.0.5802.0 x64 / Win10
Сетевой диск, примонтированный командой net use, на стороне сервера - самба (smbd --version -> Version 4.12.5-Ubuntu), сеть гигабит.
Директория, 5000 файлов, 5.6 гб.
Проблема:
Копирование файлов из этого каталога (как и из любого каталога, где больше ~400 файлов) очень медленное. Очень-очень-очень медленное. Изменение режима копирования (use system copy routine or not - практически не влияет на результат).
Почему я считаю, что виноват FAR?
1. Сначала я грешил на самбу. Долго крутил её настройки. Корреляции не заметил.
2. Потом решил проверить, а как копируется тот же набор файлов другими файловыми менеджерами?
Midnight commander (windows) - ~ 7 минут
Total Commander - ~ 2 минуты
Robocopy - ~ 3 минуты
Проводник windows - ~ 2 минуты
FAR вне конкуренции - за 10 минут он скопировал меньше трети и скорость уменьшается по ходу процесса.
3. на всякий случай я проверил из из под линукса.
Midnight Commander + смонтированная CIFS папка показывает примерно тот же результат. Far2L (форк 2.0 ветки) показывает результат, аналогичный 3.x под виндой.
Отсюда я делаю вывод, что проблема:
- не в самбе
- не в операционной системе
- не в сервере
А где же?
Что делать и кто виноват?
P.S. Видео для наглядности: https://www.youtube.com/playlist?list=P ... OBdymNLZwy
FAR 3.0.5802.0 x64 / Win10
Сетевой диск, примонтированный командой net use, на стороне сервера - самба (smbd --version -> Version 4.12.5-Ubuntu), сеть гигабит.
Директория, 5000 файлов, 5.6 гб.
Проблема:
Копирование файлов из этого каталога (как и из любого каталога, где больше ~400 файлов) очень медленное. Очень-очень-очень медленное. Изменение режима копирования (use system copy routine or not - практически не влияет на результат).
Почему я считаю, что виноват FAR?
1. Сначала я грешил на самбу. Долго крутил её настройки. Корреляции не заметил.
2. Потом решил проверить, а как копируется тот же набор файлов другими файловыми менеджерами?
Midnight commander (windows) - ~ 7 минут
Total Commander - ~ 2 минуты
Robocopy - ~ 3 минуты
Проводник windows - ~ 2 минуты
FAR вне конкуренции - за 10 минут он скопировал меньше трети и скорость уменьшается по ходу процесса.
3. на всякий случай я проверил из из под линукса.
Midnight Commander + смонтированная CIFS папка показывает примерно тот же результат. Far2L (форк 2.0 ветки) показывает результат, аналогичный 3.x под виндой.
Отсюда я делаю вывод, что проблема:
- не в самбе
- не в операционной системе
- не в сервере
А где же?
Что делать и кто виноват?
P.S. Видео для наглядности: https://www.youtube.com/playlist?list=P ... OBdymNLZwy
Last edited by HaRT on Tue 08 Jun, 2021 01:47, edited 2 times in total.
Reason: Убрано спец. оформление Темы (Значок)
Reason: Убрано спец. оформление Темы (Значок)
- HaRT
- Moderator
- Posts: 10865
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Вопрос о копировании файлов
Какие настройки в диалоге копирования (лучше текстовым снимком в
[ascii]
)?Фар есть инструмент, а не нянька. © 2009 DrKnS
- buniak_a_h
- Posts: 4266
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Вопрос о копировании файлов
И, кстати о настройках: будет ли заметно быстрее, если отключить
Show total copy progress indicator
и Show copying time information
?Вопрос о копировании файлов
╔═══════════════════════════════ Copy ═══════════════════════════════╗ ║ Copy 5000 items to: ║ ║ Z:\1\ ↓║ ╟────────────────────────────────────────────────────────────────────╢ ║ Access rights: (•) Default ( ) Copy ( ) Inherit ║ ╟────────────────────────────────────────────────────────────────────╢ ║ Already existing files: Ask ↓║ ║ [ ] Preserve all timestamps ║ ║ [ ] Copy contents of symbolic links ║ ║ [ ] Process multiple destinations ║ ╟────────────────────────────────────────────────────────────────────╢ ║ [ ] Use filter ║ ╟────────────────────────────────────────────────────────────────────╢ ║ { Copy } [ Filter ] [ Cancel ] ║ ╚════════════════════════════════════════════════════════════════════╝
Впрочем, как я уже говорил выше, use system copy routine практически не влияет. При включении первая-вторая сотня файлов копируется (субъективно) быстрее, а после ~500-го файла картина та же. То есть проблема не напрямую в копировании, а в какой-то задержке после каждой операции копирования.╔═══════════════ System settings ════════════════╗ ║ [x] Delete to Recycle Bin ║ ║ [x] Use system copy routine ║ ║ [x] Copy files opened for writing ║ ║ [x] Scan symbolic links ║
Вопрос о копировании файлов
slow-mo наступает не после ~500 файла, а после ~700-го.buniak_a_h wrote: ↑Wed 26 May, 2021 01:59 И, кстати о настройках: будет ли заметно быстрее, если отключить Show total copy progress indicator и Show copying time information
Через 23 минуты скопировал примерно 2700 файлов, собственно: https://youtu.be/kpajTxlMJ2U
Отмечу: при копировании малого количества больших файлов проблемы не наблюдается:
(а копирование большого количества больших файлов не проверял, у меня нет такого количества свободного места )╔════════════════════════ Copy ════════════════════════╗ ║ Copying the file ║ ║ garpastum.2005.dvdrip.ac3.2180mb.by.riperrr.avi ║ ║ to ║ ║ Z:\1\garpastum.2005.dvdrip.ac3.2180mb.by.riperrr.avi ║ ║ ██████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 31% ║ ╟─────────────────────── Total ────────────────────────╢ ║ Files: 0 ║ ║ Bytes: 744 488 960 ║ ╟──────────────────────────────────────────────────────╢ ║ Time: 00:00:07 Remaining: 00:00:17 91,4 MB/s ║ ╚══════════════════════════════════════════════════════╝
Last edited by Arris on Wed 26 May, 2021 04:23, edited 1 time in total.
Вопрос о копировании файлов
Я провел еще несколько экспериментов.
Сначала я сгенерил 3 набора файлов:
for (( a = 1; a <5001 ; a++ )) do dd if=/dev/urandom of=$a.medium bs=256K count=1; done
for (( a = 1; a <5001 ; a++ )) do dd if=/dev/urandom of=$a.large bs=2M count=1; done
for (( a = 1; a <5001 ; a++ )) do touch $a.zero; done
То, что содержимое файлов достаточно случайно, я проверил упаковкой (rar a medium.rar -m5 -mde -s *), результат: размер архива 1 314 355 671 байт, размер исходных файлов 1 310 720 000, степень сжатия 0.
Перенес их на локальный диск и стал по-всякому копировать на сетевой диск:
https://www.youtube.com/watch?v=v4DYebPSwks
Здесь я копирую файлы в целевой каталог и в процессе копирования (когда вижу серьезное замедление скорости до - 1 файла за такт обновления экрана) - удаляю в целевом каталоге все файлы. Я наблюдаю резкий буст скорости копирования.
Хорошо, проверю, зависит ли что-нибудь от размера. Берем Total Commander и проверяем:
https://youtu.be/usDfPjzy1hY - копируем файлы 2мб. Скорость более чем приемлемая
https://youtu.be/pomBP0uLZ6w - копируем 256кб файлы. Скорость чуть хуже.
https://youtu.be/3bQIk5rIZUE - копируем файлы нулевого размера. Со свистом.
А теперь сделаем так:
- скопируем около 2 тыс файлов по 256кб в пустой каталог тоталом
- скопируем туда же энное количество 2-х мб файлов (и посмотрим глазками счетчик обработки файлов)
- скопируем туда энное количество нулевых файлов (и посмотрим глазками счетчик)
- удалим из целевого каталога файлы, оставим около 2000
- попробуем скопировать в непустой каталог файлы нулевого размера.
- ...
- ... впадаем в глубокую задумчивость
https://www.youtube.com/watch?v=m4cytl2QcuA
В общем, я делаю вывод, что скорость копирования файлов мало коррелирует с размером копируемых файлов. И сильно коррелирует с количеством файлов в целевом каталоге. Очень сильно.
Сначала я сгенерил 3 набора файлов:
for (( a = 1; a <5001 ; a++ )) do dd if=/dev/urandom of=$a.medium bs=256K count=1; done
for (( a = 1; a <5001 ; a++ )) do dd if=/dev/urandom of=$a.large bs=2M count=1; done
for (( a = 1; a <5001 ; a++ )) do touch $a.zero; done
То, что содержимое файлов достаточно случайно, я проверил упаковкой (rar a medium.rar -m5 -mde -s *), результат: размер архива 1 314 355 671 байт, размер исходных файлов 1 310 720 000, степень сжатия 0.
Перенес их на локальный диск и стал по-всякому копировать на сетевой диск:
https://www.youtube.com/watch?v=v4DYebPSwks
Здесь я копирую файлы в целевой каталог и в процессе копирования (когда вижу серьезное замедление скорости до - 1 файла за такт обновления экрана) - удаляю в целевом каталоге все файлы. Я наблюдаю резкий буст скорости копирования.
Хорошо, проверю, зависит ли что-нибудь от размера. Берем Total Commander и проверяем:
https://youtu.be/usDfPjzy1hY - копируем файлы 2мб. Скорость более чем приемлемая
https://youtu.be/pomBP0uLZ6w - копируем 256кб файлы. Скорость чуть хуже.
https://youtu.be/3bQIk5rIZUE - копируем файлы нулевого размера. Со свистом.
А теперь сделаем так:
- скопируем около 2 тыс файлов по 256кб в пустой каталог тоталом
- скопируем туда же энное количество 2-х мб файлов (и посмотрим глазками счетчик обработки файлов)
- скопируем туда энное количество нулевых файлов (и посмотрим глазками счетчик)
- удалим из целевого каталога файлы, оставим около 2000
- попробуем скопировать в непустой каталог файлы нулевого размера.
- ...
- ... впадаем в глубокую задумчивость
https://www.youtube.com/watch?v=m4cytl2QcuA
В общем, я делаю вывод, что скорость копирования файлов мало коррелирует с размером копируемых файлов. И сильно коррелирует с количеством файлов в целевом каталоге. Очень сильно.
Last edited by Arris on Wed 26 May, 2021 08:48, edited 1 time in total.
- buniak_a_h
- Posts: 4266
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Вопрос о копировании файлов
Это понятно было из Ваших роликов. Потому я и предложил попробовать без индикации. Ведь на неё тратится время с каждым файлом.
1. Увы, в ролике выше Вы отключили total индикацию, но оставили вторую настройку.
2. Ещё можно бы посмотреть, влияет ли настройка автообновления панелей (там их две). Возможно, ФАР перечитывает оглавление папки?
3. А если файлы не копируются (в целевой папке они уже есть и выбран режим skip all) - будет ли замедление?
4. С количеством файлов именно в целевой папке?
Вопрос о копировании файлов
4. Да, именно с количеством в целевой папке, смотрите самое последнее видео.
2. Если и перечитывает - то не отображает пока активен диалог копирования. То есть если и перечитывает - то впустую.
1. Разве? Ок, я проверю.
3. Ок, я проверю тоже.
2. Если и перечитывает - то не отображает пока активен диалог копирования. То есть если и перечитывает - то впустую.
1. Разве? Ок, я проверю.
3. Ок, я проверю тоже.
Вопрос о копировании файлов
Я отключил все опции, которые могли бы (как мне кажется) влиять на копирование или отображение:
И, если в папке уже есть 5000 файлов, новые в неё копируются адски медленно.
╔═══════════════ System settings ════════════════╗ ║ [x] Delete to Recycle Bin ║ ║ [x] Use system copy routine ║ ║ [x] Copy files opened for writing ║ ║ [x] Scan symbolic links ║ ║ [x] Update panels only when Far is active ║ ║ [x] Save commands history ║ ║ [x] Save folders history ║ ║ [x] Save view and edit history ║ ║ [x] Use Windows registered types ║ ║ [ ] Automatic update of environment variables ║ ║ Request administrator rights: ║ ║ [x] For modification ║ ║ [x] For reading ║ ║ [x] Use additional privileges ║ ║ Sorting collation: linguistic ↓ ║ ║ [x] Treat digits as numbers ║ ║ [ ] Case sensitive ║ ║ [x] Auto save setup ║ ╟────────────────────────────────────────────────╢ ║ { OK } [ Cancel ] ║ ╚════════════════════════════════════════════════╝
╔══════════ Panel settings ═══════════╗ ║ [x] Show hidden and system files ║ ║ [x] Highlight files ║ ║ [x] Select folders ║ ║ [x] Right click selects files ║ ║ [ ] Sort folder names by extension ║ ║ [x] Allow reverse sort modes ║ ║ [x] Disable automatic panel update ║ ║ if object count exceeds 1 ║ ║ [ ] Network drives autorefresh ║ ╟─────────────────────────────────────╢ ║ [x] Show column titles ║ ║ [ ] Show status line ║ ║ [ ] Detect volume mount points ║ ║ [ ] Show files total information ║ ║ [ ] Show free size ║ ║ [ ] Show a scrollbar ║ ║ [ ] Show background screens number ║ ║ [ ] Show sort mode letter ║ ║ [ ] Show ".." in root folders ║ ╟─────────────────────────────────────╢ ║ { OK } [ Cancel ] ║ ╚═════════════════════════════════════╝
... и никаких изменений. Первая сотня файлов копируется быстро, а потом все медленнее и мееееедлеееенеееее...╔═══════════════ Interface settings ═══════════════╗ ║ [ ] Clock in panels ║ ║ [ ] Clock in viewer and editor ║ ║ [x] Mouse ║ ║ [x] Show key bar ║ ║ [ ] Always show the menu bar ║ ║ [ ] Screen saver ║ ║ 5 minutes ║ ║ [ ] Show total copy progress indicator ║ ║ [ ] Show copying time information ║ ║ [ ] Show total delete progress indicator ║ ║ [x] Use Ctrl+PgUp to change drive ║ ║ [ ] Use Virtual Terminal for rendering ║ ║ [ ] ClearType-friendly redraw (can be slow) ║ ║ [ ] Console icon: 0 ↓ ║ ║ [x] Alternate for Administrator ║ ║ Far window title addons: ║ ║ %Ver %Platform %Admin ║ ╟──────────────────────────────────────────────────╢ ║ { OK } [ Cancel ] ║ ╚══════════════════════════════════════════════════╝
И, если в папке уже есть 5000 файлов, новые в неё копируются адски медленно.
Last edited by Arris on Wed 26 May, 2021 12:41, edited 1 time in total.
Вопрос о копировании файлов
А вот
Если мы выбираем skip (all) - "копируются" файлы всё равно заметно медленнее, чем в том же тотале, но вот этого адского слоумо после 500 файла - нет.
Если мы выбираем overwrite (all) - они копируются поверх без слоумо. Фактически, глазками - скорость та же, что и если выбрать "skip".
Может быть проблема и не в обновлении, может быть проблема в создании файла на диске. Но почему у конкурентов такой проблемы нет?
Легаси-код?
А вот тут всё очень интересно!buniak_a_h wrote: ↑Wed 26 May, 2021 10:04 3. А если файлы не копируются (в целевой папке они уже есть и выбран режим skip all) - будет ли замедление?
Если мы выбираем skip (all) - "копируются" файлы всё равно заметно медленнее, чем в том же тотале, но вот этого адского слоумо после 500 файла - нет.
Если мы выбираем overwrite (all) - они копируются поверх без слоумо. Фактически, глазками - скорость та же, что и если выбрать "skip".
Может быть проблема и не в обновлении, может быть проблема в создании файла на диске. Но почему у конкурентов такой проблемы нет?
Легаси-код?
- buniak_a_h
- Posts: 4266
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Вопрос о копировании файлов
Arris, получается, что время тратится на проверку существования файла. И это делается перед копированием каждого файла. При skip all проверять надо, а при overwrite all - не требуется.
Вопрос о копировании файлов
только, боюсь ,проверка существования делается не через `isExists = fopen(filename, 'r') !== NULL` , а чтением оглавления каталога и поиска в нем нужного элемента. Иначе я не могу объяснить такие тормоза (тем большие, чем больше файлов в целевом каталоге).buniak_a_h wrote: ↑Wed 26 May, 2021 13:05 Arris, получается, что время тратится на проверку существования файла. И это делается перед копированием каждого файла.
P.S. Впрочем, я полез читать сырцы и скажу честно - я не понял нихрена. И не понял, нахрена так сложно сделано...
Last edited by Arris on Wed 26 May, 2021 17:12, edited 1 time in total.
Вопрос о копировании файлов
viewtopic.php?p=116919#p116919
viewtopic.php?p=24910#p24910
... это далеко не всё, копир это одна большая проблема.
Вопрос о копировании файлов
По-моему, проблема в 1173 строке кода . Вот этой:
И её связкой с 1226:
К сожалению, у меня не получается настроить IDE так, чтобы Far вообще собирался потому, что я вообще не настоящий сварщик и на этих ваших сях пишу редко, для себя и потому у меня собираются только мои проекты и то только пока не поставлю новую версию Студии, поэтому исправить сам не могу. Если бы мне кто объяснил как его собрать один раз, я бы наверное даже подготовил комит для исправления этой ошибки... Эх, мечты, мечты...
Code: Select all
// ПОКА! принудительно выставим обновление.
// В последствии этот флаг будет выставляться в ShellCopy::CheckUpdatePanel()
Flags|=FCOPY_UPDATEPPANEL;
Code: Select all
// проверим "нужность" апдейта пассивной панели
if (Flags&FCOPY_UPDATEPPANEL)
{
DestPanel->SortFileList(true);
DestPanel->Update(UPDATE_KEEP_SELECTION|UPDATE_SECONDARY);
}
-- Я всего лишь изложил свое ХО.
Вопрос о копировании файлов
Очень сомнительно, флаг используется 1 раз ещё до начала цикла копирования файлов.
2019 студией фар должен собираться без танцев с бубном.
Last edited by 2useven10 on Wed 26 May, 2021 21:03, edited 2 times in total.