Как измерить характеристики файлового (жесткого диска) ввода / вывода? - PullRequest
1 голос
/ 28 января 2011

Как измерить характеристики файлового (жесткого диска) ввода / вывода?Например, на машине с жестким диском (со скоростью X) и процессором i7 (или любым другим количеством ядер) и объемом оперативной памяти Y (с BIOS Z Hz), что будет (в ОС Windows):

  • Оптимальное количество файлов, которые могут быть записаны на HD параллельно?
  • Оптимальное количество файлов, которые могут быть прочитаны с HD параллельно?
  • Средства помощи файловой системыбыстрее писем.(Например: есть ли функция или инструмент, который позволяет вам записывать пакеты двоичных данных в разные сектора (или харды), а затем связывать их как файл? Я не знаю много о базовом файловом вводе / выводе в ОС. Но это было быразумно иметь такие инструменты!)
  • Если есть такие инструменты, как часть ранее, есть ли в .NET тоже?

Я хочу писать большие файлы (передаваемые через Интернетили другой источник) настолько быстро (и параллельно), насколько это возможно!Я кодирую это в C #.И это действует как менеджер загрузок;поэтому, если потоковая передача была прервана, она может продолжиться позже.

1 Ответ

3 голосов
/ 28 января 2011

Ответ (как часто) зависит от вашего использования.Вся операционная система представляет собой один большой компромисс между различными сценариями использования.Для файловой системы NTFS можно указать размер блока, установленный на 4 КБ, хранение файлов NTFS меньшим, чем размер блока в MTF, размер файлов, количество файлов, фрагментация и т. Д.

Если вы планируете писать большие файлы, тогдаразмер блока 64k может быть хорошим.Это если вы планируете читать большие объемы данных.Если вы читаете меньшие объемы данных, тогда меньшие размеры - это хорошо.ОС работает на страницах 4k, так что 4k это хорошо.Сжатие (и шифрование?), А также SQL и Exchange работают только на страницах 4k (iirc).

Если вы пишете небольшие файлы (<4k), они будут храниться внутри MFT, поэтому вам не нужносделать "экстра прыжок".Это особенно полезно в операциях записи (чтение может иметь кеширование MFT).MFT хранит файлы в последовательности (то есть блоки 1000-1010,2000-2010), поэтому фрагментация сделает MFT больше.Запись файлов на диск в параллель является одной из основных причин фрагментации, другая - удаление файлов.Вы можете предварительно выделить необходимый размер для файла, и Windows попытается найти подходящее место на диске для противодействия фрагментации.Существуют также программы дефрагментации в реальном времени, такие как <a href="http://www.oo-software.com/home/en/" rel="nofollow"> O & O Defrag .

. Windows отображает двоичный поток практически напрямую в физическое местоположение на диске, поэтому использование различных методов чтения / записи не дастзначительное повышение производительности, как и другие факторы.Для программ максимальной скорости используйте технику для прямого отображения памяти на диск.См. http://en.wikipedia.org/wiki/Memory-mapped_file

В Windows (в диспетчере устройств, жесткие диски) есть возможность увеличить кеширование на диске.Это опасно, так как ut может повредить файловую систему, если компьютер отключит экран или потеряет питание, но значительно повысит производительность при записи файлов меньшего размера (и при всех операциях записи).Если диск занят, это особенно ценно, так как время поиска уменьшится.В Windows используется так называемый алгоритм лифта, который в основном означает, что он перемещает головки жесткого диска по поверхности вперед и назад, обслуживая любое приложение в направлении, в котором он движется.

Надеюсь, это поможет.:)

...