Назад | Перейти на главную страницу

Как размещение подкачки на SSD влияет на производительность?

Это скорее общий вопрос, который меня интересует, а не то, что я планирую использовать в продакшене. Если бы я получил, скажем, твердотельный накопитель на 40 ГБ и выделил бы весь диск для пространства подкачки, оставив в системе лишь небольшой объем «реальной» оперативной памяти (для примера я скажу, что физическая оперативная память 512 МБ), как будет производительность по сравнению с наличием 40 ГБ реальной оперативной памяти?
Может быть невозможно провести общее сравнение, поэтому, например, запуск сервера базы данных с запущенными RedHat, MySQL, MongoDB и Memcached (по моему опыту, серверы баз данных любят много оперативной памяти, особенно с использованием Memcached) и сэкономить на суете Допустим, все службы были оптимально настроены и настроены, а не только стандартные установки.

TL; DR
Можно ли использовать SSD-диски в качестве замены оперативной памяти?

Пространство подкачки не является простым расширением ОЗУ, чтобы ЦП мог получить к нему доступ напрямую, поэтому помимо более низкой скорости (сравните максимальную пропускную способность шин DDR3 и SATA на http://en.wikipedia.org/wiki/List_of_device_bandwidths например) и более высокая задержка (даже если доступ был прямым, любая передача будет проходить через контроллер ввода-вывода и контроллер диска, поэтому существует два значения задержки, оба из которых, вероятно, будут выше, чем между ЦП и RAM), также необходимо учитывать дополнительную обработку и задержку, поскольку блоки памяти на SSD необходимо будет выгружать в ОЗУ, прежде чем их можно будет использовать, и снова записывать обратно, если они были изменены.

Это особенно актуально для произвольного доступа (и большинство алгоритмов в памяти написаны с предположением, что произвольный доступ эффективен). Хотя ЦП может получить доступ к любому слову в ОЗУ более или менее когда и где захочет, но если данные, которые он хочет, выгружаются, ему нужно будет прочитать всю страницу обратно, прежде чем он сможет прочитать хотя бы один байт, и целая страница должна быть записана, если один байт изменен до того, как страница будет очищена из ОЗУ, чтобы снова освободить место для другого.

Конечно, я игнорирую усложнение кеш-памяти здесь, что означает, что произвольный доступ иногда более эффективен, чем в других случаях (в зависимости от того, существуют ли данные только в основной памяти или копируются в кеш L3 / L2 / L1 в данный момент). Теоретически ваша оперативная память - это просто кеш для вашего постоянного хранилища, и есть архитектуры, которые буквально работают таким образом, без различия между более медленным постоянным хранилищем и более быстрым кешем (по крайней мере, что касается ОС - он просто видит основное хранилище, но быстрее если данные также находятся в более быстром кэше), но архитектура вашего оборудования и ОС не спроектированы таким образом.

Можно ли использовать SSD-диски в качестве замены оперативной памяти?

Вы можете сами ответить на этот вопрос, сравнив время доступа к ОЗУ (величина 10 наносекунд) и пропускную способность (величина 10 ГБ / с) со временем доступа SSD (величина 1 миллисекунда) и пропускной способностью (величина 100 МБ / с).

Если для вашего приложения нормально иметь «RAM», которая примерно в 100–100 000 раз медленнее, чем обычно, тогда да, SSD можно использовать в качестве замены RAM.

Can SSD drives be used as a replacement for ram?

Да, особенно если вы любите часто менять оборудование, потому что вы будете делать это довольно часто - большинство твердотельных накопителей начинают довольно быстро умирать, если вы пишете им более 35 ГБ в день.