Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка Windows 2000/XP/2003 (http://forum.oszone.net/forumdisplay.php?f=32)
-   -   [решено] Странные задержки при копировании на текстовом этапе (http://forum.oszone.net/showthread.php?t=87991)

haker-kirik 02-08-2007 17:34 622004

Странные задержки при копировании на текстовом этапе
 
Вчера я скачал оригинальный дистрибутив Windows XP SP2 "ru_winxp_pro_with_sp2_vl.iso". Начал ставить и обнаружил странную проблему. У меня на текстовом этапе начало замирать копирование файлов. Т.е. идет копирование и в определённых местах (на определённых файлах) паузы, т.е. никакого обращения ни к харду ни к диску не наблюдается. Паузы разные - от 2-3 секунд до 10-15. Причем постоянно повторяются длительность и момент этих пауз при каждой установке. Ставил на разных машинах - везде одно и тоже. Проверил все md5 и CRC32 каждого файла - всё сходится. Подскажите, что это может быть?

s127d 02-08-2007 17:46 622011

Чаще всего, просто копирует большие файлы, например такой, как DRIVER.CAB или sp2.cab

boss911 02-08-2007 18:32 622055

Цитата:

Цитата haker-kirik
"ru_winxp_pro_with_sp2_vl.iso"
У меня на текстовом этапе начало замирать копирование файлов.>>>

У меня также, бывает, замарает все на минуту, где-то посредине копирования файлов, потом резко стартует CD и пошло копирование. Все нормально, так у всех, где я ставил из своего дистрибутива.

haker-kirik 02-08-2007 21:17 622148

Цитата:

Цитата s127d
Чаще всего, просто копирует большие файлы, например такой, как DRIVER.CAB или sp2.cab >>>

Цитата:

Цитата haker-kirik
никакого обращения ни к харду ни к диску не наблюдается. >>>

boss911, у меня как раз где-то на 40-60% сильно начинает тормозить. Пауза в некоторых местах чуть-ли не после каждого файла. Вот несколько файлов, где у меня происходят самые большие задержки. Все они весят около 100 КБ и меньше:
kodak_dc.icm
riodrv.sys
nikedrv.sys
usrshuta.exe (у меня быстрее копируется DRIVER.CAB чем этот файл).

Я бы не поднимал этот вопрос, если бы у меня до этого не было еще одного дистрибутива, куда интегрированы сначала SP1, а потом SP2. Файлов на 30 больше, но копируется всё без каких-либо задержек (очень быстро). Что думаете по этому поводу?

EgOrus 02-08-2007 22:12 622164

haker-kirik
boss911
таже фигня и на мелких файлах, ставил на виртулаке винду с SP1 никаких задержек все махом пролетает, на SP2 даже "голом" появляются задержки, причем после внедрения UpdatePack'а тормоза проявляются сильнее, есть предположение что есть зависимость от степени сжатия CAB'ов

haker-kirik 02-08-2007 22:44 622172

EgOrus, дело в том, что у меня замирает установка преимущественно на тех файлах, которые находятся в DRIVER.CAB. Но это явно никак не связано с перепаковкой или чем-то еще. У меня есть дистрибутив, как я писал выше, где задержек вообще нет, и при интеграции туда UpdatePack'а они не пявляются. Пытаюсь вот определить где собака зарыта. Мож какой-то файл не подгружается, который нужен для быстрого копирования файлов на текстовом этапе или т.п. Я знаю такая фича может возникать, если ставить винду с DOS'а. Там при запуске winnt.exe не подгружается прога-резидент smartdrv.exe и копирование файлов на текстовом этапе оказывается очень медленным. Но тут же всё-таки родной setupldr.bin, так что тут что-то иное, но вот что... :search:

Только что подсчитал. У меня на виртуальной машине копирование файлов на текстовом этапе с использование моего старого дистрибутива занимает около 90 секунд. Т.е. молниеносно.

jameszero 02-08-2007 23:09 622178

Замечено, что ISO образы собраные разными программами из одного и того же дистрибутива имеют разную скорость копирования файлов, как из образа, так и будучи записанными на болванку. Довольно быстро копируются файлы из образа собранного EasyBoot, а с помощью nLite медленее. Вероятно, у каждой программы свои методы оптимизации расположения файлов.

haker-kirik
Просто пересоберите образ диска несколькими программами и найдите "наибыстрый" вариант.

haker-kirik 03-08-2007 01:38 622209

jameszero, перепакова разными методами (через Nero, UltraISO, EasyBoot, CDImage) дает один и тот же результат. Тут дело не в перепакове. Я вот что я проделал: создал копию оригинального ИСО. Скопировал от туда файлы DOSNET.INF и TXTSETUP.SIF в отдельную папку. Заменил все файлы в папке I386 файлами моего старого дистрибутива и наконец заменил скопированные ранее файлы DOSNET.INF и TXTSETUP.SIF из нового дистрибутива. В итоге я решил таким образом проверить, что имеено не хватает дистрибутиву для полного счасться. Т.к. файлы DOSNET.INF и TXTSETUP.SIF из оригинального дистрибутива, то копировались и загружались только нужные файлы. Так вот, все прошло гладко, вернее шустро, как и должно быть. Значит проблема заключается именно в какой-то программе, которая управляет копированием файлов на текстовом этапе установки. Осталось решить, какая именнно это прога...

Petya V4sechkin 03-08-2007 09:59 622325

Цитата:

Цитата haker-kirik
Тут дело не в перепакове.

Именно в ней и дело.
В параметрах, которые используются для упаковки Driver.cab. Конкретно параметр FolderSizeThreshold, см. Microsoft Cabinet Format:
Цитата:

Цитата MSDN
FolderSizeThreshold=size
Set the threshold size for the current folder.
Default: .Set MinMaxFolderSize=0 ; Default to the maximum cabinet size

Sets the threshold size for the current folder. When this threshold is exceeded, then the current folder is closed. If any more files are to be processed, they will go into a new folder. MakeCAB attempts to limit folders to the size specified by this variable, but in most cases folders will be a bit larger than this threshold.

If Cabinet is OFF, this variable is ignored. If size is 0, then the threshold is the same as the maximum cabinet size.

Folders are compression/encryption boundaries. The state of the compressor and cryptosystem are reset at folder boundaries. To access a file in a folder, the folder must be decrypted and decompressed starting from the front of the folder and continuing through to the desired file. Thus, smaller folder thresholds are appropriate for a layout where a small number of files needs to be randomly accessed quickly from a cabinet. On the other hand, larger folder thresholds permit the compressor to examine more data, and so generally yield better compression results. For a layout where the files will be accessed sequentially and most of the files will be accessed, a larger folder threshold is best.

В русской XP с микрософтской интеграцией SP2 размер Driver.cab = 63146062 байта, причем FolderSizeThreshold не определен - т. е. все 4434 файла в кабе внутри одной "папки" (контейнера), поэтому доступ к первому файлу (1394vdbg.sys) практически мгновенный, а к последнему (zlogic.cyz) самый медленный. В этом можно убедиться, открыв Driver.cab любым архиватором.

P. S. Я тоже интересовался этим вопросом, когда подбирал параметры для своего скрипта.

Petya V4sechkin 03-08-2007 10:47 622347

haker-kirik, в принципе, можете поиграть с этим скриптом:
Код:

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion

CD /D "%~dp0"
SetLocal EnableDelayedExpansion

If Exist Temp RD /S /Q Temp
MD Temp

Set CAB=DRIVER

Call :UnpackCab %CAB%
Call :RepackCab %CAB%
Exit

:UnpackCab
  MD Temp\%1
  Extrac32 /L "Temp\%1" /E %1.CAB >nul
GoTo :EOF

:RepackCab
  Echo Обновление %1.CAB. Подождите, пожалуйста.

  Attrib -R "%1.CAB"
  Set DDF=Temp\%1.DDF

  Echo .OPTION EXPLICIT >!DDF!
  Echo .Set InfFileName=NUL >>!DDF!
  Echo .Set RptFileName="Temp\%1.RPT" >>!DDF!
  Echo .Set DestinationDir= >>!DDF!
  Echo .Set CabinetName1="%1.CAB" >>!DDF!
  Echo .Set CabinetNameTemplate="%1*.CAB" >>!DDF!
  Echo .Set DiskDirectoryTemplate="%CD%" >>!DDF!
  Echo .Set UniqueFiles=Off >>!DDF!
  Echo .Set FolderSizeThreshold=2000000 >>!DDF!
  Echo .Set MaxDiskSize=0 >>!DDF!
  Echo .Set Cabinet=On >>!DDF!
  Echo .Set Compress=On >>!DDF!
  Echo .Set CompressionType=LZX >>!DDF!
  Echo .Set CompressionMemory=21 >>!DDF!

  Set CABLst=`Dir /B /O-E Temp\%1\*.* 2^>nul`
  For /F "UseBackQ Delims=" %%K In (!CABLst!) Do Echo "Temp\%1\%%K" "%%K" >>!DDF!
  Start "Перепаковка %1.CAB" /Wait MAKECAB.EXE /V1 /F !DDF!
GoTo :EOF

Сохранить с именем Repack.cmd в отдельную (пустую) папку, туда же скопировать DRIVER.CAB. В скрипте можно менять FolderSizeThreshold. В приведенном варианте (FolderSizeThreshold = 2000000) размер перепакованного DRIVER.CAB у меня получился на 2 метра больше исходного (65322886 байт), но с более быстрым доступом к файлам.

haker-kirik 03-08-2007 17:13 622608

Petya V4sechkin, ОГРОМНОЕ спасибо за объяснение и за скрипт - действительно, всё стало копироватся гораздо быстрее после перепаковки DRIVER.CAB. :yahoo:

sriver 04-08-2007 05:45 622781

И от меня спасибо, я думал это стандартная нерешаемая проблема :)

greg_b 27-09-2007 21:18 650702

Совершенно верно:

Цитата:

Цитата jameszero
Замечено, что ISO образы собраные разными программами из одного и того же дистрибутива имеют разную скорость копирования файлов, как из образа, так и будучи записанными на болванку. »

Программы создания iso-файлов используют оптимизацию по именам, расширениям, размеру, дате файла. Причем у всех это реализовано по-своему, сливал как-то один и тот же образ с помощью UltraISO и Alcohol120% - ultra слил минуты за 1,5 , а Alcohol - минуты четыре, настройки по режиму копирования одинаковые, скорость чтения 8х. Прожиг сделан Неро 6.6.0.15. Тест дисков с помощью Nero CD-DVD Speed - время тестирования поверности диска ultra - 2,45 , Alcohol - 2,10. Болванки одинаковые, из одной партии, скорость записи 8х. В чем прикол - время должнобыть почти одинаково.


Время: 02:50.

Время: 02:50.
© OSzone.net 2001-