Запускаете .NET в постоянной оперативной памяти?

У меня есть большие индексы в памяти для быстрого поиска в огромном наборе данных. Создание индексов занимает вечность, равно как и просто десериализация их моментального снимка с диска в память занимает много времени. И они используют много драгоценной / дорогой оперативной памяти. Я попытался использовать индексы прямо с диска с помощью своего рода настраиваемого поискового ридера, который просто десериализовал необходимые биты на лету. Это работало на удивление хорошо, но имело некоторые серьезные недостатки в многопоточной среде, касающиеся блокировок, параллелизма, управления версиями и т. Д. И конечно, это не было сверхбыстрым.

Во всяком случае, мне было интересно, может ли "постоянная RAM" (NVMe, Optane..?) Помочь мне здесь. Я не уверен, что понимаю, как именно они должны использоваться, но кажется, что они заполняют пробел между HDD/SSD и DDR-RAM? Они стоят меньше, чем оперативная память, но быстрее, чем SSD, и устойчивы.

Так что я надеялся каким-то образом запустить.NET-программу прямо в постоянной оперативной памяти, с моими индексами и без необходимости сериализовать ее туда и обратно на SSD между перезапусками. Это была бы мечта!

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

0 ответов

Другие вопросы по тегам