Я пытаюсь найти правильный способ получить 'реальный мир' производительность записи моего кластера NFS.
Экспорт NFS монтируется на гипервизоре XEN, и я запускаю 'дд' из виртуальной машины.
какой Я не могу решить, стоит ли мне использовать O_DIRECT/O_SYNC
или не.
Если я не буду его использовать, ядро будет кэшировать страницы в ОЗУ, и я буду измерять пропускную способность ОЗУ, а не диска.
С другой стороны, большинство, если не все серверные приложения все равно будут использовать кэширование ОЗУ (ошибаюсь ли я в этом предположении?).
Поэтому мне интересно, где же точка баланса, что на самом деле произойдет в 'реальный мир'?
Прежде всего, я бы использовал настоящую утилиту для тестирования ввода-вывода, такую как iozone. Он будет тестировать множество вещей и даже будет использовать O_DIRECT, если он отмечен для этого. И даже, насколько я помню, есть несколько специфичных для NFS флагов.
Одна вещь, которую я считаю очень надежной, - это использовать размер файла, превышающий размер ОЗУ для устройства, на котором вы тестируете. Это разрушает кеш и дает вам надежные номера ввода-вывода. Если у вас есть машина с оперативной памятью 2 ГБ и вы протестируете файл размером 4 ГБ, вы получите надежные цифры. Если вы используете файл размером 1 ГБ, но вместо этого используете флаг O_DIRECT, вы получите несколько другие числа из-за аспекта O_DIRECT «только отчет создается, когда сообщается, что он сброшен».
Это усложняется, когда ваша цель сетевой файловой системы также имеет блочный кеш, поэтому вам может потребоваться размер теста, чтобы он который cache, а не ваш локальный кеш Xen.
Это зависит только от того, что вы хотите измерить.
Вы просто забыли определить свою цель.
Если вам нужна необработанная производительность кластера NFS, вам нужно обойти свою оперативную память.
Если вам нужны выступления «в реальном мире», вам придется использовать оперативную память. Но в реальном мире ввод-вывод редко поступает от dd. Например, у вас будут лучшие результаты с iozone.
Так что определите свою цель.
Затем выберите подходящий инструмент и метод.