Эффективное использование файловых дескрипторов в C / Stack Overflow

Я использую C ++ для резервного копирования файлов с моих систем клиентов. Каждую секунду файлы загружаются с машин моего клиента, и мне нужно получить файловые дескрипторы для каждого файла, который нужно записать на сервер. Иногда я получаю даже 10K файлов за минуту, так как я могу на самом деле использовать файловые дескрипторы для эффективной записи нескольких файлов.

У меня есть C ++ Socket Listener, каждый клиентский компьютер подключается к серверу и начинает загружать файлы. Можно ли написать несколько файлов с ограниченными файловыми дескрипторами. Я попытался записать все файлы в один большой файл, но я отслеживаю конец файла и запускаю байты в большом файле для каждого файла, который я записываю в него. Это была бы какая-то чертова работа ,

Я хочу иметь возможность записывать файлы с высокой производительностью, а также хранить диск в безопасности. Есть идеи, чтобы поделиться ..?

1

Решение

Кажется, вы должны, вероятно, поставить в очередь запросы.

Таким образом, вы можете иметь ограниченное количество работников (скажем, 16, в зависимости от аппаратного обеспечения в вашей системе), чтобы фактически передавать файлы и заставлять остальных ждать.

Это, вероятно, улучшит пропускную способность и производительность, так как

  • это удаляет поток планирования накладных расходов
  • устраняет узкое место ресурса (выделение буфера fd +)
  • он не работает одновременно с дисками (на старомодном оборудовании (то есть чаще всего с вращением дисков), это может привести к значительному снижению производительности, если вы вызываете многократный поиск дисков).

    • Отказ от ответственности: ваша файловая система / операционная система могут работать вместе, чтобы ограничить / уменьшить этот эффект путем переназначения операций записи на диск (элеватор / полное честное построение очереди и другие алгоритмы).
    • независимо от того, при записи последовательных загрузок на общие тома, обычно использование полосы пропускания будет оптимальным, когда

      sum(upload rates) ~= effective disk write bandwitdh
      

На очереди:

1

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

Других решений пока нет …

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