@beduin01

Почему RAM диск оказался не быстрее SSD?

Продолжаю ковыряться с SQLite и одиночной вставкой. Решил провести замеры. SSD оказался в 3.5 раза быстрее HDD. Решил создать RAM диск и разместить там SQLite. В итоге получил нулевой прирост производительности.

Вопрос -- как такое может быть? Как вообще запись на SSD устроена? Там система кешей есть?
  • Вопрос задан
  • 21812 просмотров
Пригласить эксперта
Ответы на вопрос 8
Jump
@Jump Куратор тега Твердотельные накопители
Системный администратор со стажем.
Почему RAM диск оказался не быстрее SSD?
Непонятно что вы измеряли и как поэтому точно сказать нельзя.
Но кое-что сказать можно-
  1. Скорость работы какой-то программы например БД зависит от диска, но эта зависимость нелинейная. Если вы поставите диск который в десять раз быстрее - скорость программы не обязательно возрастет в десять раз, она может увеличиться на 50% или на 5% или вообще не изменится.

  2. Большинство операций ввода-вывода кэшируются операционной системой. Поэтому если у вас база небольшая и достаточно оперативной памяти - то вы будете работать не с диском а с оперативной памятью большую часть времени.

  3. Если мы говорим про RAM диск - я не удивлюсь если скорость даже упадет по сравнению с SSD, такое вполне вероятно. Поэтому что во первых RAM диск отжирает приличную часть оперативки и ее может нехватить на эффективное кэширование, и во вторых RAM диск тасует информацию в ОЗУ с помощью процессора, прилично нагружая последний, поэтому в некоторых тяжелых задачах, когда идет нагрузка на процессор, использование RAM диска может вызвать приличную просадку производительности.


Если же вам интересно узнать что в вашем случае - давайте подробности.
Какая ОС. какой рамдиск, характеристики компьютера, объем БД, каким образом тестируете - тогда можно будет что-то сказать не гадая на кофейной гуще.
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
ниачем

PassMark выкладывай

и ваще sqlite3.connect(":memory:") без всякого диска
Ответ написан
saboteur_kiev
@saboteur_kiev
software engineer
На самом деле, скорость современного SSD может не уступать RAM, тут больше зависит от интерфейса и реализации рам драйва. Например полная поддержка спецификаций превращает RAM в довольно медленное устройство, а отключив его, можно значительно увеличить скорость.

Я довольно долго пользоваться рамдиском, перебрал разный софт, долго сидел на softperfect ram disk.
Но когда перешел на m.2 NVME ssd, понял что рамдиск не нужен.
Ответ написан
@Drno
Ну тут кроме самой базы вообщето еще влияет скорость проца, мож он упирается в него.
А вообще да- у нормальных ссд есть быстрый кэш
Ответ написан
@RA-Habr
- потому что ваши файлы такого размера, что увидеть разницу в работе ссд и рам на глаз не представляется возможным.
Ответ написан
Комментировать
@Danismind
На самом деле мы забываем момент, что есть шина на материнской плате через которую все компоненты компьютера общаются между собой.
Между жестким диском с блинами у которых скорость вращения и твердотельным жестким диском который просто читает с микросхем памяти то разница есть.(Там накладные расходы)
А вот между ssd и ram тут исключительно потолок. Либо Материнку с более мощной шиной и память более быструю ставить. В старых компах со слабой шиной и памятью ssd может спокойно работать как ram.(тот же самый файл подкачки и убыстрять комп)
Ответ написан
Комментировать
@wickated
Потому что есть такая штука, зовётся иопсами. И их количество ограничено, и гоняются все эти иопсы через стандартные протоколы , которые изобрели давно и они устарели. Нвме же не просто так придумали. И данные в рамдиск гоняются через рам и процессор. И скорость рандом копирования рам-рам давно уже не растёт, а в некоторых случаях даже падает (привет ддр4 с её тайммнгами). Лучшее решение для скл - оптан, если конечно на него влезет база.
Ответ написан
Комментировать
@Feliskms
Потому что основная причина, почему SSD быстрее HDD в том, что у SSD очень малое время поиска. Когда база данных выполняет работу, HDD постоянно ищет записи, которые фрагментированы по всему диску и обращение к каждому фрагменту требует около 10-20 миллисекунд для поиска (в среднем пусть 0.015 секунд). А SSD делает поиск за 1 мс и менее, пусть 0.001 секунд. Допустим, и HDD, и SSD для выполнения запроса надо сделать 10 тысяч поисков данных. Тогда, HDD только на поиске фрагментов потеряет 10000*0.015=15 секунд. А SSD сделает ту же работу за 1 секунду и менее. RAM диск допустим ищет фрагмент за 0.000001 секунды, тогда 10000 поисков она отработает за 0.01 секунды. Вот и получается, что HDD тупо на поиске кластера на диске теряет 15 секунд, SSD 1 секунду и RAM 0.01 секунды. И если разница между 15 секунд и 1 секунда колоссальная, то разница между 1 секунды и 0.01 секунды значительно менее заметна. Если для выполнения запроса компьютеру нужно ещё потратить, скажем, 4 секунды на работу процессора для расчетов каких-то, получится итоговое время - HDD 19 секунд, SSD 5 секунд, RAM 4 секунды...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы