Если вы malloc
наберете необходимый объем памяти и запишете в него с такой скоростью, вы все равно получите снижение производительности из-за всех сбоев страниц (т. Е. Сопоставление каждой страницы виртуальной памяти с физической памятью, что также можетвключить обмен памяти других процессов).
Чтобы избежать этого, вы могли бы memset
весь выделенный буфер до 0, прежде чем начинать чтение с датчика, чтобы вся необходимая виртуальная память отображалась на физическую память.
Если вы используете только доступную физическую память, вам вообще не придется менять местами.Использование more приведет к тому, что память других процессов будет перенесена на диск - если эти процессы простаивают, это не должно создавать никаких проблем.Если они активны (то есть время от времени используют свою память), произойдет некоторый обмен - вероятно, с гораздо меньшей скоростью, чем пропускная способность жесткого диска.Чем больше памяти вы используете, тем больше активных процессов будет выгружаться, и будет происходить больше активности HD - в этот момент максимальный объем памяти, который вы могли бы использовать с приличной производительностью, в значительной степени является результатом проб и ошибок.
Используя больше доступной физической памяти, вы определенно вызовете своп со скоростью записи в память, и избежать этого невозможно.