производительность — чтение и запись в C ++ — RamDisk vs RAM

Я использую Ubuntu 32 BIT.
— Моему приложению нужно хранить входящие данные в ОЗУ (потому что мне нужно много искать по входящим данным и что-то вычислять).
— Мне нужно сохранить данные в течение X секунд => Так что мне нужно выделить 12 ГБ памяти. (требования клиента)
— Я использую Ubuntu 32 BIT (и не хочу работать с Ubuntu 64 BIT)
— Поэтому я использую Ram Disk для сохранения входящих данных и поиска на них. (Так что я могу использовать 12 ГБ оперативной памяти на 32-битной системе)

когда я тестировал приложение с 2 ГБ выделенной памяти (вместо 12 ГБ), я увидел, что производительность ЦП при использовании ОЗУ лучше, чем при использовании RAM DISK, когда я просто записываю данные в свою БД (15% против 17% использования ЦП)
но когда я тестировал запросы (которые читают много данных и / или файлов, если я работаю с RAM-диском), я увидел огромное различие (загрузка ЦП 20% против 80%).

Я не понимаю, почему существует огромный DIFF?
И RAM, и RAM DISK работают на RAM? нет? Что я могу сделать, чтобы улучшить производительность?

0

Решение

Есть две причины, по которым я могу думать о том, почему RAM-диск работает медленнее.

  1. С RAMDisk мы могли бы использовать RAM в качестве файлового носителя, но у нас все еще есть накладные расходы на использование файловой системы. Это включало системные вызовы для доступа к данным с другими формами косвенного обращения или копирования. Прямой доступ к памяти — это просто.

  2. Доступ к памяти имеет тенденцию быть быстрым, потому что мы часто можем найти то, что мы ищем в кэше процессора. Это спасает нас от чтения непосредственно из медленной оперативной памяти. Использование RAMDisk, вероятно, не сможет использовать кэш процессора в той же степени, если по какой-либо другой причине он требует системного вызова.

2

Другие решения


По вопросам рекламы [email protected]