powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ускорение чтение с диска с помощью BtrFS
25 сообщений из 30, страница 1 из 2
Ускорение чтение с диска с помощью BtrFS
    #39659512
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В Линаксе в 2012 году зафиксировали стандарты хранения данных у "новой" файловой системы BtrFS. Одной из возможностей ФС является сжатие данных "на лету" при чтении / записи. Так как в своем проекте я уткнулся в скорость I/O, то решил попробовать эту возможность. На SSD диске это будет иметь двойную выгоду: сэкономит место + ускорит чтение данных. Мои текстовые файлы представляют из себя csv- файлы, с данными разделенными ';', а бинарные- последовательно записанные структуры данных с полями числовых типов.

Нет сжатия:
Исходный размер текстовых файлов: 37,2 ГБ
Скорость чтения текстовых файлов: 136 сек
Исходный размер двоичных данных: 6,8 ГБ

Сжатие zlib:
Размер текстовых файлов: 8,8 ГБ
Скорость чтения текстовых файлов: 99 сек
Размер двоичных данных: 3,2 ГБ

Сжатие lzo:
Размер текстовых файлов: 14 ГБ
Скорость чтения текстовых файлов: 74 сек
Размер двоичных данных: 4 ГБ

Сейчас уже появился новый метод сжатия ZSTD с возможностью установки числового коэффициента сжатия. Я его пока не тестировал, но думаю, что с его помощью можно добиться еще большей скорости чтения данных. Но даже сейчас видно, что размер на диске сокращается примерно в 2,5 раза, а скорость чтения возрастает примерно в 2 раза.

Так что у кого будет подобный кейс, можете также попробовать возможности файловых систем из Линакса.
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659519
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл написать, что у меня 4-ех ядерный процессор i5-4690 (без гипертрейдинга), поэтому чтение данных с диска во всех трех экспериментах выполнялось 4- мя параллельными потоками (а главный 5-ый поток ждал их завершения). Другими словами, не было свободного ядра, которое могло использоваться для автоматического разжатия данных "на лету".

+ Текстовые файлы имеют большой размер (примерно по 300 Мбайт каждый), поэтому полученное ускорение нельзя отнести к более хорошей работе с файлами маленького размера. Ускорение получилось именно за счет сжатия файлов на диске.
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659523
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для этого не обязательно форматировать устройство под btrfs. Библиотека zlib портирована на все языки и ты мог читать текстовые файлы не доставая их из архива.
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659531
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLСкорость чтения текстовых файлов: 74 сек
Размер двоичных данных: 4 ГБ54 МБ/с ? Вы уверены, что это SSD, а не HDD 20-летней давности?
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659532
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonДля этого не обязательно форматировать устройство под btrfs. Библиотека zlib портирована на все языки и ты мог читать текстовые файлы не доставая их из архива.

Зачем делать то, что ОС делает за меня?
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659533
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftAlekseySQLСкорость чтения текстовых файлов: 74 сек
Размер двоичных данных: 4 ГБ54 МБ/с ? Вы уверены, что это SSD, а не HDD 20-летней давности?

Проверялась скорость чтения ТЕКСТОВЫХ данных, их размер значительно больше.
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659535
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLmiksoftпропущено...
54 МБ/с ? Вы уверены, что это SSD, а не HDD 20-летней давности?

Проверялась скорость чтения ТЕКСТОВЫХ данных, их размер значительно больше.Тогда что означают эти 4 ГБ ?
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659536
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftAlekseySQLпропущено...
Проверялась скорость чтения ТЕКСТОВЫХ данных, их размер значительно больше.Тогда что означают эти 4 ГБ ?

Размер бинарных данных приведен только для оценки степени их сжатия: не сжатые они занимают 6,8 ГБайт, а для разных способов сжатия- 3,2 и 4 Гбайт.

Кстати, если по чесноку, то у меня не чистое чтение тексовых файлов: прочитанные строки парсились, а значения преобразовывались в числовые форматы. Структуры с полученными числовыми данными складывались в мой массив. Так что есть небольшой оверхед при операциях чтения текстовых данных. Поэтому при 2,5- кратном уменьшении размера данных, получить 2-ух кратное увеличение скорости можно, если операция разархивирования практически не занимала процессорного времени. Т.е. можно попробовать еще поднять степерь сжатия, получив прирост производительности чтения.

Но это я уже буду тестить только на бинарных данных: мне важна скорость именно их чтения.
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659553
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLmiksoftпропущено...
54 МБ/с ? Вы уверены, что это SSD, а не HDD 20-летней давности?

Проверялась скорость чтения ТЕКСТОВЫХ данных, их размер значительно больше.
Я тебе даже больше скажу. Старые ФС поддерживали sparse-files. Это не архивация
а просто логическая аллокация файлов большого размера при том что они физически
не занимают места. Это удобно при закачке сериалов торрентами. При этом на замерах
скорости чтения или записи можно получить фейк. Скорость чтения данных со шпинделя
и логическая скорость с которой ФС отдаёт блоки могут отличаться на порядки.

С твоими текстовыми файлами тоже может быть чудо. В зависимости от того что за данные
внутри.

А с БТРФС - не ошибись. Ее создавали для других дел. Главный поинт - отказ от LVM.
С ней менеджер томов нахер не нужен. Сама файловая система является таковым.
И также copy-on-write. И опции бекапирования.
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659555
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Линакс" клево звучит. Почти как "Тампакс".

DoubleSpace ни о чем не говорит?
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659564
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglDoubleSpace ни о чем не говорит?А до него был Stacker...
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659569
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть еще более клёвая штука - ZFS

Для понимания:
Руководство по администрированию файловых систем ZFS Solaris
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659579
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_devЕсть еще более клёвая штука - ZFS
Для понимания:
Руководство по администрированию файловых систем ZFS Solaris

Да, выбирая из сжимающий ФС читал и про ZFS, но народ пишет, что для нее надо много оперативки. К тому же поддержка ZFS в Ubuntu появилась только в версии 16.04, т.е. решению всего два года, и у меня нет времени работать бета- тестером.

Siemargl "Линакс" клево звучит. Почти как "Тампакс".

Действительно, шутка затянулась. Теперь буду писать Linux.
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659580
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, когда я приводил показатели сжатия lzo и zlib для бинарных файлов, то подразумевал те файлы, которые уже предварительно сжаты моим алгоритмом на повторяющиеся значения. Другими словами, использовалось двойное сжатие: сначала моим алгоритмом, а потом с помощью ФС. Сегодня поставил эксперимент по сжатию с помощью lzo структур, которые не проходили предварительной обработки моим алгоритмом сжатия и получил более хорошие показатели сжатия lzo:

Нет сжатия:
Исходный размер НЕсжатых двоичных данных: 16,3 ГБ
Исходный размер сжатых двоичных данных: 6,8 ГБ

Сжатие lzo:
Размер НЕсжатых двоичных данных: 6 ГБ
Размер НЕсжатых двоичных данных: 4 ГБ

Видно, что применение моего алгоритма сжатия пока оправдано: итоговый размер файлов становится меньше в полтора раза:
К = 6 / 4 = 1,5

Но если учесть дополнительное время необходимое на "разжатие" моим алгоритмом, то возможно все плюсы сойдут на нет. Другими словами, возможно применение возможностей ФС уберет из моего кода лишние алгоритмы без потери скорости чтения бинарных данных.
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659581
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonAlekseySQLпропущено...


Проверялась скорость чтения ТЕКСТОВЫХ данных, их размер значительно больше.
Я тебе даже больше скажу. Старые ФС поддерживали sparse-files. Это не архивация
а просто логическая аллокация файлов большого размера при том что они физически
не занимают места....
Это было в Симпсонах все есть в NTFS.
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659635
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чел - фанат пингвина. Я так думаю.
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659642
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧел - фанат пингвина. Я так думаю.Так себе фанат, не знает, что btrfs никогда не рекомендовалась для production и уже deprecated и будет удалена из промлинуксов.
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659659
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧел - фанат пингвина.
Ну с кем не бывает :)

Другое дело, что топик к C++ не имеет никакого отношения.
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659666
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZ,

Он пришел поделится идеей. Тут сложно классифицировать. Пусть сам расскажет о теме C++.
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39659999
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonДля этого не обязательно форматировать устройство под btrfs. Библиотека zlib портирована на все языки и ты мог читать текстовые файлы не доставая их из архива.

Я, кстати, обдумывал вопрос использовать zip- архивирование "на лету". Но, к сожалению, в Qt нет работы с zip- архивами, поэтому решение получается не кросплатформенное. При использовании btrfs оно конечно тоже не кроссплатформенное, но получается "на халяву", поэтому "карман не тянет".
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39660012
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLНо, к сожалению, в Qt нет работы с zip- архивами, поэтому решение получается не кросплатформенное.
У тебя - странное понимание кроссплатформенности.
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39660086
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLmaytonДля этого не обязательно форматировать устройство под btrfs. Библиотека zlib портирована на все языки и ты мог читать текстовые файлы не доставая их из архива.

Я, кстати, обдумывал вопрос использовать zip- архивирование "на лету". Но, к сожалению, в Qt нет работы с zip- архивами, поэтому решение получается не кросплатформенное. При использовании btrfs оно конечно тоже не кроссплатформенное, но получается "на халяву", поэтому "карман не тянет".Какое отношение QT имеет к файлам, сжатым алгоритмом ZIP? Если, по какой-то причине, религия не позволяет использовать функции библиотеки zlib, что мешает дергать 7-zip утилиту CLI для всех своих хотелок? Вполне возможно, что на официальном сайте 7-zip есть библиотека и описание её API.
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39660104
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devВполне возможноТолько не "вполне возможно", а LZMA SDK - штатная загрузка с дремучих времён.
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39660109
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда, после 20+ лет разработки, с легкой подачи, zlib вдруг перестала быть кроссплатформенной =)
...
Рейтинг: 0 / 0
Ускорение чтение с диска с помощью BtrFS
    #39660124
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он имел в виду - кросс-Qt шный.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ускорение чтение с диска с помощью BtrFS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]