Ограничен ли размер канала fifo дисковым кешем?

387
Emanuele

В Linux CentOS 7 я использую именованные каналы fifo, созданные с помощью mkfifo, для обработки передачи данных между парами процессов, работающих на многопроцессорном дисковом сервере (Dell R730xd с ОЗУ 132 ГБ и диском RAID 20 ТБ).

Чтобы иметь некоторый буфер данных между двумя процессами, подключенными к каналу, когда я открываю канал, я также установил его размер на некоторое большое значение (скажем, 128 МБ).

Чтобы разрешить трубы большого размера, я должен был установить:

/proc/sys/fs/pipe-max-size = 134217728 /proc/sys/fs/pipe-user-pages-soft = 0 (i.e. no limit) 

В моем коде я тогда использую (пример из сценария Perl)

fcntl(\*FD, F_SETPIPE_SZ, int($size)) 

Время от времени происходит сбой операции установки размера канала с сообщением «Невозможно выделить память». Я заметил, что это происходит, когда активность диска на сервере очень высока. Просматривая / proc / meminfo, я вижу, что кэшированная память занимает большую часть памяти моего сервера, оставляя только несколько МБ памяти MemFree. Как только активность диска уменьшается, кэшированная память медленно уменьшается, и через некоторое время операция размера канала снова начинает работать.

Мои вопросы:

  1. почему размер канала конфликтует с кэшированной памятью? Не следует ли освобождать кэшированную память, как только кому-то это понадобится (например, у меня нет проблем с запуском новых процессов)?
  2. Как ограничить максимальный объем памяти, который может быть выделен для кэширования диска? Я предполагаю, что ограничение его до 100 ГБ вместо 132 ГБ не должно сильно влиять на производительность диска, и это оставило бы много памяти для моих каналов ...

Заранее благодарю за любую помощь.

1
Возможно, вы захотите спросить в stackoverflow о программных аспектах настроек канала. Я всегда читал, что linux хорошо обрабатывает кэшированную память, она освобождается и используется при необходимости, я представляю, что канал означает, что это необходимо ... Xen2050 6 лет назад 0

0 ответов на вопрос