Давно хотел оценить количественно скорость работы накопителей в ОС DSDOS, и наконец-то, что называется, дошли руки.
Для удобства была создана утилита генерации тестовых файлов:FILEGEN$
Утилита FILEGEN$ позволяет создавать на целевом диске произвольное количество тестовых файлов определённого размера. Также возможно групповое удаление тестовых файлов, созданных утилитой ранее.
Параметры генерации задаются с помощью командной строки. Краткая справка выводится при запуске утилиты без параметров:
Подробности в сопроводительном текстовом файле помощи - FLGEN.HP
[свернуть]
Измерения проводились под ОС версии 3.88, на двух платформах:
1) "ОРИОН-128 рев.512" (ЦП ВМ80А, ОЗУ 512Кб, квазидиск 360Кб, НЖМД через переходник на порт пользователя #F6, виртуальный диск на 16C550 @ 115200 Бод);
2) "ОРИОН-ПРО v3.10F" (ЦП Z80B*, ОЗУ 512Кб, квазидиск 360Кб, НЖМД по схемотехнике NEMO-IDE, виртуальный диск на 82C51A @ 115200 Бод).
__________________________________________________ ___________________________________
* В двух программно-аппаратных конфигурациях: CLK=2,5МГц и CLK=10МГц.
Цели исследования:
- оценка реальной (боевой) скорости работы с файлами;
- сравнение скоростей основных быстрых накопителей;
- оценка вклада быстродействия ЦП, интерфейса накопителя, алгоритмов работы ОС.
Полный протокол измерений собран в этой таблице.
Измерения на ОРИОН-ПРО в конфигурации "CLK=2,5МГц" производились фактически для сравнения двух типов КНЖМД: NEMO_IDE vs. ВВ55_IDE-затычка.
Все виды тестов проводились в двух вариантах:
1) Обработка 253-х тестовых файлов, каждый размером 512 байт;
2) Обработка 4-х тестовых файлов, каждый размером 32768 байт;
В обоих случаях общий объём полезной информации примерно одинаковый - около 128 Кб. В первом случае добавляется (ощутимый) вклад операций с файловой системой (далее - ФС), во втором случае им можно пренебречь - измеряется фактически чистая скорость переноса полезной информации (содержимого файлов).
Итак, результаты.
Безусловный лидер по скорости во всех видах состязаний, разумеется, квазидиск [B:]:
Запись на диск 4-х файлов по 32Кб: 2 сек / 3 сек / менее 1 сек *
Запись на диск 253-х файлов по 512 байт: 20 сек / 22 сек / 9 сек **
Чтение с диска 4-х файлов по 32Кб: 2 сек / 2 сек / менее 1 сек
Чтение с диска 253-х файлов по 512 байт: 20 сек / 20 сек / 8 сек
Удаление с диска 4-х файлов: 0 сек / 0 сек / 0 сек ***
Удаление с диска 253-х файлов: 12 сек / 13 сек / 6 сек
__________________________________________________ __________________________________________________ _____________
* замеры производились вручную с использованием секундомера, точность +/-0,5 сек.
** указаны значения для трёх конфигураций: ОРИОН-128@2,5МГц / ОРИОН-ПРО@2,5МГц / ОРИОН-128@10МГц, соответственно.
*** слишком быстро, доля секунды, вручную измерить не представляется возможным!
Характерные особенности:
- при обслуживании ФС отсутствуют операции записи/чтения каталога диска;
- скорость записи/чтения информации максимальная (определяется скоростью работы МПС);
- при записи/чтении данных используются ускоренные алгоритмы с использованием операций со стеком;
- размер кластера 256 байт.
Резюме: на ПРК с тактовой частотой 2,5 МГц чистый битрейт чтения/записи данных составляет около 64 Кб/сек,
при "нарезке" данных файлами малого объёма на первый план выходит обработка ФС (поиск файла в каталоге, поиск секторов в FAT), и скорость падает на порядок - около 6 Кб/с;
на ПРК с тактовой частотой 10 МГц (виртуально около 7 МГц, ибо вэйты при обращении к ОЗУ/ВУ) получается 128 Кб/с и 16 Кб/с, соответственно.
Из реальной практики: работаю в текстовом редакторе с большими исходниками (около 40 Кб), периодически сохраняюсь - жму Ctrl+S и тут же продолжаю печатать, т.е. пока палец перемещается к очередной клавише, комп успевает полностью перезаписать файл 40 Кб.
Второе место достаётся накопителю с IDE-интерфейсом (НЖМД, диск [C:]):
Запись на диск 4-х файлов по 32Кб: 10 сек / 3 сек / 2 сек
Запись на диск 253-х файлов по 512 байт: 3:25 сек / 1:13 сек / 31 сек
Чтение с диска 4-х файлов по 32Кб: 8 сек / 2 сек / 1 сек
Чтение с диска 253-х файлов по 512 байт: 21 сек / 19 сек / 8 сек
Удаление с диска 4-х файлов: 2 сек / 1 сек / 1 сек
Удаление с диска 253-х файлов: 2:23 сек / 57 сек / 24 сек
Характерные особенности:
- обслуживание ФС сопровождается операциями записи(каждый раз)/чтения(однократно) каталога диска + FAT (4+4=8 Кб);
- за один такт накопитель записывает/считывает два байта информации (определяется схемотехникой КНЖМД);
- при записи/чтении данных используются ускоренные алгоритмы с использованием операций со стеком;
- размер кластера 4096 байт.
Резюме: в случае применения КНЖМД по схемотехнике NEMO чистый битрейт чтения данных аналогичен квазидиску - около 64 Кб/с (@2,5МГц)!
Упрощённое подключение НЖМД через порт ВВ55 проигрывает по скорости чтения больших файлов аж в 4 раза, в случае большого кол-ва маленьких файлов битрейт аналогичен NEMO и квазидиску - около 6 Кб/с (@2,5МГц).
Чистый битрейт записи данных на NEMO примерно в 1,5 раза уступает чтению - 43 Кб/с (@2,5МГц), на ВВ55-переходнике в 5 раз - 13 Кб/с (@2,5МГц).
На ПРК с тактовой частотой 10 МГц и NEMO удаётся получить чистые 128 Кб/с (чтение) и 64 Кб/с (запись), соответственно. В случае "файлонарезки" показатели падают в 8 и в 15 раз, соответственно.
Невероятно печальные показатели на 2,5МГц-платформе с подключением НЖМД через ВВ55-переходник: многофайловая запись - 0,6 Кб/с (с NEMO в 3 раза быстрее - 1,8 Кб/с).
На третьем месте виртуальный диск [G:]:
Запись на диск 4-х файлов по 32Кб: 13 сек / 13 сек / 12 сек
Запись на диск 253-х файлов по 512 байт: 1:23 сек / 1:12 сек / 1:05 сек
Чтение с диска 4-х файлов по 32Кб: 13 сек / 12 сек / 12 сек
Чтение с диска 253-х файлов по 512 байт: 27 сек / 25 сек / 19 сек
Удаление с диска 4-х файлов: 0 сек / 0 сек / 0 сек *
Удаление с диска 253-х файлов: 58 сек / 50 сек / 50 сек
__________________________________________________ __________________________
* слишком быстро, доля секунды, вручную измерить не представляется возможным!
Характерные особенности:
- обслуживание ФС сопровождается операциями записи(каждый раз)/чтения(однократно) каталога диска (размер = кол-во файлов * 16 байт);
- линейная (бескластерная) организация хранения/передачи данных;
- скорость передачи данных определяется приемущественно скоростью работы COM-порта (тест проводился на максимальной - 115200 Бод);
Резюме: скорость многофайлового чтения на 2,5МГц-платформах приближается к таковой у НЖМД/квазидиска и составляет - 5 Кб/с.
Чистый битрейт чтения данных хуже NEMO/квазидиска в 6 раз - 11 Кб/с.
Чистый битрейт записи данных хуже НГМД (NEMO) в 4 раза - 9,8 Кб/с. Средний битрейт многофайловой записи - 1,7 Кб/с (меняется нелинейно с ростом кол-ва файлов в каталоге).
Тактовая частота ЦП практически не влияет на скорость чтения/записи файлов.
Кэширование каталога (чтение файлов).
НЖМД [C:]:
Чтение с диска 4-х файлов по 32Кб с кэшированием: 8 сек / 2 сек / 1 сек
Чтение с диска 4-х файлов по 32Кб без кэширования: 10 сек / 3 сек / 1 сек
Чтение с диска 253-х файлов по 512 байт с кэшированием: 21 сек / 19 сек / 8 сек
Чтение с диска 253-х файлов по 512 байт без кэширования: 2:16 сек / 45 сек / 19 сек
Резюме: очевидное приемущество кэширования каталога при многофайловых операциях - ускорение в 7 раз с ВВ55-переходником и в 3 раза с NEMO-IDE.
Виртуальный диск [G:]:
Чтение с диска 4-х файлов по 32Кб с кэшированием: 13 сек / 12 сек / 12 сек
Чтение с диска 4-х файлов по 32Кб без кэширования: 13 сек / 12 сек / 12 сек
Чтение с диска 253-х файлов по 512 байт с кэшированием: 27 сек / 25 сек / 19 сек
Чтение с диска 253-х файлов по 512 байт без кэширования: 2:04 сек / 1:57 сек / 1:51 сек
Резюме: также очевидное приемущество кэширования каталога при многофайловых операциях - ускорение в 5 раз.
Копирование файлов между дисками (в порядке убывания производительности).
1. НЖМД -> квазидиск:
4-х файлов по 32Кб: 10 сек / 5 сек / 2 сек
253-х файлов по 512 байт: 42 сек / 41 сек / 17 сек
Резюме: на 2,5МГц-системе с NEMO-IDE чистый битрейт около 26 Кб/с, многофайловый поток - 3 Кб/с,
увеличение такта ЦП до 10МГц увеличивает скорость примерно вдвое.
2. Квазидиск -> НЖМД:
4-х файлов по 32Кб: 13 сек / 5 сек / 2 сек
253-х файлов по 512 байт: 3:45 сек / 1:35 сек / 39 сек
Резюме: чистый битрейт аналогичен предыдущему варианту - около 26 Кб/с.
Падение скорости при многофайловой "нарезке" данных ощутимо больше: в 18 раз (против 8 раз в предыдущем),
что связано с отсутствием кэширования каталога при записи на НЖМД (на каждый записываемый файл размером 512 байт в нагрузку записывается каталог 8 Кб, и так 253 раза!).
3. Вирт. диск -> квазидиск:
4-х файлов по 32Кб: 15 сек / 14 сек / 13 сек
253-х файлов по 512 байт: 47 сек / 47 сек / 27 сек
Резюме: чистый битрейт около 9 Кб/с, многофайловый поток - 3 Кб/с
4. Квазидиск -> вирт. диск:
4-х файлов по 32Кб: 16 сек / 16 сек / 12 сек
253-х файлов по 512 байт: 1:32 сек / 1:30 сек / 1:12 сек
Резюме: чистый битрейт около 8 Кб/с, многофайловый поток - 1,4 Кб/с
"Просадка" многофайлового битрейта по сравнению с предыдущим вариантом вызвана добавлением пересылки каталога,
т.к. после записи файла в вирт.диск содержимое каталога меняется и Орион вынужден загружать каталог по-новой (в этом случае кэширование по сути не работает).
5. НЖМД -> вирт. диск:
4-х файлов по 32Кб: 23 сек / 15 сек / 13 сек
253-х файлов по 512 байт: 03:37 сек / 01:56 сек / 01:22 сек
Резюме: чистый битрейт около 9 Кб/с (NEMO-IDE) и 6 Кб/с (ВВ55-IDE).
С многофайловым потоком всё ощутимо хуже - 1,1 Кб/с и 0,6 Кб/с, соответственно.
Катастрофическое падение производительности связано с совмещением буфера каталогов дисков [C:] и [H:],
в следствие чего при обработке каждого файла производится два чтения и одна запись каталогов!
6. Вирт. диск -> НЖМД:
4-х файлов по 32Кб: 25 сек / 15 сек / 13 сек
253-х файлов по 512 байт: 7:25 сек / 3:38 сек / 02:37 сек
Резюме: чистый битрейт аналогичен предыдущему варианту - 9 Кб/с (NEMO-IDE) и 6 Кб/с (ВВ55-IDE).
С "файлонарезкой" всё ещё печальнее - 0,6 Кб/с и 0,3 Кб/с, соответственно.
В данном случае имеем самые невыгодные условия при обработке файла: чтение каталога вирт.диска (4 Кб) + чтение каталога НЖМД (8 Кб) + запись каталога НЖМД (8 Кб), итого к каждому файлу "прицеп" в 20 Кб.