В C / C ++ под Linux мне нужно выделить большой (несколько гигабайт) блок памяти для хранения данных в реальном времени от датчика, подключенного к порту Ethernet, и потоковой передачи данных со скоростью около 110 МБ / с. Я хотел бы выделить как можно больше памяти, чтобы максимально увеличить длину последовательности данных, которую я могу сохранить. Тем не менее, мне также нужно убедиться, что не произойдет подкачки диска, поскольку возникающая в результате задержка и ограниченная пропускная способность доступа к диску приводят к переполнению (очень ограниченного) буфера датчика.
Как лучше всего определить, сколько памяти выделить? Ограничен ли я выделением блока немного меньшего размера, чем указанная свободная память, или я могу напрямую взаимодействовать с диспетчером виртуальной памяти Linux?