Здесь я сталкиваюсь с проблемой максимальной пропускной способности и нуждаюсь в совете, как настроить мои ручки. Мы используем файловый сервер 10 Гбит для резервного копирования. Это двухдисковая установка S-ATA2 на контроллере LSI MegaRAID. Сервер также получил 24 гигабайта памяти.
Нам необходимо отразить нашу последнюю загруженную резервную копию с максимальной пропускной способностью.
RAID0 для наших «горячих» резервных копий дает нам около 260 МБ / с записи и 275 МБ / с чтения. Протестированные tmpfs размером 20 ГБ дают нам около 1 ГБ / с. Такая пропускная способность - то, что нам нужно.
Теперь, как я могу настроить подсистему виртуальной памяти Linux так, чтобы как можно дольше сохранять в памяти последние загруженные файлы, не записывая их на диск (или даже лучше: запись на диск И хранение их в памяти)?
Я установил следующие sysctl, но они не дают нам ожидаемой пропускной способности:
# VM pressure fixes
vm.swappiness = 20
vm.dirty_ratio = 70
vm.dirty_background_ratio = 30
vm.dirty_writeback_centisecs = 60000
Теоретически это должно дать нам 16 ГБ для кэширования ввода-вывода и подождать несколько минут до его записи на диск. Тем не менее, когда я тестирую сервер, я не вижу влияния на запись, пропускная способность не увеличивается.
Нужна помощь или совет.
Ответы:
Если посмотреть на установленные вами переменные, кажется, что вы в основном озабочены производительностью записи и не заботитесь о возможных потерях данных из-за перебоев в подаче электроэнергии.
Вы только когда-либо получите возможность для отложенной записи и использования кэша обратной записи с асинхронными операциями записи. Синхронные операции записи требуют фиксации на диск и никогда не будут записываться лениво - никогда. Ваша файловая система может вызывать частые обновления страниц и синхронные записи (обычно из-за журналирования, особенно с ext3 в режиме data = journal). Кроме того, даже «фоновые» очистки страниц будут мешать чтению без кэширования и синхронной записи , тем самым замедляя их.
В общем, вам нужно взять некоторые метрики, чтобы увидеть, что происходит - вы видите, что ваш процесс копирования переведен в состояние «D», ожидая, пока pdflush выполнит работу ввода-вывода? Видите ли вы интенсивную синхронную запись на ваших дисках?
Если ничего не помогает, вы можете установить явную файловую систему tmpfs, куда вы будете копировать свои резервные копии и просто синхронизировать данные с вашими дисками после факта - даже автоматически используя inotify
Для кэширования чтения все значительно проще - есть
fadvise
утилита fcoretools, у которой есть--willneed
параметр, который советует ядру загружать содержимое файла в буферный кеш.Редактировать:
Это не сильно повлияло бы на ваш сценарий тестирования, но в вашем понимании есть неправильное представление. Параметр dirty_ratio - это не процент от общей памяти вашей системы, а скорее ее свободной памяти.
Существует статья о настройке нагрузок для записи с более подробной информацией.
источник
Или просто получите больше дисков ... Конфигурация массива дисков, которую вы имеете, не поддерживает все, что вам нужно. Это тот случай, когда решение должно быть реинжиниринг для удовлетворения ваших реальных потребностей. Я понимаю, что это только резервное копирование, но имеет смысл избегать грязного исправления.
источник
Использование кэша памяти может привести к потере данных, так как если что-то пойдет не так, данные, которые находятся в памяти и не сохранены на дисках, будут потеряны.
Тем не менее, есть настройка, которая должна быть сделана на уровне файловой системы.
Например, если вы использовали ext4, вы можете попробовать опцию монтирования:
Барьер = 0
То есть: «отключает использование барьеров записи в коде jbd. Барьеры записи обеспечивают правильное упорядочение записей на диске на диске, что делает использование кэшей записи на энергозависимые диски безопасным для использования при некотором снижении производительности. Если ваши диски питаются от батареи одним способом или другое, отключение барьеров может безопасно улучшить производительность. Параметры монтирования «барьер» и «безбарьер» также могут использоваться для включения или отключения барьеров для совместимости с другими вариантами монтирования ext4 ».
Больше на: http://www.mjmwired.net/kernel/Documentation/filesystems/ext4.txt
источник