View previous topic :: View next topic |
Author |
Message |
Lazy Crazy

Joined: 16 Jan 2005 Posts: 400
|
(Separately) Posted: Tue Jan 09, 2007 00:35 Post subject: Параллельное выполнение пересекающихся задач |
|
|
Сомневаюсь, что такое вскоре может появиться в TC (или в чём-то ещё...), но, с другой стороны, с производительностью современных компов такое вполне возможно. Если коротко: когда необходимо выполнить несколько операций с очень большим количеством файлов, то хотелось бы выполнять их одновременно. Если эти операции связаны с разными файлами - проблем никаких и скорость ограничивается только скоростью работы хардов. А вот если ситуация, например, такая:
Необходимо выполнить две операции. Первая: скопировать файлы из папки A в папку B (все или по выбору - не суть важно). Вторая: перенести файлы из папки C в папку A. Причём некоторые из переносимых файлов имеют такие же имена, что и копируемые файлы и их необходимо заменить после копирования. Повторюсь - операции нужно выполнять параллельно для экономии времени (файлов-то много!). Само собой, программа, выполняющая эти операции должна отследить - можно ли уже заменять файл или отложить на потом - пока старая версия файла не будет скопирована. Вот и хотелось бы - составляешь последовательность команд, запускаешь на выполнение - а файлменеджер сам разбирается в какой последовательности что выполнять (ну или вначале анализирует на реальность такой задачи, задаёт уточняющие вопросы...).
Это меня далеко в будущее потянуло ли кто-то уже задумывался о реализации чего-то подобного? _________________
 |
|
Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Tue Jan 09, 2007 03:14 Post subject: |
|
|
Вопрос, конечно, интересный.
Первое. Можно ли привести хотя бы несколько серьезных доводов в пользу экономии времени? Ведь Windows, как ни крути, ось многозадачная. Запустил копирование и сиди занимайся своими делами, пока идет фоновое копирование. Закончилось одно (из А в В в примере), запустил другое. Если таких операций не две, а двадцать, нетрудно сляпать батник или скрипт, обеспечивающий именно последовательное выполнение задач. Файлов много? Ну и что? Если сильно много, оставил комп включенным на ночь, пущай копирует.
Я не утверждаю, что постановка задачи глупая, но я пока не вижу причин, когда может действительно потребоваться именно одновременное выполнение двух задач.
Второе. Пусть есть задача X и задача Y (не обязательно копирование, например, проверка на вирусы, числовой расчет, или оцифровка фильма). Вопрос - займет ли больше времени параллельное или последовательное выполнение этих задач? Ведь задача X требует памяти и загрузки процессора, снижая тем самым ресурс, доступный задаче Y. Значит, каждая из них будет выполняться медленнее, чем если бы работала одна. Если два землекопа должны вырыть колодец, то сильно сомневаюсь, что им быстрее будет работать вместе. Явно лучше копать попеременно.
Третье. Каков бы ни был алгоритм, при его малейшем сбое возможно затирание важных файлов. По мне так лучше потерять время, но зато быть уверенным, что информация цела.
Четвертое. В ТС есть замечательные опции копирования, скажем, "Auto-rename copied". Запустить в параллель оба процесса, а потом исправить некрасивые имена скопированных файлов.
Пятое. Стоит посмотреть опции xxcopy - скорее всего, там можно организовать искомое. _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
 |
Lazy Crazy

Joined: 16 Jan 2005 Posts: 400
|
(Separately) Posted: Wed Jan 17, 2007 02:14 Post subject: |
|
|
Вахмурка wrote: | Вопрос, конечно, интересный.
Первое. Можно ли привести хотя бы несколько серьезных доводов в пользу экономии времени? Ведь Windows, как ни крути, ось многозадачная. Запустил копирование и сиди занимайся своими делами, пока идет фоновое копирование. Закончилось одно (из А в В в примере), запустил другое. Если таких операций не две, а двадцать, нетрудно сляпать батник или скрипт, обеспечивающий именно последовательное выполнение задач. Файлов много? Ну и что? Если сильно много, оставил комп включенным на ночь, пущай копирует.
Я не утверждаю, что постановка задачи глупая, но я пока не вижу причин, когда может действительно потребоваться именно одновременное выполнение двух задач.
|
Не у всех нормированный рабочий день. Если обязанности работника заключаются в сидении на рабочем месте - тогда да, проблема отсутствует - запустил на обработку, покурил, почитал новости, и т.д. и т.д., а потом не спеша перешёл к другой задаче... Но с компьютерами, особенно последнее время, работают не только сисадмины и для очень многих "время" - не умозрительное понятие.
Я, допустим, редко сталкиваюсь с описанной проблемой и могу себе позволить "оставить на ночь". Но вот у довольно многих моих знакомых (глядя на которых я, собственно, и задумался об этом) ежедневно, и по несколько раз, возникает необходимость по возможности быстро обрабатывать большое количество файлов. Причём работают они в разных областях и их работа схожа только в этом.
Вахмурка wrote: |
Второе. Пусть есть задача X и задача Y (не обязательно копирование, например, проверка на вирусы, числовой расчет, или оцифровка фильма).
|
Именно копирование / перенос. Я бы не стал на форуме, посвящённом файлменеджеру, писать об оцифровке...
Вахмурка wrote: |
Третье. Каков бы ни был алгоритм, при его малейшем сбое возможно затирание важных файлов. По мне так лучше потерять время, но зато быть уверенным, что информация цела.
|
А каков должен быть источник сбоя?
Если исходить из возможности сбоя - компьютер лучше вообще не включать...
Вахмурка wrote: |
Четвертое. В ТС есть замечательные опции копирования, скажем, "Auto-rename copied". Запустить в параллель оба процесса, а потом исправить некрасивые имена скопированных файлов.
|
Это мысль. Но! Приведённый мной пример - это только пример и при небольшом его изменении (допустим, из папки С в папку А файлы не переносятся, а копируются) будет не экономия времени, а наоборот. Хотелось бы универсального решения, а не одноразового...
Вахмурка wrote: |
Пятое. Стоит посмотреть опции xxcopy - скорее всего, там можно организовать искомое. |
Возможно, но "наскоком" не нашёл. Да и, честно говоря, сомнительно - иначе бы это было бы широкоизвестно... _________________
 |
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
|
Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Thu Jan 18, 2007 21:23 Post subject: |
|
|
Quote: | Именно копирование / перенос | В том-то и фишка, что суть операции не имеет никакого значения. Прочти, пожалуйста, еще раз "второе" в моем посте выше. Я пытался сказать, что одновременное копирование может не только НЕ привести к УСКОРЕНИЮ, а привести к ЗАМЕДЛЕНИЮ. Операции, которые я привел в качестве примера, известны как весьма прожорливые по части оперативки и загрузки процессора. Для пробы запусти любую из этих операций (Х) и засеки время. Потом, после окончании X, запусти Y, и опять засеки, и просуммируй. А потом запусти X и Y параллельно. Возьмешься предсказать результат? Я - нет. Чем сложнее обе операции, тем больше будет разница.
Quote: | Если исходить из возможности сбоя - компьютер лучше вообще не включать | Мудро. Просто бывают операции (алгоритмы) с высокой надежностью, а бывают с низкой. Ковыряться в реестре, не очень твердо понимая, что делаешь, и не сделав предварительно резервной копии оного реестра - крайне ненадежно. Стирать файл - надежно, есть корзина и хренова гора утилит восстановления. А причины сбоев, пожалуйста:
1. Дефектный сектор диска;
2. Отключение питания (при отсутствии УПС);
3. Исчерпание места на диске (особенно при копировании больших объемов);
4. Уникодный (запрещенный или "опасный", типа точки) символ в имени;
5. Слишком длинное (около 250 символов) имя (давеча была дискуссия на эту тему);
6. Недоработанный алгоритм сравнения файлов (по имени/объему/содержимому);
7. Тривиальное "зависание" компа (из-за других программ/служб);
8. и т.д. Если кто-то скажет, что ни одна из означенных проблем перед ним никогда не вставала, я скажу, что он действительно никогда не включал компьютер).
Quote: | Да и, честно говоря, сомнительно - иначе бы это было бы широкоизвестно... | Совершенно не согласен. Ни один программист не возьмется писать задачу, таящую уйму потенциальных и кинетических опасностей для пользователя, при этом не давая НИ ОДНОГО преимущества (которые были предметом моего первого вопроса выше).
То, что таких программ нет, говорит скорее как раз о том, что ты - единственный человек, которому это пришло в голову. _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
 |
Lazy Crazy

Joined: 16 Jan 2005 Posts: 400
|
(Separately) Posted: Fri Jan 19, 2007 02:49 Post subject: |
|
|
Вахмурка wrote: | Quote: | Именно копирование / перенос | В том-то и фишка, что суть операции не имеет никакого значения. Прочти, пожалуйста, еще раз "второе" в моем посте выше. Я пытался сказать, что одновременное копирование может не только НЕ привести к УСКОРЕНИЮ, а привести к ЗАМЕДЛЕНИЮ. Операции, которые я привел в качестве примера, известны как весьма прожорливые по части оперативки и загрузки процессора. Для пробы запусти любую из этих операций (Х) и засеки время. Потом, после окончании X, запусти Y, и опять засеки, и просуммируй. А потом запусти X и Y параллельно. Возьмешься предсказать результат? Я - нет. Чем сложнее обе операции, тем больше будет разница.
|
Я про Фому - он про Ерёму... Я не собираюсь спорить ни о проверке на вирусы, ни о числовой расчете, ни о оцифровке фильма. В этих случаях ты абсолютно прав и это не имеет абсолютно ничего общего с тем, о чём я писал! Как ты правильно меня процитировал - речь только о файловых операциях. Конечно, если эти операции будут совершаться на одних и тех же дисках, они будут идти медленней, чем по отдельности - но человеку ждать не придётся! Запустил на выполнение - и пошёл заниматься другими делами.
Вахмурка wrote: |
Quote: | Если исходить из возможности сбоя - компьютер лучше вообще не включать | Мудро. Просто бывают операции (алгоритмы) с высокой надежностью, а бывают с низкой. Ковыряться в реестре, не очень твердо понимая, что делаешь, и не сделав предварительно резервной копии оного реестра - крайне ненадежно. Стирать файл - надежно, есть корзина и хренова гора утилит восстановления. А причины сбоев, пожалуйста:
1. Дефектный сектор диска;
2. Отключение питания (при отсутствии УПС);
3. Исчерпание места на диске (особенно при копировании больших объемов);
4. Уникодный (запрещенный или "опасный", типа точки) символ в имени;
5. Слишком длинное (около 250 символов) имя (давеча была дискуссия на эту тему);
6. Недоработанный алгоритм сравнения файлов (по имени/объему/содержимому);
7. Тривиальное "зависание" компа (из-за других программ/служб);
8. и т.д. Если кто-то скажет, что ни одна из означенных проблем перед ним никогда не вставала, я скажу, что он действительно никогда не включал компьютер).
|
Уже начинаю сомневаться - может, я действительно никогда не включал его??? Честно, уже не помню, когда меня что-то из этого списка беспокоило... Ну кроме восьмого пункта...
Если серьёзно - что-то возможно, что-то немного притянуто за уши - поэтому в первом посте я и писал про "анализирует на реальность"...
Вахмурка wrote: |
Quote: | Да и, честно говоря, сомнительно - иначе бы это было бы широкоизвестно... | Совершенно не согласен. Ни один программист не возьмется писать задачу, таящую уйму потенциальных и кинетических опасностей для пользователя, при этом не давая НИ ОДНОГО преимущества (которые были предметом моего первого вопроса выше).
То, что таких программ нет, говорит скорее как раз о том, что ты - единственный человек, которому это пришло в голову. |
Спасибо, мне уже говорили, что я гениален...
Если суммировать вышесказанное - потенциальные проблемы возможны, кто бы спорил, но есть большое количество программ, при работе которых опасности гораздо больше.
С другой стороны - возможно для тебя освобождённое время не является ценностью, но многие с тобой не согласятся. Контролировать самому всё и вся - сомнительное удовольствие, особенно если вспомнить, что речь о работе за компьютером, который, вроде как, должен освобождать человека от рутинной работы.
Если же представить действительно сумасбродные идеи, то... ну, допустим, представим такое:
берём микрофон и говорим ТС - "скопируй-ка то, что я переписывал то ли 15, то ли 16 числа с такого-то ftp в папку, куда я обычно копирую музыку, за исключением песен с альбомов до 2005 года записи (посмотришь в интернете)..." Кстати, такое мне не сейчас захотелось; что-то подобное приходило в голову (гарантирую, не только мне! ) лет пятнадцать назад... За это время мы вряд ли приблизились к такой работе. А вот заглавная задача, возможно, созрела...  _________________
 |
|
Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Fri Jan 19, 2007 03:20 Post subject: |
|
|
Мне бы хотелось, чтобы наши коллеги высказались по поводу проблемы, которую ты поднял, а я поставил. Итак, вычленяю:
Пусть есть задача X и задача Y. Машинное время выполнения только задачи X равно t(X). Аналогично, для задачи Y машинное время t(Y). Предполагается, что t(X) имеет тот же порядок, что и t(Y). Машинное время одновременного выполнения задач X и Y равно t(X+Y). Вопрос: как соотносятся
t(X)+t(Y) и t(X+Y)?
В частном случае задачи X и Y - копирование большого (порядка десятков гектар) объема файлов.
Хотелось бы послушать аргументированные мнения наших мэтров по поставленной задаче. Если кого-то интересует мое мнение, то я отвечу, что теоретический ответ на вопрос мне не под силу, а на эксперимент нет ни времени, ни желания. Интуитивно мне кажется, что в неравенстве выше знак "<". Возможно, я не прав.
Если знак только ">" или "<", то вопрос закрыт. А вот если знающие люди скажут "зависит от...", то хотелось бы знать, от чего именно. _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
 |
alask1
Joined: 18 Jan 2007 Posts: 4 Location: Н. Новгород
|
(Separately) Posted: Fri Jan 19, 2007 11:21 Post subject: |
|
|
Вахмурка wrote: | Мне бы хотелось, чтобы наши коллеги высказались по поводу проблемы, которую ты поднял, а я поставил. Итак, вычленяю:
[b]Пусть есть задача X и задача Y. Машинное время выполнения только задачи X равно t(X). ... порезано .... Возможно, я не прав.
|
Думаю, что прав, но просто слишком узко на вопрос смотришь.
Не нужны Х-ы и Y-и, и не нужно параллельное копирование, тем более, что оно без вопросов медленнее, чем последовательное только по причине хардварной (на одном SATA/IDE диске будет точно медленнее в разы, да и на RAID-5 SATA-шном из 4-х дисков не заметно увеличения скорости при параллельном копировании).
Основная проблема в том, что у totalcmd нет встроенного планировщика задач по использованию всех его функций и, в частности, по копированию файлов. Ведь далеко не все пользователи умеют bat-файлы писать, да, честно говоря, и мне лениво было бы это часто делать. Гораздо проще указать в планировщике задач что куда копировать и в какой последовательности, и там же галочек наставить чтобы перезаписывать или нет, или переименовывать, и т.п. (желательна также галочка выключения компа после...) И всё, можно идти заниматься другими делами... _________________ Александр |
|
Back to top |
|
 |
Zorro

Joined: 17 Feb 2005 Posts: 322 Location: Орел-Москва
|
(Separately) Posted: Fri Jan 19, 2007 11:32 Post subject: |
|
|
Не знаю, как всякие расчеты, но чисто субъективно я замечал, что если например копировать данные с одного диска на другой и обновременно наоборот, то это получается гораздо медленней, чем последовательно. Один раз это делал с флешкой, так после этого ее пришлось форматировать, больше не рискую. _________________ Приключение — это когда ковыляешь по грязи и снегу, страдая от язв на ногах, глистов, дизентерии и голода, а тебя преследуют те, кто твердо настроен тебя как минимум убить.
Sysadminz.Ru |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6193 Location: Москва
|
(Separately) Posted: Fri Jan 19, 2007 13:07 Post subject: |
|
|
alask1 wrote: | Основная проблема в том, что у totalcmd нет встроенного планировщика задач по использованию всех его функций и, в частности, по копированию файлов. |
А Диспетчер фоновой пересылки на что? Не для всех функций, конечно, но как раз для копирования... _________________ Почему же, ё-моё, ты нигде не пишешь "ё"?
Last edited by CaptainFlint on Fri Jan 19, 2007 13:09; edited 1 time in total |
|
Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Fri Jan 19, 2007 13:08 Post subject: |
|
|
2alask1
Я с тобой полностью согласен, но есть некая зависимость: если перед кем-то (в нашем случае Lazy Crazy) встала нетривиальная задача, которую никто не решал, то приходится либо мириться с отсутствием ее решения, либо решать ее самому. Именно это соображение сподвигает на изучение батников и скриптов.
2Zorro
+ _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
 |
alask1
Joined: 18 Jan 2007 Posts: 4 Location: Н. Новгород
|
(Separately) Posted: Fri Jan 19, 2007 16:35 Post subject: |
|
|
CaptainFlint wrote: | А Диспетчер фоновой пересылки на что? Не для всех функций, конечно, но как раз для копирования... |
Пардон, пользуюсь Totalcmd с 3-ей версии, привык всегда пользоваться для управления только мышкой, у меня даже панелька функциональных клавиш убрана. Значит за это время я просто не заметил как господин Гислер шпионским образом улучшил жизнь клавишников, сделав доступной кнопочку "F2 в очередь" только для тех кто пользуется кнопкой F5, а для нас мышатников такой опции нигде нет, хотя... взглянув попристальнее нашёл её в списке внутренних команд Как и в случае с синхронизацией каталогов самые вкусные вещи в totalcmd спрятаны так, что заранее не зная не найдёшь. К примеру сама синхронизация в меню появилась далеко не сразу, сначала она вылежала положенный срок в списке внутренних команд. Похоже и здесь история повторяется с Диспетчером фоновой пересылки засунутым почему-то в меню FTP.
И опять же возвращаясь к цитате CaptainFlint'а добавлю, что опций в Диспетчере кроме ограничения скорости никаких нет. Ни тебе расписания, ни кнопок снятия ограничений на перезапись всяких R/O, ни, тем более, галочки выключения компа после окончания всего процесса. _________________ Александр |
|
Back to top |
|
 |
Yams

Joined: 17 Oct 2005 Posts: 115 Location: Тверь
|
(Separately) Posted: Fri Jan 19, 2007 22:10 Post subject: |
|
|
Небольшой оффтоп:
Quote: | Вопрос: как соотносятся t(X)+t(Y) и t(X+Y)? |
Как ни странно, но неравенство на современных компьютерах будет вот таким вот: t(X)+t(Y) > t(X+Y)
Поясню. Как вводное, прописные истины о зависимостях: скорость копирования зависит от железа и от операционной системы. От железа - насколько быстро процессор прогонит через себя информацию, насколько быстро раскрутится диск, и т.д. От операционки - как она по-умному использует предоставленные ей ресурсы.
Так вот, для WinXP я лично заметил такую интересную вещь: в случае выполнения одной задачи ось загружает процессор на 80-90%. Видимо, 10% оставляет для реагирования на пользовательские действия. В случае выполнения двух операций загрузка достигает 100% в случае, если пользователь не трогает клаву/мышь. Как только начинаю возить мышью по экрану, общий процент падает до 80-90%. Использовал Process Explorer, WinXPSP2. Процессы, которые я запускал, совершенно различные, но файловые: запись на ДВД, копирование/перенос, поиск тулсой дубликатов изображений и т.п.
Кроме того, WinXP отвратительно работает с двухъядерниками: она не умеет запускать одну программу сразу на двух ядрах. Две на двух - пожалуйста, а вот распараллелить потоки одной программы на два ядра она не умеет. Тестировал при помощи Тотала на машине друга, результат - всегда 50% загрузка на 2, 3 и более процессах копирования. Здесь могу ошибаться!!! Проверял только на одной машине
По поводу неравенства пояснение: для пользователя совместный процесс будет длиться конечно же медленней, ежели он будет делать это же пошагово. Это уже психология, а не работа компа Но в реальности быстрее будут проходить именно два одновременно работающих процесса, а не идущие друг за другом.
Чтобы не совсем оффтоп:
На мой взгляд, идеи с .bat-файлом или переименованием файла при копировании и есть решение искомой задачи. _________________ In Pascal we trust |
|
Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Fri Jan 19, 2007 22:30 Post subject: |
|
|
alask1 wrote: | самые вкусные вещи в totalcmd спрятаны так, что заранее не зная не найдёшь | Дык, на вкус и цвет... Одному одно кажется вкусным, другому - другое. Все полтыщи команд в главное меню не выведешь, хотя существуют так называемые "расширенные меню", и никто не мешает их искать, скачивать и прописывать. Кроме того, есть файл totalcmd.inc, который никто не запрещает просто прочитать. Кстати, и history.txt тоже позволяет узнать много нового. То есть если не пытаться узнать, то и не узнаешь ничего.
2Yams
Интересные и неожиданные результаты. Любопытно будет узнать, что по данному поводу думают другие. _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
 |
Worros
Joined: 19 Jan 2007 Posts: 1123
|
(Separately) Posted: Sat Jan 20, 2007 00:37 Post subject: |
|
|
Вахмурка wrote: | Если знак только ">" или "<", то вопрос закрыт. А вот если знающие люди скажут "зависит от...", то хотелось бы знать, от чего именно. |
Зависит от...того,что и куда копируется/перемещается. Если на компе несколько дисков и писать попарно,то конечно же лучше впараллель, в большинстве остальных случаев-последовательно. Я проверял экспериментально. |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|