Вопрос о копировании файлов Topic is solved

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
User avatar
Arris
Posts: 46
Joined: Mon 19 Dec, 2011 18:25
Has thanked: 3 times

Вопрос о копировании файлов

Post by Arris »

Дано:

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: Убрано спец. оформление Темы (Значок)
User avatar
HaRT
Moderator
Posts: 10863
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Вопрос о копировании файлов

Post by HaRT »

Какие настройки в диалоге копирования (лучше текстовым снимком в [ascii])?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4264
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Вопрос о копировании файлов

Post by buniak_a_h »

И, кстати о настройках: будет ли заметно быстрее, если отключить Show total copy progress indicator и Show copying time information?
User avatar
Arris
Posts: 46
Joined: Mon 19 Dec, 2011 18:25
Has thanked: 3 times

Вопрос о копировании файлов

Post by Arris »

HaRT wrote: Wed 26 May, 2021 01:07 Какие настройки в диалоге копирования (лучше текстовым снимком в [ascii])?
╔═══════════════════════════════ 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 ] ║ ╚════════════════════════════════════════════════════════════════════╝
╔═══════════════ System settings ════════════════╗ ║ [x] Delete to Recycle Bin ║ ║ [x] Use system copy routine ║ ║ [x] Copy files opened for writing ║ ║ [x] Scan symbolic links ║
Впрочем, как я уже говорил выше, use system copy routine практически не влияет. При включении первая-вторая сотня файлов копируется (субъективно) быстрее, а после ~500-го файла картина та же. То есть проблема не напрямую в копировании, а в какой-то задержке после каждой операции копирования.
User avatar
Arris
Posts: 46
Joined: Mon 19 Dec, 2011 18:25
Has thanked: 3 times

Вопрос о копировании файлов

Post by Arris »

buniak_a_h wrote: Wed 26 May, 2021 01:59 И, кстати о настройках: будет ли заметно быстрее, если отключить Show total copy progress indicator и Show copying time information
slow-mo наступает не после ~500 файла, а после ~700-го.

Через 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.
User avatar
Arris
Posts: 46
Joined: Mon 19 Dec, 2011 18:25
Has thanked: 3 times

Вопрос о копировании файлов

Post by Arris »

Я провел еще несколько экспериментов.

Сначала я сгенерил 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.
User avatar
buniak_a_h
Posts: 4264
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Вопрос о копировании файлов

Post by buniak_a_h »

Arris wrote: Wed 26 May, 2021 08:47 скорость копирования файлов мало коррелирует с размером копируемых файлов. И сильно коррелирует с количеством файлов в целевом каталоге
Это понятно было из Ваших роликов. Потому я и предложил попробовать без индикации. Ведь на неё тратится время с каждым файлом.
1. Увы, в ролике выше Вы отключили total индикацию, но оставили вторую настройку.
2. Ещё можно бы посмотреть, влияет ли настройка автообновления панелей (там их две). Возможно, ФАР перечитывает оглавление папки?
3. А если файлы не копируются (в целевой папке они уже есть и выбран режим skip all) - будет ли замедление?
4. С количеством файлов именно в целевой папке?
User avatar
Arris
Posts: 46
Joined: Mon 19 Dec, 2011 18:25
Has thanked: 3 times

Вопрос о копировании файлов

Post by Arris »

4. Да, именно с количеством в целевой папке, смотрите самое последнее видео.

2. Если и перечитывает - то не отображает пока активен диалог копирования. То есть если и перечитывает - то впустую.

1. Разве? Ок, я проверю.

3. Ок, я проверю тоже.
User avatar
Arris
Posts: 46
Joined: Mon 19 Dec, 2011 18:25
Has thanked: 3 times

Вопрос о копировании файлов

Post by Arris »

Я отключил все опции, которые могли бы (как мне кажется) влиять на копирование или отображение:
╔═══════════════ 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.
User avatar
Arris
Posts: 46
Joined: Mon 19 Dec, 2011 18:25
Has thanked: 3 times

Вопрос о копировании файлов

Post by Arris »

А вот
buniak_a_h wrote: Wed 26 May, 2021 10:04 3. А если файлы не копируются (в целевой папке они уже есть и выбран режим skip all) - будет ли замедление?
А вот тут всё очень интересно!

Если мы выбираем skip (all) - "копируются" файлы всё равно заметно медленнее, чем в том же тотале, но вот этого адского слоумо после 500 файла - нет.

Если мы выбираем overwrite (all) - они копируются поверх без слоумо. Фактически, глазками - скорость та же, что и если выбрать "skip".

Может быть проблема и не в обновлении, может быть проблема в создании файла на диске. Но почему у конкурентов такой проблемы нет?

Легаси-код?
User avatar
buniak_a_h
Posts: 4264
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Вопрос о копировании файлов

Post by buniak_a_h »

Arris, получается, что время тратится на проверку существования файла. И это делается перед копированием каждого файла. При skip all проверять надо, а при overwrite all - не требуется.
User avatar
Arris
Posts: 46
Joined: Mon 19 Dec, 2011 18:25
Has thanked: 3 times

Вопрос о копировании файлов

Post by Arris »

buniak_a_h wrote: Wed 26 May, 2021 13:05 Arris, получается, что время тратится на проверку существования файла. И это делается перед копированием каждого файла.
только, боюсь ,проверка существования делается не через `isExists = fopen(filename, 'r') !== NULL` , а чтением оглавления каталога и поиска в нем нужного элемента. Иначе я не могу объяснить такие тормоза (тем большие, чем больше файлов в целевом каталоге).

P.S. Впрочем, я полез читать сырцы и скажу честно - я не понял нихрена. И не понял, нахрена так сложно сделано...
Last edited by Arris on Wed 26 May, 2021 17:12, edited 1 time in total.
2useven10
Posts: 5231
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

Вопрос о копировании файлов

Post by 2useven10 »

Arris wrote: Wed 26 May, 2021 16:57 Впрочем, я полез читать сырцы и скажу честно - я не понял нихрена. И не понял, нахрена так сложно сделано...
viewtopic.php?p=116919#p116919
viewtopic.php?p=24910#p24910
... это далеко не всё, копир это одна большая проблема.
nioliz
Posts: 3
Joined: Mon 07 Aug, 2006 11:11
Location: Россия
Contact:

Вопрос о копировании файлов

Post by nioliz »

По-моему, проблема в 1173 строке кода :). Вот этой:

Code: Select all

// ПОКА! принудительно выставим обновление.
	// В последствии этот флаг будет выставляться в ShellCopy::CheckUpdatePanel()
	Flags|=FCOPY_UPDATEPPANEL;
И её связкой с 1226:

Code: Select all

// проверим "нужность" апдейта пассивной панели
		if (Flags&FCOPY_UPDATEPPANEL)
		{
			DestPanel->SortFileList(true);
			DestPanel->Update(UPDATE_KEEP_SELECTION|UPDATE_SECONDARY);
		}
К сожалению, у меня не получается настроить IDE так, чтобы Far вообще собирался потому, что я вообще не настоящий сварщик и на этих ваших сях пишу редко, для себя и потому у меня собираются только мои проекты и то только пока не поставлю новую версию Студии, поэтому исправить сам не могу. Если бы мне кто объяснил как его собрать один раз, я бы наверное даже подготовил комит для исправления этой ошибки... Эх, мечты, мечты...
-- Я всего лишь изложил свое ХО.
2useven10
Posts: 5231
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

Вопрос о копировании файлов

Post by 2useven10 »

nioliz wrote: Wed 26 May, 2021 20:31 По-моему, проблема в 1173 строке кода
Очень сомнительно, флаг используется 1 раз ещё до начала цикла копирования файлов.
2019 студией фар должен собираться без танцев с бубном.
Last edited by 2useven10 on Wed 26 May, 2021 21:03, edited 2 times in total.
Post Reply

Return to “Нужна помощь”