Дисковый ввод-вывод, проблемы с производительностью двух файлов? - PullRequest
1 голос
/ 04 марта 2011

Мне интересны некоторые подробные сведения о том, как работает поиск и запись на диск, когда вы работаете с двумя файлами одновременно.

Я подумываю о том, чтобы разделить файл, который я сейчас делаю, и читать, и записывать в два файла, чтобы лучше обрабатывать параллелизм. К ним потенциально можно получить доступ одновременно.

a) Будет ли производительность намного хуже, потому что к двум файлам обращаются вместо одного, даже если время поиска на диске будет от начала до конца большого файла "все в одном"?

б) Можете ли вы как-нибудь разместить два файла друг за другом или «близко друг к другу» на диске, чтобы улучшить их одновременную производительность? (Я думаю, это будет трудно с фрагментацией диска и все)

в) Как SSD-диски влияют на это, поскольку они не вращаются, они должны быть достаточно хороши для такого решения, верно?

d) если вы запускаете быстрые операции ввода-вывода, считывающие и записывающие одновременно в обоих файлах, ОС (Windows) оптимизирует так, что диск с головкой не будет слишком много двигаться вперед и назад?

Мне немного любопытно, почему какое-то решение для базы данных / nosql кажется настолько непреклонным в хранении вещей в одном файле, когда использование более одного, кажется, дает некоторые преимущества.

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

а) Нет, накладные расходы почти такие же, как если бы они были одним файлом.

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

в) Да, твердотельные накопители являются идеальным решением для этого! :)

d) Собственная очередь команд на диске предназначена для этого на дисках SATA (она упорядочивает до 32 команд ОС для лучшей производительности), и, хотя она определенно полезна, она не вполне столь заметный выигрыш, как вы думаете Кэш памяти файловой системы является здесь гораздо более важным фактором - он кэширует ваши данные в памяти, так что случайные записи могут стать более последовательными (и более быстрыми).

0 голосов
/ 04 марта 2011

в) Да, это правда г) современные ОС делают это. NCQ делает это в HD.

...