Назад | Перейти на главную страницу

Как размер кластера, размер буфера и размер пакета связаны с производительностью?

Я создаю сервер во встроенной системе. У меня есть файловая система FAT на SD-карте, которая содержит файл, который должен быть отправлен по HTTP какому-нибудь клиенту через Wi-Fi который подключается к системе.

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

file -> buffer -> network

По-видимому, есть некий оптимальный размер буфера, при котором скорость чтения увеличивается, не вызывая замедления из-за раздувания буфера.

Хотелось бы повысить общую производительность по скорости передачи данных. В настоящее время я получаю около 3 МБ / с, что слишком медленно. Я контролирую размер буфера и размер кластера. Могу ли я улучшить производительность системы, сделав правильный выбор для этих двух значений?

  1. Должен ли размер буфера и размер кластера в идеале быть одинаковыми? Должен ли размер буфера быть некоторым целым числом кратным размеру кластера в целом (возможно,> 1)?
  2. Должен ли я выбрать два каким-то образом, чтобы они также соответствовали размеру полезной нагрузки сети? (Я не очень разбираюсь в сетях и не знаю, есть ли вообще такая вещь, как фиксированный размер полезной нагрузки)

Как выбрать эти размеры для увеличения скорости передачи данных?