небуферизованный ввод-вывод в Linux

Я пишу много-много данных, которые не будут считываться снова в течение нескольких недель - поскольку моя программа выполняет объем свободной памяти на машина (отображается как «бесплатно» или «вверху») очень быстро падает, объем памяти, который использует мое приложение, не увеличивается, равно как и объем памяти, используемый другими процессами.

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

В Windows я столкнулся с аналогичными проблемами и решил проблему с помощью FILE_FLAG_NO_BUFFERING | FILE_FLAG_WRITE_THROUGH - мое приложение не потребляло память машины, и машина в целом была более удобна в использовании. Я надеюсь повторить улучшения, которые я видел, но в Linux. В Windows есть ограничение на запись кусками размером с сектор, I ' Я доволен этим ограничением измеренного мной прироста.

есть ли аналогичный способ сделать это в Linux?

9
задан tshepang 5 May 2014 в 17:44
поделиться