Могу ли я использовать tmpfs таким образом? - PullRequest
0 голосов
/ 20 июня 2010

На моей машине для разработки достаточно оперативной памяти.

Могу ли я переместить исходные коды моего Rails-приложения в раздел tmpfs, чтобы повысить производительность из-за хранения в памяти, которое на порядок быстрее, чем на HDD?

Я понимаю, что tmpfs является временным хранилищем по своей природе, НО я могу использовать его для этой задачи, если напишу какой-нибудь сценарий для перемещения источников из раздела HDD в tmpfs и резервного копирования его на HDD перед перезагрузкой?

Это нормально?

Ответы [ 3 ]

3 голосов
/ 20 июня 2010

Разумно использовать RAM-диск для ускорения доступа к только для чтения ресурсам.

Весьма опасно использовать этот подход для доступных для записи ресурсов, потому что если вы потеряете энергию во время работы, вы гарантированно потеряете данные. Если вы не возражаете против потери данных или реализуете какой-либо механизм кэширования, чтобы данные, «сохраненные» на RAM-диске, копировались обратно на жесткий диск довольно скоро после их записи, тогда этот подход подходит для чтения / записи данных.

Однако, проверьте оборудование и ОС, на которой вы работаете. Если у вас SSD-диски или диски и подсистемы ввода-вывода с большими кэшами, вы можете обнаружить, что производительность не так уж и плоха. Что касается операционной системы, то (например) Windows Vista & 7 будет использовать любую свободную оперативную память для кэширования диска, и это работает очень эффективно, а это означает, что при использовании RAMdisk вы почти не увидите увеличения производительности.

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

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

1 голос
/ 20 июня 2010

Вы можете использовать его таким образом, но это не имеет особого смысла:

Если у вас достаточно ОЗУ, файлы все равно будут в кеше файловой системы (т.е. в ОЗУ). Таким образом, вы ничего не выигрываете, используя tmpfs, но вы также ничего не теряете.

Если у вас нет достаточно ОЗУ, tmpfs будут сброшены для замены. Теперь ваши Rails-источники поглощают драгоценное пространство подкачки, несмотря на то, что уже копия на диске в файловой системе. Таким образом, вы теряете пространство подкачки и ничего не выигрываете в производительности (независимо от того, считываются ли файлы обратно из swap или файловая система одинаково дорогая).

Если вы не хотите использовать этот первый удар до тех пор, пока все файлы не будут в кеше, вы можете добавить что-то подобное в сценарии запуска среды разработки:

find /usr/lib/ruby/gems/1.9.1/{rails,action,active}* -exec cat '{}' + > /dev/null

Который будет читать все файлы Rails и выводить их в /dev/null и в качестве побочного эффекта вытягивать их в кеш. (Делайте это, пока получаете кофе с кодировкой.)

1 голос
/ 20 июня 2010

Да, если вы не возражаете против потери данных, если ваша машина неожиданно перезагружается (например, потеря питания).Я не знаю, каков ваш вариант использования, но в некоторых случаях потребность в производительности превышает потребность в надежном сохранении всех данных, например, если вы не возражаете против потери данных в течение нескольких часов)Если ваш вариант использования попадает в эту категорию, то tmpfs - это отличное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...