dd — понимание размера блока

Я использовал «dd» для создания тестовых файлов и создания резервных копий на жестких дисках. Нет проблем.

В настоящее время я пытаюсь использовать его для проверки скорости передачи NFS. Сначала я изменял размер блока (аргумент «bs») … Но это заставило меня задуматься, зачем мне менять этот аргумент?

Типичный пример использования, который я хочу смоделировать:

  • Узел X имеет большую структуру данных в памяти
  • Узел X хочет записать его в файл, расположенный в NFS-смонтированном каталоге

В этом случае типичным кодом C / C ++ для 2D-массива будет:

FILE *ptr = fopen("path_to_nfs_area", "w");
for (int i = 0; i < data.size(); ++i)
fwrite(data[i], sizeof(float), width, ptr);
...

Так что в этом случае мы записываем в буфер с 32-битными приращениями (sizeof (float)) — и, поскольку это объект FILE, он, вероятно, также буферизуется (возможно, это не очень хорошая вещь, но может быть неуместно для этого обсуждение).

Мне трудно сделать переход от записи «dd» из блоков if-> of в «bs» по сравнению с приложением, выписывающим переменные из памяти (и имитирующим это с помощью dd).

Имеет ли смысл говорить, что бессмысленно изменять значение «bs» меньше, чем система PAGE_SIZE?

Вот мое текущее понимание, поэтому я не понимаю, почему изменение размера блока «dd» имело бы значение:

Взаимодействие между приложением и NFS / TCP

1

Решение

Вы можете получить лучшие ответы на superuser.com, так как этот вопрос здесь немного не по теме.

Но учтите возможность того, что общий ресурс nfs не смонтирован с асинхронным флагом — в этом случае каждая отдельная запись должна быть подтверждена сервером nfs до начала четных записей следующей записи. Так bs=1 потребуется примерно в два раза по сравнению с bs=2и каждый из них будет НАМНОГО медленнее, чем разумный размер блока.

Если флаг async установлен на монтировании nfs, ваше ядро ​​может объединить несколько маленьких записей в одну большую, так что эффект установки bs должно быть пренебрежимо.

В любом случае, если вы тестируете настройку среды для конкретного приложения, используйте это приложение для тестирования, и ничего больше. Производительность может зависеть от поведения конкретного приложения, которое не сможет воспроизвести ни один общий инструмент.

1

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector