Я сделал несколько тестов и получил некоторые результаты. Тесты проводились на сетевой карте 100 Мбит/с и 1 Гбит/с. Исходная машина — сервер Win2K3 (SATA), а целевая машина — сервер Win2k3 (RAID 5).
Я провел 3 теста:
1) Network Reader -> Эта программа просто читает файлы по сети. Цель программы - найти максимальную скорость чтения n/w. Я выполняю НЕБУФЕРНОЕ чтение, используя CreateFile и ReadFile.
2) Disk Writer -> Эта программа измеряет скорость RAID 5 путем записи данных. Небуферизованные записи выполняются с помощью CreateFile и WriteFile.
3) Blitz Copy -> Эта программа является механизмом копирования файлов. Он копирует файлы по сети. Логика этой программы обсуждалась в начальном вопросе. Я использую синхронный ввод-вывод с чтением и записью NO_BUFFERING. Используемые API: CreateFile, ReadFile и WriteFile.
Ниже приведены результаты:
СЕТЕВОЙ ЧИТАТЕЛЬ:-
сетевой адаптер 100 Мбит/с
Потребовалось 148 344 мс, чтобы прочитать 768 МБ с размером фрагмента 8 КБ.
Потребовалось 89359 мс, чтобы прочитать 768 МБ с размером блока 64 КБ
Потребовалось 82 625 мс, чтобы прочитать 768 МБ с размером фрагмента 128 КБ
Потребовалось 79594 мс, чтобы прочитать 768 МБ с размером блока 256 КБ
Потребовалось 78687 мс, чтобы прочитать 768 МБ с размером блока 512 КБ
Потребовалось 79078 мс для чтения 768 МБ с размером фрагмента 1024 КБ
Потребовалось 78594 мс, чтобы прочитать 768 МБ с размером блока 2048 КБ
Потребовалось 78 406 мс для чтения 768 МБ с размером фрагмента 4096 КБ
Потребовалось 78281 мс для чтения 768 МБ с размером фрагмента 8192 КБ
сетевой адаптер 1 Гбит/с
Потребовалось 206 203 мс для чтения 5 120 МБ (5 ГБ) с размером фрагмента 8 КБ
Потребовалось 77860 мс, чтобы прочитать 5120 МБ с размером фрагмента 64 КБ
Потребовалось 74531 мс, чтобы прочитать 5120 МБ с размером блока 128 КБ
Потребовалось 68 656 мс для чтения 5 120 МБ с размером фрагмента 256 КБ
Потребовалось 64922 мс, чтобы прочитать 5120 МБ с размером фрагмента 512 КБ
Потребовалось 66312 мс, чтобы прочитать 5120 МБ с размером фрагмента 1024 КБ
Потребовалось 68 688 мс для чтения 5 120 МБ с размером фрагмента 2048 КБ
Потребовалось 64922 мс для чтения 5120 МБ с размером фрагмента 4096 КБ
Потребовалось 66047 мс, чтобы прочитать 5120 МБ с размером фрагмента 8192 КБ
ЗАПИСЬ НА ДИСК:-
Запись выполняется на RAID 5 с NO_BUFFERING и WRITE_THROUGH
Запись 2048 МБ (2 ГБ) данных с размером фрагмента 4 МБ заняла 68 328 мс.
Запись 2048 МБ данных с размером фрагмента 8 МБ заняла 55 985 мс.
Запись 2048 МБ данных с размером фрагмента 16 МБ заняла 49 569 мс.
Запись 2048 МБ данных с размером фрагмента 32 МБ заняла 47 281 мс.
Запись выполняется на RAID 5 только с NO_BUFFERING
Запись 2048 МБ (2 ГБ) данных с размером фрагмента 4 МБ заняла 57 484 мс.
Запись 2048 МБ данных с размером фрагмента 8 МБ заняла 52 594 мс.
Запись 2048 МБ данных с размером фрагмента 16 МБ заняла 49 125 мс.
Запись 2048 МБ данных с размером фрагмента 32 МБ заняла 46 360 мс.
Производительность записи снижается линейно по мере уменьшения размера фрагмента. А флаг WRITE_THROUGH приводит к снижению производительности
БЛИЦ-КОПИЯ:-
Сетевой адаптер 1 Гбит/с, копирование файлов объемом 60 ГБ с использованием NO_BUFFERING
Время, затраченное на полное копирование: 2236735 мс. То есть 37,2 мин. Скорость ~97 ГБ/пер.
сетевой адаптер 100 Мбит/с, копирование 60 ГБ файлов без буферизации
Время, затраченное на полное копирование: 7337219 мс. То есть 122 мин. Скорость ~30 ГБ/пер.
Я пытался использовать программу 10-FileCopy Джеффри Ритчера, которая использует Async-IO с NO_BUFFERING. Но результаты были плохими. Я предполагаю, что причина может быть в том, что размер фрагмента составляет 256 КБ ... 256 КБ записи на RAID 5 ужасно медленные.
Сравнение с robocopy:
100 Мбит/с NIC: Blitz Copy и robocopy выполняются со скоростью ~30 ГБ в час.
Сетевая карта со скоростью 1 Гбит/с: Blitz Copy работает со скоростью ~97 ГБ в час, а robocopy — с частотой ~50 ГБ в час.
person
ring0
schedule
02.02.2010