2

Я думал об использовании временных GIT-репозиториев на RAMDisks (используя ramdisk от DataRAM) в качестве хранилища объектов. Мне было интересно посмотреть, стоит ли это делать, поэтому я запустил простой тест записи файлов размером 1000 x 30 КБ на диск, а затем сравнил среднее время записи. Я был удивлен, когда производительность вышла последовательно в пользу жесткого диска.

Для HDD я получил:

average: 0.47ms/write

За RAM диск я получил:

average: 0.76ms/write

Кто-нибудь может объяснить, почему это противоположно тому, что ожидается?

4 ответа4

3

Может быть, операции с жестким диском были кэшированы в памяти вашей дружественной ОС, а RAMDisk был (частично) в виртуальной памяти / пространстве подкачки?

3

При использовании DMA ЦПУ копирует данные в память и сообщает жесткому диску, чтобы получить их и записать на диск. Пока жесткий диск делает это, процессор может делать что-то еще. С 30K файлами, жесткий диск может идти в ногу с чтением и записью. Эти файлы помещаются в кэш и не должны быть записаны на диск для завершения записи. Вращение диска и поиск рукой - действительно ограничивающий фактор.

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

2

Это сложный вопрос, но в целом вы должны понимать, что искусственные тесты редко бывают надежными. Вы должны попробовать протестировать реальные git-репозитории.

Я предполагаю, что запись файлов на диск происходит "быстро", потому что процессор просто выдает команду диску "забрать этот блок памяти и записать его в этот раздел диска", а накопитель обрабатывает его асинхронно (т. Е. После выполнения команды выдан, операция "завершена"). Но копируя на RAM-диск, вы фактически ждете, пока данные физически не будут скопированы, и, поскольку вы в основном делаете копию из RAM-в-RAM, у вас возникает конфликт.

Опять же, я бы посоветовал вам попробовать реальные операции с реальными Git-репозиториями, если вы планируете его использовать.

1

Я думаю, что проблема здесь не в скорости ядра <> mem, а в реализации программного обеспечения dataram. для unixes существует tmpfs для возрастов, подходящих для таких целей (и нет необходимости в дополнительном втором уровне файловой системы), однако продукт dataram довольно старое немодифицированное программное обеспечение с (возможными) ошибками или с использованием старой неоптимизированной программной архитектуры.

Я также получил снижение производительности, когда попытался запустить игровой клиент с виртуального диска dataram. На самом деле скорость была хуже, чем при работе с диска IDE ... в некоторых моментах даже BSOD (12 ГБ ОЗУ всего 2.5 ГБ RAM-диск). с быстродействием ramdisk 4gb хуже (???).

С той же системой FreeBSD без проблем обрабатывает 4gb+ заполненные tmpfs

однако автор форумов ImDisk также отметил, что Windows делает что-то странное в управлении памятью в отношении всех виртуальных дисков, поэтому, возможно, существуют и недостатки подсистем Windows.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .